简体   繁体   中英

Android Bluetooth listing and pairing request send

i want to search and listing bluetooth devices in android, my program now able to list all the active devices but not able to send pairing request to the other devices .I want to implement this onItemClick of list element.And also if bluetooth is not enabled of my device then show a permission to active device,if i go for yes then ok,but if i go for no then permission show again until i press yes..how can i do this?plz help with code..here is my code..

public class Main extends Activity {  
    TextView out;
      private static final int REQUEST_ENABLE_BT = 1;
      private BluetoothAdapter btAdapter; 
      private ArrayList<BluetoothDevice> btDeviceList = new ArrayList<BluetoothDevice>();
      private ArrayList<String> mylist= new ArrayList<String>();
      private ListView lv;
      private Button btn;

      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      }

      public void search(View view)
      {
          //Register the BroadcastReceiver
            IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
            filter.addAction(BluetoothDevice.ACTION_UUID);
            filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
            filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
            registerReceiver(ActionFoundReceiver, filter); // Don't forget to unregister during onDestroy

            // Getting the Bluetooth adapter
            btAdapter = BluetoothAdapter.getDefaultAdapter();
            Toast.makeText(getApplicationContext(),"\nAdapter: " + btAdapter,5000).show();

            CheckBTState();
      }

      private void setDeviceList(ArrayList<String> list) {
          lv = (ListView) findViewById(R.id.listView);
            ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
            lv.setAdapter(adapter);

    }

    /* This routine is called when an activity completes.*/
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_ENABLE_BT) {
          CheckBTState();
        }
      }

      @Override
      protected void onDestroy() {
        super.onDestroy();
        if (btAdapter != null) {
          btAdapter.cancelDiscovery();
        }
        unregisterReceiver(ActionFoundReceiver);
      }

      private void CheckBTState() {
        // Check for Bluetooth support and then check to make sure it is turned on
        // If it isn't request to turn it on
        // List paired devices
        // Emulator doesn't support Bluetooth and will return null
        if(btAdapter==null) { 
          Toast.makeText(getApplicationContext(),"\nBluetooth NOT supported. Aborting.",5000).show();
          return;
        } else {
          if (btAdapter.isEnabled()) {
            Toast.makeText(getApplicationContext(),"\nBluetooth is enabled...",5000).show();

            // Starting the device discovery
            btAdapter.startDiscovery();
          } else {
            Intent enableBtIntent = new Intent(btAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
          }
        }
      }

      private final BroadcastReceiver ActionFoundReceiver = new BroadcastReceiver(){

        @Override
        public void onReceive(Context context, Intent intent) {
         String action = intent.getAction();
         if(BluetoothDevice.ACTION_FOUND.equals(action)) {
           BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
           Toast.makeText(getApplicationContext(),"\n  Device: " + device.getName() + ", " + device,5000).show();
           mylist.add(device.getName());
           setDeviceList(mylist);
         } else {
           if(BluetoothDevice.ACTION_UUID.equals(action)) {
             BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
             Parcelable[] uuidExtra = intent.getParcelableArrayExtra(BluetoothDevice.EXTRA_UUID);
             for (int i=0; i<uuidExtra.length; i++) {
               Toast.makeText(getApplicationContext(),"\n  Device: " + device.getName() + ", " + device + ", Service: " + uuidExtra[i].toString(),5000).show();
             }
           } else {
             if(BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
               Toast.makeText(getApplicationContext(),"\nDiscovery Started...",5000).show();
             } else {
               if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
                 Toast.makeText(getApplicationContext(),"\nDiscovery Finished",5000).show();
                 Iterator<BluetoothDevice> itr = btDeviceList.iterator();
                 while (itr.hasNext()) {
                   // Get Services for paired devices
                   BluetoothDevice device = itr.next();
                   Toast.makeText(getApplicationContext(),"\nGetting Services for " + device.getName() + ", " + device,5000).show();
                   if(!device.fetchUuidsWithSdp()) {
                     Toast.makeText(getApplicationContext(),"\nSDP Failed for " + device.getName(),5000).show();
                   }

                 }
               }
             }
           }
          }
        }
      };
}  

As Bluetooth is working on Serial Ports and to communicate between two device using serial port you need to UUID (Universally Unique Identifier)

as you had not mentioned any UUID so you can not communicate from bluetooth.

According to your requirement there is a simple and best example for Bluetooth Chat with secure and non-Secure devices available in Android-SDK

Bluetooth-Chat Source Code

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM