Как работает scanCallback для BluetoothDevices? - PullRequest
1 голос
/ 06 мая 2019

Я следую этому уроку. https://medium.com/@avigezerit/bluetooth-low-energy-on-android-22bc7310387a

Пытаясь понять LeScancallBacks

Я также следую документации и образцу устройств Bluetooth от Google

BluetoothAdapter.LeScanCallback scanCallback =
                new BluetoothAdapter.LeScanCallback() {};

  bluetoothAdapter.startLeScan(scanCallback);

        @Override
        public void onLeScan(final BluetoothDevice device, int rssi,
        byte[] scanRecord) {
            if(device.address == HR_SENSOR_ADDRESS){
                myDevice = device;
            }
        }

Мой код выдает мне следующую ошибку:

«Анонимный класс класса, производный от LeScanCallback» должен быть объявленный реферат или реализовать абстрактный метод 'onLeScan (BluetoothDevice, int, byte []) "в" LeScanCallback ""

Когда я сравниваю его с кодом из Google.

 private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
        @Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            String intentAction;
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                intentAction = ACTION_GATT_CONNECTED;
                mConnectionState = STATE_CONNECTED;
                broadcastUpdate(intentAction);
                Log.i(TAG, "Connected to GATT server.");
                // Attempts to discover services after successful connection.
                Log.i(TAG, "Attempting to start service discovery:" +
                        mBluetoothGatt.discoverServices());

            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                intentAction = ACTION_GATT_DISCONNECTED;
                mConnectionState = STATE_DISCONNECTED;
                Log.i(TAG, "Disconnected from GATT server.");
                broadcastUpdate(intentAction);
            }
        }

Это единственный другой Обратный звонок, который я могу найти, возможно ли, что кто-то может помочь? Я пытался запрограммировать этот проект один в течение некоторого времени.

1 Ответ

1 голос
/ 07 мая 2019

Когда вы определяете этот scanCallback объект, вам нужно добавить в требуемый метод, например, так:

    BluetoothAdapter.LeScanCallback scanCallback = new BluetoothAdapter.LeScanCallback() {
            @Override
            public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
                //do stuff here
            }
    };

Затем вы можете обработать ответ в этом onLeScan методе.

В Java класс abstract требует, чтобы любой его экземпляр реализовывал требуемые методы, что является ошибкой, которую вы получили.

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