简体   繁体   中英

Finding Android Bluetooth Paired Devices

I'm trying to create an image button that, when pressed, presents the users a list of Paired Bluetooth devices to connect to.

However, I get "Set cannot be resolved as a variable" at point ##1, and "mArrayAdapber cannot be resolved" at point ##2 (##1 and ##2 are not part of the code...)

I used the code from the Android site, but being in the dark, I find myself in the dark.

I'd appreciate some guidance...

//Search

ImageButton bSearch = (ImageButton) findViewById(R.id.Search);
bSearch.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {                        
        ##1Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
        // If there are paired devices
        if (pairedDevices.size() > 0) {
            // Loop through paired devices
            for (BluetoothDevice device : pairedDevices) {
                // Add the name and address to an array adapter to show in a ListView
                ##2mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
            }
        }                                                                           
    }                       
});

For 1) Well if you haven't done so , add

> import java.util.Set;

in your import statements . This will resolve "Set" error.

For 2) Declare and initialize

mArrayAdapter

For example in your Activity do :

private ArrayAdapter<String> mArrayAdapter;

and then on onCreate:

 mArrayAdapter= new ArrayAdapter<String>(this, <your layout file>);

which should then be added to a ListView

// Find and set up the ListView for newly discovered devices

   ListView newDevicesListView = (ListView)
 findViewById(R.id.<layout_file>);
         newDevicesListView.setAdapter(mArrayAdapter);

 newDevicesListView.setOnItemClickListener(mDeviceClickListener);

Refer to Bluetooth Chat example from Android examples. It should help you get going with the Bluetooth api's


Update on comment :

If you look closely on BluetoothChat.java file in BT example, you'll see this

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(D) Log.d(TAG, "onActivityResult " + resultCode);
        switch (requestCode) {
        case REQUEST_CONNECT_DEVICE:
            // When DeviceListActivity returns with a device to connect
            if (resultCode == Activity.RESULT_OK) {
                // 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);
            }
            break;
        case REQUEST_ENABLE_BT:
            // When the request to enable Bluetooth returns
            if (resultCode == Activity.RESULT_OK) {
                // Bluetooth is now enabled, so set up a chat session
                setupChat();
            } else {
                // User did not enable Bluetooth or an error occured
                Log.d(TAG, "BT not enabled");
                Toast.makeText(this, R.string.bt_not_enabled_leaving, Toast.LENGTH_SHORT).show();
                finish();
            }
        }
    }

Watch this line :

 // Attempt to connect to the device
 mChatService.connect(device);

This function connects to bluetooth device. First time it'll ask you to pair it automatically. Once paired, next time it'll auto connect to the bluetooth device.

Hi, You can also try this code where you just have get the Set of bonded devices.

 private ArrayAdapter<String> bondedAdapter = null;
    private ListView listViewPairedDevices = null;

@Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        try {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    listViewPairedDevices = (ListView) findViewById(R.id.listViewPairedDevices);
    bondedAdapter = new ArrayAdapter<String>(this, R.layout.lyt_scanlist_textview);

    Set<BluetoothDevice> bondedSet = bluetoothAdapter.getBondedDevices();
                Log.v(BluetoothDemoActivity.LOG, "BluetoothDemo : bondedSet: "+bondedSet);

                int count = 0;
                if(bondedSet.size() > 0){
                    for(BluetoothDevice device : bondedSet){
                        textViewPairedDevice.setVisibility(View.VISIBLE);
                        bondedAdapter.add(device.getName()+"\n"+device.getAddress());
                        Log.v(BluetoothDemoActivity.LOG, " count = "+count++);
                    }
                }else{
                    bondedAdapter.add("No Devices");
                }

    listViewPairedDevices.setAdapter(bondedAdapter);
} catch (Exception e) {
            // TODO Auto-generated catch block
            Log.e(BluetoothDemoActivity.LOG, e.toString(),e.fillInStackTrace());
        }
    }//onStart ends 

Just remove ##1 and ##2 respectively from ##1Set<BluetoothDevice> and ##2mArrayAdapter on your code. I think you'd just copy/paste from another source and did not pay attention to. That is not part of the original code. It just used for list number purposes.

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