Próbuję odczytywać charakterystykę z urządzenia BLE w sposób ciągły.Android Bluetooth LE - Czytaj Cechy nie działa na Samsunga
Stworzyłem Runnable w moim klasy usługi:
private class BackgroundRunnableForRead implements Runnable
{
private volatile boolean isRunning = true ;
@Override
public void run() {
try {
BluetoothLeService.this.backgroundRunID = Thread.currentThread().getId();
while(isRunning) {
List<BluetoothGattService> gattServices = BluetoothLeService.this.getSupportedGattServices();
if (gattServices != null && gattServices.size() > 0) {
BluetoothGattCharacteristic characteristic = getCharacteristic(gattServices);
if (characteristic != null && (characteristic.getProperties() & 2) > 0) {
BluetoothLeService.this.readCharacteristic(characteristic);
}
}
}
}
catch(Exception e)
{
isRunning= false;
e.printStackTrace();
}
}
public void kill()
{
this.isRunning = false;
}
}
I na udane odkrycia usług Wołam:
public void startReadingCharacteristics()
{
System.out.println("BluetoothLeService.startReadingCharacteristics");
this.mBackgroundRunnable = new BackgroundRunnableForRead();
mReadThread = new Thread(mBackgroundRunnable);
mReadThread.start();
}
i to jest mój na characterics czytać oddzwaniania -
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
System.out.println("BluetoothLeService.onCharacteristicRead" + status);
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
}
}
Aplikacja działa poprawnie na Nexusie 5, Nexusie 4 i Motorola G.
Po uruchomieniu tego kodu na Samsung S6 nie działa, onCharacteristicRead()
nie jest wywoływany.
Przeczytałem, że wykonywanie połączeń sekwencyjnych na readCharacteristics()
może powodować problemy, ponieważ czeka na wykonanie onCharacteristicRead.
Co to jest wersja OS? –
Wersja Os - Android 5.1.1. – Anukool
Proszę sformatować swój kod. –