import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
-import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
-import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import org.altusmetrum.AltosDroid.R;
*/
public class AltosDroid extends Activity {
// Debugging
- private static final String TAG = "BluetoothChat";
+ private static final String TAG = "AltosDroid";
private static final boolean D = true;
- private static final AltosLine q = new AltosLine();
-
// Message types sent from the BluetoothChatService Handler
public static final int MESSAGE_STATE_CHANGE = 1;
public static final int MESSAGE_READ = 2;
public static final String TOAST = "toast";
// Intent request codes
- private static final int REQUEST_CONNECT_DEVICE_SECURE = 1;
- private static final int REQUEST_CONNECT_DEVICE_INSECURE = 2;
- private static final int REQUEST_ENABLE_BT = 3;
+ private static final int REQUEST_CONNECT_DEVICE = 1;
+ private static final int REQUEST_ENABLE_BT = 2;
// Layout Views
private TextView mTitle;
- private ListView mConversationView;
+ private TextView mSerialView;
private EditText mOutEditText;
private Button mSendButton;
// Name of the connected device
private String mConnectedDeviceName = null;
- // Array adapter for the conversation thread
- private ArrayAdapter<String> mConversationArrayAdapter;
// String buffer for outgoing messages
private StringBuffer mOutStringBuffer;
// Local Bluetooth adapter
}
}
+ @Override
+ public synchronized void onPause() {
+ super.onPause();
+ if(D) Log.e(TAG, "- ON PAUSE -");
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ if(D) Log.e(TAG, "-- ON STOP --");
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ // Stop the Bluetooth chat services
+ if (mChatService != null) mChatService.stop();
+ if(D) Log.e(TAG, "--- ON DESTROY ---");
+ }
+
+
+
private void setupChat() {
Log.d(TAG, "setupChat()");
- // Initialize the array adapter for the conversation thread
- mConversationArrayAdapter = new ArrayAdapter<String>(this, R.layout.message);
- mConversationView = (ListView) findViewById(R.id.in);
- mConversationView.setAdapter(mConversationArrayAdapter);
+ mSerialView = (TextView) findViewById(R.id.in);
+ mSerialView.setMovementMethod(new ScrollingMovementMethod());
+ mSerialView.setClickable(false);
+ mSerialView.setLongClickable(false);
// Initialize the compose field with a listener for the return key
mOutEditText = (EditText) findViewById(R.id.edit_text_out);
mOutStringBuffer = new StringBuffer("");
}
- @Override
- public synchronized void onPause() {
- super.onPause();
- if(D) Log.e(TAG, "- ON PAUSE -");
- }
-
- @Override
- public void onStop() {
- super.onStop();
- if(D) Log.e(TAG, "-- ON STOP --");
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- // Stop the Bluetooth chat services
- if (mChatService != null) mChatService.stop();
- if(D) Log.e(TAG, "--- ON DESTROY ---");
- }
-
- private void ensureDiscoverable() {
- if(D) Log.d(TAG, "ensure discoverable");
- if (mBluetoothAdapter.getScanMode() !=
- BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
- Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
- discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
- startActivity(discoverableIntent);
- }
- }
-
/**
* Sends a message.
* @param message A string of text to send.
case BluetoothChatService.STATE_CONNECTED:
mTitle.setText(R.string.title_connected_to);
mTitle.append(mConnectedDeviceName);
- mConversationArrayAdapter.clear();
+ mSerialView.setText("");
break;
case BluetoothChatService.STATE_CONNECTING:
mTitle.setText(R.string.title_connecting);
byte[] writeBuf = (byte[]) msg.obj;
// construct a string from the buffer
String writeMessage = new String(writeBuf);
- mConversationArrayAdapter.add("Me: " + writeMessage);
+ mSerialView.append(writeMessage + '\n');
break;
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf, 0, msg.arg1);
- mConversationArrayAdapter.add(mConnectedDeviceName+": " + readMessage);
+ mSerialView.append(readMessage);
break;
case MESSAGE_DEVICE_NAME:
// save the connected device's name
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(D) Log.d(TAG, "onActivityResult " + resultCode);
switch (requestCode) {
- case REQUEST_CONNECT_DEVICE_SECURE:
- // When DeviceListActivity returns with a device to connect
+ case REQUEST_CONNECT_DEVICE:
+ // When DeviceListActivity returns with a device to connect to
if (resultCode == Activity.RESULT_OK) {
- connectDevice(data, true);
- }
- break;
- case REQUEST_CONNECT_DEVICE_INSECURE:
- // When DeviceListActivity returns with a device to connect
- if (resultCode == Activity.RESULT_OK) {
- connectDevice(data, false);
+ connectDevice(data);
}
break;
case REQUEST_ENABLE_BT:
}
}
- private void connectDevice(Intent data, boolean secure) {
+ private void connectDevice(Intent data) {
// Get the device MAC address
String address = data.getExtras()
.getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
// Get the BLuetoothDevice object
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
// Attempt to connect to the device
- mChatService.connect(device, secure);
+ mChatService.connect(device);
}
@Override
serverIntent = new Intent(this, TelemetryServiceActivities.Binding.class);
startActivity(serverIntent);
return true;
- case R.id.secure_connect_scan:
- // Launch the DeviceListActivity to see devices and do scan
- serverIntent = new Intent(this, DeviceListActivity.class);
- startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE_SECURE);
- return true;
- case R.id.insecure_connect_scan:
+ case R.id.connect_scan:
// Launch the DeviceListActivity to see devices and do scan
serverIntent = new Intent(this, DeviceListActivity.class);
- startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE_INSECURE);
- return true;
- case R.id.discoverable:
- // Ensure this device is discoverable by others
- ensureDiscoverable();
+ startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE);
return true;
}
return false;