Bluetooth обнаруживает одно и то же устройство 10 раз - PullRequest
0 голосов
/ 21 мая 2018

Я работаю над приложением Bluetooth со студией Android.Сегодня у меня странная проблема.У меня есть 3 устройства Bluetooth, смартфон, планшет и другое устройство, но нас это не волнует.

Я запускаю одно и то же приложение на обоих устройствах, но смартфон работает на Android 8.1 (API27) и планшет на Android 4.0.4 (API 15).На смартфоне приложение работает хорошо.Когда я сканирую близлежащие устройства, я получаю 4 разных устройства.

Но есть проблема.На планшете, когда я сканирую близлежащие устройства, я почти в 10 раз обнаружил каждое устройство, обнаруженное моим смартфоном.Я действительно не знаю, почему оба устройства не обнаруживают как друг друга.Возможно, причиной этой ошибки является версия Android.

 private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) { // discover devices
            Scanned_devices = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            scanned_deviceName = Scanned_devices.getName();
            scanned_macAddress = Scanned_devices.getAddress();


            mDeviceList.add(scanned_deviceName + "\n" + scanned_macAddress);
            Log.i("BT", scanned_deviceName + "\n" + scanned_macAddress);


            Set<BluetoothDevice> pairedDevices  = blueAdapter.getBondedDevices();
            if (pairedDevices.size() > 0) {
                for (BluetoothDevice device : pairedDevices) {
                    try {
                        if (scanned_deviceName.equals(device.getName()) || scanned_macAddress.equals(device.getAddress())) {
                            Toast.makeText(getApplicationContext(), "Already Paired", Toast.LENGTH_LONG).show();
                            mDeviceList.remove(scanned_deviceName + "\n" + scanned_macAddress);
                        } //else {
                            //mDeviceList.add(scanned_deviceName + "\n" + scanned_macAddress);
                            //Log.i("BT", scanned_deviceName + "\n" + scanned_macAddress);
                        //}
                    }catch(Exception e)
                    {
                        Log.d("tag", "not working");
                        Toast.makeText(getApplicationContext(), "not working..", Toast.LENGTH_LONG).show();
                    }
                }
            }

            Scanned_devices_ListView.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, mDeviceList));
        }
    }
};

1 Ответ

0 голосов
/ 21 мая 2018

После многих попыток определить, существует ли уже устройство в моем ArrayList, я попробовал этот код:

if (!mDeviceList.contains(scanned_deviceName + "\n" + scanned_macAddress))
            {
                mDeviceList.add(scanned_deviceName + "\n" + scanned_macAddress);
                Log.i("BT", scanned_deviceName + "\n" + scanned_macAddress);
            }

Это проверит, содержит ли Array эту строку: DeviceName DeviceMac@

Если условие истинно, строка добавляется в ArrayList.

Если она ложна (есть другая строка с таким же содержимым в ArrayList), строка не добавляется в ArrayList.

...