package foo.bt;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class Main extends Activity {
protected static final String TAG = "bluetoothdemo";
int REQUEST_ENABLE_BT = 1;
EditText main;
private ArrayAdapter<String> mNewDevicesArrayAdapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
main = (EditText) findViewById(R.id.mainTextArea);
mNewDevicesArrayAdapter = new ArrayAdapter<String>(this, R.string.app_name);
// Hook up the Discover button to its handler
Button discover = (Button) findViewById(R.id.discoverButton);
discover.setOnClickListener(discoverButtonHandler);
// Hook up the ArrayAdapter to the ListView
ListView lv = (ListView) findViewById(R.id.pairedBtDevices);
lv.setAdapter(mNewDevicesArrayAdapter);
BluetoothAdapter BT = BluetoothAdapter.getDefaultAdapter();
if (BT == null) {
String noDevMsg = "This device does not appear to have a Bluetooth adapter, sorry";
main.setText(noDevMsg);
Toast.makeText(this, noDevMsg, Toast.LENGTH_LONG).show();
return;
}
if (!BT.isEnabled()) {
// Ask user's permission to switch the Bluetooth adapter On.
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode==REQUEST_ENABLE_BT) {
if (resultCode==Activity.RESULT_OK) {
BluetoothAdapter BT = BluetoothAdapter.getDefaultAdapter();
String address = BT.getAddress();
String name = BT.getName();
String connectedMsg = "BT is on; your device is " + name + " : " + address;
main.setText(connectedMsg);
Toast.makeText(this, connectedMsg, Toast.LENGTH_LONG).show();
Button discoverButton = (Button) findViewById(R.id.discoverButton);
discoverButton.setOnClickListener(discoverButtonHandler);
} else {
Toast.makeText(this, "Failed to enable Bluetooth adapter!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(this, "Unknown RequestCode " + requestCode, Toast.LENGTH_LONG).show();
}
}
/** When the user clicks the Discover button, get the list of paired devices
*/
OnClickListener discoverButtonHandler = new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "in onClick(" + v + ")");
// IntentFilter for found devices
IntentFilter foundFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
// Broadcast receiver for any matching filter
Main.this.registerReceiver(mReceiver, foundFilter);
IntentFilter doneFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
Main.this.registerReceiver(mReceiver, doneFilter);
}
};
protected void onDestroy() {
unregisterReceiver(mReceiver);
super.onDestroy();
}
/** Receiver for the BlueTooth Discovery Intent; put the paired devices
* into the viewable list.
*/
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "in onReceive, action = " + action);
if (BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice btDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(btDevice.getBondState() != BluetoothDevice.BOND_BONDED){
// XXX use a better type and a Layout in the visible list
mNewDevicesArrayAdapter.add(btDevice.getName()+"\n"+btDevice.getAddress());
}
}
else
if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){
setProgressBarIndeterminateVisibility(false);
setTitle(R.string.select_device);
if (mNewDevicesArrayAdapter.getCount() == 0){
String noDevice = getResources().getText(R.string.none_paired).toString();
mNewDevicesArrayAdapter.add(noDevice);
}
}
}
};
}