Я делаю проект, который постоянно дает мне RSSI ранее сопряженного устройства.Я не получаю непрерывных результатов - PullRequest
0 голосов
/ 27 сентября 2018

Предполагается, что проект будет постоянно давать мне RSSI устройства, MAC-адрес которого уже известен.Я получаю RSSI около 2-3 раз, а потом ничего.Несмотря на то, что я тестирую это устройство на телефоне Android, я могу обойти ограничения батареи и т. Д., Которые Google бросает на меня.Целевым устройством этого проекта будет устройство Android M. с рутом.

Это мой код:

 private final BroadcastReceiver broadcastReceiver=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);
                String deviceName=device.getName();
                String deviceHardwareAddress=device.getAddress();
                int rssi=intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);
                if(deviceHardwareAddress.equals(MAC)){
                    deviceFound=true;
                    bluetoothAdapter.cancelDiscovery();
                    Log.i("broadcastReceiver" , "device " + deviceName);
                    Log.i("broadcastReceiver" , "hard"  + deviceHardwareAddress);
                    Log.i("broadcastReceiver","Rssi "+rssi);
                    Log.i("broadcastReceiver","Paired Id "+MAC );
                    tv.setText(deviceName+"     "+rssi);
                    stringArrayList.add(String.valueOf(rssi));
                    arrayAdapter.notifyDataSetChanged();
                    deviceFound=false;
                    bluetoothAdapter.startDiscovery();
                }
                if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){
                    if(deviceFound==false){
                        bluetoothAdapter.startDiscovery();
                    }
                }
            }

        }
    };

1 Ответ

0 голосов
/ 27 сентября 2018

Решено!

Работает просто разделение BroadcastReceiver на 2 части.Пожалуйста, не копируйте этот ответ, не понимая, что происходит.Этот код разряжает много батареи.Мой проект позволяет это.Это будет что-то вроде непрерывного источника питания.И это работает только в некоторых условиях.Ура!

  private final BroadcastReceiver broadcastReceiver1=new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action=intent.getAction();
            if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){
                if(deviceFound==false) {
                    bluetoothAdapter.cancelDiscovery();
                    bluetoothAdapter.startDiscovery();
                }
            };
        }
    };
private final BroadcastReceiver broadcastReceiver=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);
                String deviceName=device.getName();
                String deviceHardwareAddress=device.getAddress();
                int rssi=intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);
                if(deviceHardwareAddress.equals(MAC)){
                    deviceFound=true;
                    bluetoothAdapter.cancelDiscovery();
                    Log.i("broadcastReceiver" , "device " + deviceName);
                    Log.i("broadcastReceiver" , "hard"  + deviceHardwareAddress);
                    Log.i("broadcastReceiver","Rssi "+rssi);
                    Log.i("broadcastReceiver","Paired Id "+MAC );
                    tv.setText(deviceName+"     "+rssi);
                    deviceFound=false;
                    bluetoothAdapter.startDiscovery();
                }
            }

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