Сейчас я работаю над приложением, которому требуется простая связь между кнопкой Bluetooth (по сути, кнопкой для селфи) и подключенным телефоном через приложение. Теперь я могу нормально подключаться к своему телефону, и он работает так, как задумано, но как только я хочу добиться этого общения с помощью кода, у меня возникают проблемы. Я обнаружил устройства и могу подключиться через их Mac-адрес. Это устройство безымянного бренда, поэтому документации по UUIDS нет, но я использовал приложения ble, чтобы найти нужные мне UUIDS или, по крайней мере, те, которые, по моему мнению, мне нужны. Это мой текущий код, когда устройство «щелкают» в списке устройств. Я новичок в этом, поэтому могу ошибаться, но в основном я пытаюсь активировать уведомление, записывая UUID человеческого интерфейса (при нажатии физической кнопки), чтобы позже я мог получать уведомления при нажатии кнопки, чтобы использовать их для своего приложения. Я пробую это потому что простая попытка связаться с UUID соответствующего уведомления пока не сработала. Вся часть уведомлений о настройке еще не работает. Было бы благословением, если бы кто-нибудь смог мне здесь помочь. Заранее спасибо, ребята.
package com.example.androidcounterapp
import android.annotation.SuppressLint
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothGattDescriptor
import android.content.ContentValues.TAG
import android.content.Context
import android.util.Log
import com.polidea.rxandroidble3.RxBleClient
import com.polidea.rxandroidble3.RxBleDevice
import io.reactivex.rxjava3.disposables.Disposable
import java.util.UUID
class BluetoothConnection {
val serviceUuidUUID = UUID.fromString("00001812-0000-1000-8000-00805f9b34fb")
val characteristicUUID = UUID.fromString("00002a4d-0000-1000-8000-00805f9b34fb")
val cccdUUID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb")
inner class ConnectThread(
private val context: Context,
private val macAddress: String,
private val bluetoothAdapter: BluetoothAdapter
) : Thread() {
private val rxBleClient: RxBleClient by lazy(LazyThreadSafetyMode.NONE) {
RxBleClient.create(context)
}
private var connectionDisposable: Disposable? = null
@SuppressLint("MissingPermission")
private fun connectAndSetupNotification(
device: RxBleDevice,
characteristicUUID: UUID,
cccdUUID: UUID,
) {
Log.i(TAG, "Entered connectAndSetupNotification")
connectionDisposable = device.establishConnection(false)
.flatMap { rxBleConnection ->
Log.i(TAG, "GATT connection established")
rxBleConnection.setupNotification(characteristicUUID)
.flatMap { notificationObservable ->
val enableNotificationValue = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE
val descriptor = BluetoothGattDescriptor(
cccdUUID,
BluetoothGattDescriptor.PERMISSION_WRITE
).apply {
value = enableNotificationValue
}
rxBleConnection.writeDescriptor(descriptor, enableNotificationValue)
.andThen(notificationObservable)
}
}
.subscribe(
{ notificationData ->
Log.i(TAG, "Notification data: ${notificationData.joinToString(", ")}")
val readableValue = CharacteristicConverter.convert(notificationData)
Log.i(TAG, "Readable value: $readableValue")
},
{ throwable ->
Log.e(TAG, "Error occurred while setting up notification", throwable)
}
)
}
@SuppressLint("MissingPermission")
override fun run() {
bluetoothAdapter.cancelDiscovery()
Log.i(TAG, "Trying to connect")
val device = rxBleClient.getBleDevice(macAddress)
connectAndSetupNotification(device, characteristicUUID, cccdUUID)
}
fun cancel() {
connectionDisposable?.dispose()
}
}
}
Я пытался связаться практически со всеми UUID, которые приложение Bluetooth ble связало с моим кнопочным устройством, но безрезультатно. Поэтому моя последняя надежда состоит в том, что уведомление нужно включить для работы и что я не наблюдаю за чем-то большим.
Сейчас я работаю над приложением, которому требуется простая связь между кнопкой Bluetooth (по сути, кнопкой для селфи) и подключенным телефоном через приложение. Теперь я могу нормально подключаться к своему телефону, и он работает так, как задумано, но как только я хочу добиться этого общения с помощью кода, у меня возникают проблемы. Я обнаружил устройства и могу подключиться через их Mac-адрес. Это устройство безымянного бренда, поэтому документации по UUIDS нет, но я использовал приложения ble, чтобы найти нужные мне UUIDS или, по крайней мере, те, которые, по моему мнению, мне нужны. Это мой текущий код, когда устройство «щелкают» в списке устройств. Я новичок в этом, поэтому могу ошибаться, но в основном я пытаюсь активировать уведомление, записывая UUID человеческого интерфейса (при нажатии физической кнопки), чтобы позже я мог получать уведомления при нажатии кнопки, чтобы использовать их для своего приложения. Я пробую это потому что простая попытка связаться с UUID соответствующего уведомления пока не сработала. Вся часть уведомлений о настройке еще не работает. Было бы благословением, если бы кто-нибудь смог мне здесь помочь. Заранее спасибо, ребята. [code] package com.example.androidcounterapp
val serviceUuidUUID = UUID.fromString("00001812-0000-1000-8000-00805f9b34fb") val characteristicUUID = UUID.fromString("00002a4d-0000-1000-8000-00805f9b34fb") val cccdUUID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb")
inner class ConnectThread( private val context: Context, private val macAddress: String, private val bluetoothAdapter: BluetoothAdapter ) : Thread() {
private val rxBleClient: RxBleClient by lazy(LazyThreadSafetyMode.NONE) { RxBleClient.create(context) }
private var connectionDisposable: Disposable? = null
@SuppressLint("MissingPermission") override fun run() {
bluetoothAdapter.cancelDiscovery() Log.i(TAG, "Trying to connect") val device = rxBleClient.getBleDevice(macAddress) connectAndSetupNotification(device, characteristicUUID, cccdUUID) }
fun cancel() { connectionDisposable?.dispose() } } }
[/code] Я пытался связаться практически со всеми UUID, которые приложение Bluetooth ble связало с моим кнопочным устройством, но безрезультатно. Поэтому моя последняя надежда состоит в том, что уведомление нужно включить для работы и что я не наблюдаю за чем-то большим.
Сейчас я работаю над приложением, которому требуется простая связь между кнопкой Bluetooth (по сути, кнопкой для селфи) и подключенным телефоном через приложение. Теперь я могу нормально подключаться к своему телефону, и он работает так, как...
Только начал использовать java.util.UUID. Мой вопрос: если у меня есть две переменные UUID, скажем, u1 и u2, и я хотел бы проверить, равны ли они, могу ли я безопасно использовать выражение u1 == u2 или мне придется написать u1.equals(u2 )?...
Я пытаюсь использовать C ++ для связи с устройством BLE. Чтобы получить данные, я должен написать 4 байта на один UUID, тогда данные записаны через другой UUID. У меня это работает на питоне с мрачным:
async def main(address: str):
async def...
Я пытаюсь использовать C ++ для связи с устройством BLE. Чтобы получить данные, я должен написать 4 байта на один UUID, тогда данные записаны через другой UUID. У меня это работает на питоне с мрачным:
async def main(address: str):
async def...
Насколько я понимаю, в iOS невозможно получить MAC-адрес BLE, как в Android, вместо этого iOS создает UUID на основе MAC-адреса BLE, который отличается на разных устройствах iOS, но приложение может использовать это уникальный идентификатор вместо...