Поиск Android Bluetooth-сопряженных устройств - PullRequest
4 голосов
/ 26 августа 2011

Я пытаюсь создать кнопку с изображением, которая при нажатии предоставляет пользователям список подключенных Bluetooth-устройств для подключения.

Однако я получаю «Set не может быть разрешен как переменная» в точке ## 1, и "mArrayAdapber не может быть решен" в точке ## 2 (## 1 и ## 2 не являются частью кода ...)

Я использовал код с сайта Android, но, находясь в темноте, я оказываюсь в темноте.

Буду признателен за руководство ...

// Поиск

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());
            }
        }                                                                           
    }                       
});

Ответы [ 3 ]

4 голосов
/ 26 августа 2011

Для 1) Ну, если вы еще этого не сделали, добавьте

> import java.util.Set;

в ваших заявлениях на импорт. Это разрешит ошибку «Set».

Для 2) Объявить и инициализировать

mArrayAdapter

Например, в своей деятельности выполните:

private ArrayAdapter<String> mArrayAdapter;

и затем onCreate:

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

, который затем должен быть добавлен в ListView

// Найти и настроить ListView для вновь обнаруженных устройств

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

 newDevicesListView.setOnItemClickListener(mDeviceClickListener);

См. Пример Bluetooth-чата из примеров Android. Это должно помочь вам начать работу с Bluetooth API


Обновление комментария:

Если вы внимательно посмотрите на файл BluetoothChat.java в примере с BT, вы увидите это

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();
            }
        }
    }

Смотрите эту строку:

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

Эта функция подключается к устройству Bluetooth. В первый раз он попросит вас выполнить сопряжение автоматически. После сопряжения в следующий раз он автоматически подключится к устройству Bluetooth.

3 голосов
/ 21 декабря 2011

Привет, Вы также можете попробовать этот код, если вы только что получили Набор связанных устройств.

 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 
0 голосов
/ 26 августа 2011

Просто удалите ##1 и ##2 соответственно из ##1Set<BluetoothDevice> и ##2mArrayAdapter в вашем коде. Я думаю, что вы просто скопировать / вставить из другого источника и не обращать на это внимание. Это не является частью исходного кода. Он просто используется для целей списка номеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...