Added all remaining gists.
This commit is contained in:
181
Handler.java/Handler.java
Normal file
181
Handler.java/Handler.java
Normal file
@@ -0,0 +1,181 @@
|
||||
|
||||
/**
|
||||
* Receive messages from the BTCommunicator
|
||||
*/
|
||||
final Handler myHandler = new Handler() {
|
||||
@Override
|
||||
public void handleMessage(Message myMessage) {
|
||||
switch (myMessage.getData().getInt("message")) {
|
||||
case BTCommunicator.DISPLAY_TOAST:
|
||||
showToast(myMessage.getData().getString("toastText"), Toast.LENGTH_SHORT);
|
||||
break;
|
||||
case BTCommunicator.STATE_CONNECTED:
|
||||
connected = true;
|
||||
programList = new ArrayList<String>();
|
||||
connectingProgressDialog.dismiss();
|
||||
updateButtonsAndMenu();
|
||||
sendBTCmessage(BTCommunicator.NO_DELAY, BTCommunicator.GET_FIRMWARE_VERSION, 0, 0);
|
||||
break;
|
||||
case BTCommunicator.MOTOR_STATE:
|
||||
|
||||
if (myBTCommunicator != null) {
|
||||
byte[] motorMessage = myBTCommunicator.getReturnMessage();
|
||||
int position = byteToInt(motorMessage[21]) + (byteToInt(motorMessage[22]) << 8) + (byteToInt(motorMessage[23]) << 16)
|
||||
+ (byteToInt(motorMessage[24]) << 24);
|
||||
showToast(getResources().getString(R.string.current_position) + position, Toast.LENGTH_SHORT);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case BTCommunicator.STATE_CONNECTERROR_PAIRING:
|
||||
connectingProgressDialog.dismiss();
|
||||
destroyBTCommunicator();
|
||||
break;
|
||||
|
||||
case BTCommunicator.STATE_CONNECTERROR:
|
||||
connectingProgressDialog.dismiss();
|
||||
case BTCommunicator.STATE_RECEIVEERROR:
|
||||
case BTCommunicator.STATE_SENDERROR:
|
||||
|
||||
destroyBTCommunicator();
|
||||
if (btErrorPending == false) {
|
||||
btErrorPending = true;
|
||||
// inform the user of the error with an AlertDialog
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(thisActivity);
|
||||
builder.setTitle(getResources().getString(R.string.bt_error_dialog_title))
|
||||
.setMessage(getResources().getString(R.string.bt_error_dialog_message)).setCancelable(false)
|
||||
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
btErrorPending = false;
|
||||
dialog.cancel();
|
||||
selectNXT();
|
||||
}
|
||||
});
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case BTCommunicator.FIRMWARE_VERSION:
|
||||
|
||||
if (myBTCommunicator != null) {
|
||||
byte[] firmwareMessage = myBTCommunicator.getReturnMessage();
|
||||
// check if we know the firmware
|
||||
boolean isLejosMindDroid = true;
|
||||
for (int pos=0; pos<4; pos++) {
|
||||
if (firmwareMessage[pos + 3] != LCPMessage.FIRMWARE_VERSION_LEJOSMINDDROID[pos]) {
|
||||
isLejosMindDroid = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isLejosMindDroid) {
|
||||
mRobotType = R.id.robot_type_4;
|
||||
setUpByType();
|
||||
}
|
||||
// afterwards we search for all files on the robot
|
||||
sendBTCmessage(BTCommunicator.NO_DELAY, BTCommunicator.FIND_FILES, 0, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case BTCommunicator.FIND_FILES:
|
||||
|
||||
if (myBTCommunicator != null) {
|
||||
byte[] fileMessage = myBTCommunicator.getReturnMessage();
|
||||
String fileName = new String(fileMessage, 4, 20);
|
||||
fileName = fileName.replaceAll("\0","");
|
||||
|
||||
if (mRobotType == R.id.robot_type_4 || fileName.endsWith(".nxj") || fileName.endsWith(".rxe")) {
|
||||
programList.add(fileName);
|
||||
}
|
||||
|
||||
// find next entry with appropriate handle,
|
||||
// limit number of programs (in case of error (endless loop))
|
||||
if (programList.size() <= MAX_PROGRAMS)
|
||||
sendBTCmessage(BTCommunicator.NO_DELAY, BTCommunicator.FIND_FILES,
|
||||
1, byteToInt(fileMessage[3]));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case BTCommunicator.PROGRAM_NAME:
|
||||
if (myBTCommunicator != null) {
|
||||
byte[] returnMessage = myBTCommunicator.getReturnMessage();
|
||||
startRXEprogram(returnMessage[2]);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case BTCommunicator.SAY_TEXT:
|
||||
if (myBTCommunicator != null) {
|
||||
byte[] textMessage = myBTCommunicator.getReturnMessage();
|
||||
// evaluate control byte
|
||||
byte controlByte = textMessage[2];
|
||||
// BIT7: Language
|
||||
if ((controlByte & 0x80) == 0x00)
|
||||
mTts.setLanguage(Locale.US);
|
||||
else
|
||||
mTts.setLanguage(Locale.getDefault());
|
||||
// BIT6: Pitch
|
||||
if ((controlByte & 0x40) == 0x00)
|
||||
mTts.setPitch(1.0f);
|
||||
else
|
||||
mTts.setPitch(0.75f);
|
||||
// BIT0-3: Speech Rate
|
||||
switch (controlByte & 0x0f) {
|
||||
case 0x01:
|
||||
mTts.setSpeechRate(1.5f);
|
||||
break;
|
||||
case 0x02:
|
||||
mTts.setSpeechRate(0.75f);
|
||||
break;
|
||||
|
||||
default: mTts.setSpeechRate(1.0f);
|
||||
break;
|
||||
}
|
||||
|
||||
String ttsText = new String(textMessage, 3, 19);
|
||||
ttsText = ttsText.replaceAll("\0","");
|
||||
showToast(ttsText, Toast.LENGTH_SHORT);
|
||||
mTts.speak(ttsText, TextToSpeech.QUEUE_FLUSH, null);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case BTCommunicator.VIBRATE_PHONE:
|
||||
if (myBTCommunicator != null) {
|
||||
byte[] vibrateMessage = myBTCommunicator.getReturnMessage();
|
||||
Vibrator myVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
|
||||
myVibrator.vibrate(vibrateMessage[2]*10);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/* NUEVO */
|
||||
case BTCommunicator.UPDATE_SENSOR:
|
||||
/*String msg2str = "";
|
||||
Log.d("MINDDroidCV.java", "UPDATE SENSORS HANDLER");*/
|
||||
if(myBTCommunicator != null) {
|
||||
byte[] sensor_message = myBTCommunicator.getReturnMessage();
|
||||
if(sensor_message[3] == 0){
|
||||
// Sensor de luz.
|
||||
lightSensor = (sensor_message[9] << 8) + sensor_message[8];
|
||||
/*for(int i = 0; i < sensor_message.length; ++i)
|
||||
msg2str += String.format("%02x ", sensor_message[i]);
|
||||
msg2str = String.format("%s :: VALUE %d", msg2str, lightSensor);*/
|
||||
}else if(sensor_message[3] == 1){
|
||||
// Sensor de tacto.
|
||||
touchSensor = (sensor_message[11] << 8) + sensor_message[10];
|
||||
/*for(int i = 0; i < sensor_message.length; ++i)
|
||||
msg2str += String.format("%02x", sensor_message[i]);
|
||||
msg2str = String.format("%s :: VALUE %d", msg2str, touchSensor);*/
|
||||
}
|
||||
}
|
||||
/*Log.d("MINDDroidCV.java", msg2str);*/
|
||||
|
||||
break;
|
||||
/* NUEVO */
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user