altosdroid: Add new "TelemetryReader" class to handle Telemetry
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroid.java
index 743d20c6767dc2fc52ad74e811b520f7c25d8d68..cf982eac964b13fcc4bc0049b7db97a0a34c0d10 100644 (file)
@@ -31,6 +31,8 @@ import android.os.Handler;
 import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TextToSpeech.OnInitListener;
 import android.text.method.ScrollingMovementMethod;
 import android.util.Log;
 //import android.view.KeyEvent;
@@ -58,12 +60,9 @@ public class AltosDroid extends Activity {
        // Message types sent from the TelemetryService Handler
        public static final int MSG_STATE_CHANGE    = 1;
        public static final int MSG_DEVNAME         = 2;
-       public static final int MSG_INCOMING_TELEM  = 3;
-       public static final int MSG_TOAST           = 4;
-
-       // Key names received from the TelemetryService Handler
-       public static final String KEY_DEVNAME = "key_devname";
-       public static final String KEY_TOAST   = "key_toast";
+       public static final int MSG_TOAST           = 3;
+       public static final int MSG_DEVCONFIG       = 4;
+       public static final int MSG_TELEMETRY       = 5;
 
        // Intent request codes
        private static final int REQUEST_CONNECT_DEVICE = 1;
@@ -84,6 +83,8 @@ public class AltosDroid extends Activity {
        // Local Bluetooth adapter
        private BluetoothAdapter mBluetoothAdapter = null;
 
+       private TextToSpeech tts;
+       private boolean tts_enabled = false;
 
        // The Handler that gets information back from the Telemetry Service
        static class IncomingHandler extends Handler {
@@ -111,22 +112,24 @@ public class AltosDroid extends Activity {
                                        break;
                                }
                                break;
-                       case MSG_INCOMING_TELEM:
-                               byte[] buf = (byte[]) msg.obj;
+                       case MSG_DEVCONFIG:
+                       case MSG_TELEMETRY:
+                               //byte[] buf = (byte[]) msg.obj;
                                // construct a string from the buffer
-                               String telem = new String(buf);
-                               ad.mSerialView.append(telem);
+                               //String telem = new String(buf);
+                               //ad.mSerialView.append(telem);
                                break;
                        case MSG_DEVNAME:
                                // save the connected device's name
-                               ad.mConnectedDeviceName = msg.getData().getString(KEY_DEVNAME);
-                               Toast.makeText(ad.getApplicationContext(), "Connected to "
+                               ad.mConnectedDeviceName = (String) msg.obj;
+                               if (ad.mConnectedDeviceName != null)
+                                       Toast.makeText(ad.getApplicationContext(), "Connected to "
                                                        + ad.mConnectedDeviceName, Toast.LENGTH_SHORT).show();
                                break;
                        case MSG_TOAST:
                                Toast.makeText(
                                                ad.getApplicationContext(),
-                                               msg.getData().getString(KEY_TOAST),
+                                               (String) msg.obj,
                                                Toast.LENGTH_SHORT).show();
                                break;
                        }
@@ -183,6 +186,14 @@ public class AltosDroid extends Activity {
                        return;
                }
 
+               // Enable Text to Speech
+               tts = new TextToSpeech(this, new OnInitListener() {
+                       public void onInit(int status) {
+                               if (status == TextToSpeech.SUCCESS) tts_enabled = true;
+                               if (tts_enabled) tts.speak("AltosDroid ready", TextToSpeech.QUEUE_ADD, null );
+                       }
+               });
+
                // Start Telemetry Service
                startService(new Intent(AltosDroid.this, TelemetryService.class));
 
@@ -237,6 +248,8 @@ public class AltosDroid extends Activity {
 
                doUnbindService();
 
+               if (tts != null) tts.shutdown();
+
                if(D) Log.e(TAG, "--- ON DESTROY ---");
        }
 
@@ -330,6 +343,7 @@ public class AltosDroid extends Activity {
                                Toast.makeText(this, R.string.bt_not_enabled, Toast.LENGTH_SHORT).show();
                                finish();
                        }
+                       break;
                }
        }