Back to project page Adafruit_Android_BLE_UART.
The source code is released under:
MIT License
If you think the Android project Adafruit_Android_BLE_UART listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.adafruit.bleuart; //from www . j a v a 2 s.co m import android.app.Activity; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGattCharacteristic; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; import java.lang.Thread; public class MainActivity extends Activity implements BluetoothLeUart.Callback { // UI elements private TextView messages; private EditText input; private Button send; private CheckBox newline; // Bluetooth LE UART instance. This is defined in BluetoothLeUart.java. private BluetoothLeUart uart; // Write some text to the messages text view. // Care is taken to do this on the main UI thread so writeLine can be called from any thread // (like the BTLE callback). private void writeLine(final CharSequence text) { runOnUiThread(new Runnable() { @Override public void run() { messages.append(text); messages.append("\n"); } }); } // Handler for mouse click on the send button. public void sendClick(View view) { StringBuilder stringBuilder = new StringBuilder(); String message = input.getText().toString(); // We can only send 20 bytes per packet, so break longer messages // up into 20 byte payloads int len = message.length(); int pos = 0; while(len != 0) { stringBuilder.setLength(0); if (len>=20) { stringBuilder.append(message.toCharArray(), pos, 20 ); len-=20; pos+=20; } else { stringBuilder.append(message.toCharArray(), pos, len); len = 0; } uart.send(stringBuilder.toString()); } // Terminate with a newline character if requests newline = (CheckBox) findViewById(R.id.newline); if (newline.isChecked()) { stringBuilder.setLength(0); stringBuilder.append("\n"); uart.send(stringBuilder.toString()); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Grab references to UI elements. messages = (TextView) findViewById(R.id.messages); input = (EditText) findViewById(R.id.input); // Initialize UART. uart = new BluetoothLeUart(getApplicationContext()); // Disable the send button until we're connected. send = (Button)findViewById(R.id.send); send.setClickable(false); send.setEnabled(false); // Enable auto-scroll in the TextView messages.setMovementMethod(new ScrollingMovementMethod()); } // OnCreate, called once to initialize the activity. @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } // OnResume, called right before UI is displayed. Connect to the bluetooth device. @Override protected void onResume() { super.onResume(); writeLine("Scanning for devices ..."); uart.registerCallback(this); uart.connectFirstAvailable(); } // OnStop, called right before the activity loses foreground focus. Close the BTLE connection. @Override protected void onStop() { super.onStop(); uart.unregisterCallback(this); uart.disconnect(); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } // UART Callback event handlers. @Override public void onConnected(BluetoothLeUart uart) { // Called when UART device is connected and ready to send/receive data. writeLine("Connected!"); // Enable the send button runOnUiThread(new Runnable() { @Override public void run() { send = (Button)findViewById(R.id.send); send.setClickable(true); send.setEnabled(true); } }); } @Override public void onConnectFailed(BluetoothLeUart uart) { // Called when some error occured which prevented UART connection from completing. writeLine("Error connecting to device!"); runOnUiThread(new Runnable() { @Override public void run() { send = (Button)findViewById(R.id.send); send.setClickable(false); send.setEnabled(false); } }); } @Override public void onDisconnected(BluetoothLeUart uart) { // Called when the UART device disconnected. writeLine("Disconnected!"); // Disable the send button. runOnUiThread(new Runnable() { @Override public void run() { send = (Button)findViewById(R.id.send); send.setClickable(false); send.setEnabled(false); } }); } @Override public void onReceive(BluetoothLeUart uart, BluetoothGattCharacteristic rx) { // Called when data is received by the UART. writeLine("Received: " + rx.getStringValue(0)); } @Override public void onDeviceFound(BluetoothDevice device) { // Called when a UART device is discovered (after calling startScan). writeLine("Found device : " + device.getAddress()); writeLine("Waiting for a connection ..."); } @Override public void onDeviceInfoAvailable() { writeLine(uart.getDeviceInfo()); } }