0

Bluetooth Low Energy 信号を検出できるアプリを開発しようとしています。アダプターのおかげで、リストビューに表示されます。現時点では完全に機能していますが、スキャンでデバイスが見つかったときに、デバイスと rssi 値をリストのすべての要素と比較する onLeScan メソッドを実行したいと考えています。両方のパラメーターがリストの項目の 1 つと同じである場合、アダプターを呼び出して検出されたデバイスを追加しません。ただし、コードをコンパイルすると、BLE 信号は検出されますが、rssi 値は変化しません。

使用したコードは次のとおりです。

// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
    new BluetoothAdapter.LeScanCallback() {

        @Override
        public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    int size = leDeviceListAdapter.getCount();
                    for(int j = 0 ; j < size ; j++) {
                        BluetoothDevice devices = leDeviceListAdapter.getDevice(j);
                        Integer signal = leDeviceListAdapter.getRSSI(j);
                        if (devices!=device && signal!=rssi){
                            return;
                        }
                    }
                    leDeviceListAdapter.addDevice(device, rssi);
                    leDeviceListAdapter.notifyDataSetChanged();



                }
            });

        }

この問題を解決する方法を知っている人はいますか?助けてください!!!!それが必要な場合は、コード全体を配置します。

4

2 に答える 2

0

rssi 値は信号強度です。BluetoothDevice の一意の識別子ではありません。そのためには、Bluetooth アドレスを使用する必要があります。device.getAddress();

于 2014-04-24T14:23:06.783 に答える