- Android Bluetooth Discovery in a sequential method?
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // Get local Bluetooth adapter
- mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
- mSendButton = (Button) findViewById(R.id.button1);
- mSendButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- doDiscovery();
- }
- });
- }
- private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (BluetoothDevice.ACTION_FOUND.equals(action)) {
- // Get the BluetoothDevice object from the Intent
- BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
- Log.e("device_name", device.getName());
- Log.e("device_add", device.getAddress());
- numberOfDevice++;
- Found_Device = true;
- } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
- if(numberOfDevice == 0){
- Log.e("DISCOVERY", "No Device found");
- }
- Log.e("DISCOVERY", "Number of device :" + numberOfDevice);
- Discovery_Finish = true;
- }
- }
- };
- public void doDiscovery(){
- IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
- filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
- registerReceiver(mReceiver, filter);
- Discovery_Finish = false;
- Found_Device = false;
- long counter = 0;
- if (mBluetoothAdapter.isDiscovering()) {
- mBluetoothAdapter.cancelDiscovery();
- }
- mBluetoothAdapter.startDiscovery();
- while((Found_Device == false) || (Discovery_Finish == false)){
- counter++;
- if (counter >= 1000000){
- break;
- }
- }
- // Add a code to check the number of device
- unregisterReceiver(mReceiver);
- mBluetoothAdapter.cancelDiscovery();
- }