Я разрабатываю приложение, в котором мне нужно подключиться к устройству Bluetooth на Android 4.3.
И я хочу изменить имя брелока CC2541 через приложение для Android.
Мои идеи:
1. Там есть обычный текст, который я могу ввести в свое приложение для Android.
2. После того, как я набрал имя, я нажимаю кнопку, чтобы отправить этот текст.
3. Если CC2541 получит этот текст из приложения Android, он изменит текст в deviceName[] следующего кода в keyfobdemo.c:
static uint8 deviceName[] =
{
// complete name
0x0b, // length of first data structure (11 bytes excluding length byte)
0x09, // AD Type = Complete local name
0x4b, // 'K'
0x65, // 'e'
0x79, // 'y'
0x66, // 'f'
0x6f, // 'o'
0x62, // 'b'
0x64, // 'd'
0x65, // 'e'
0x6d, // 'm'
0x6f, // 'o'
};
Вопрос примерно следующий:
1.Как отправить текстовые данные на брелок CC2541 в приложении Android 4.3??
2.Как получить текстовые данные на стороне CC2541??
3. Нужно ли мне использовать какой-либо профиль??
Извините за мой английский и эти вопросы.
Спасибо за ваше направление.
Изменить
Я пытаюсь использовать 0x2A00 для получения службы имени устройства, но она не работает, когда я вызываю функцию Device_Name.
Name_Service имеет значение null.
private static final UUID Device_Name_UUID = UUID.fromString("00002a00-0000-1000-8000-00805f9b34fb");
private static final UUID Write_UUID = UUID.fromString("00001800-0000-1000-8000-00805f9b34fb");
public void Device_Name(){
BluetoothGattService Name_Service = mBluetoothGatt.getService(Write_UUID );
if(Name_Service == null) {
Log.d(TAG, "Name_Service service not found!");
return;
}
BluetoothGattCharacteristic DeviceName = Name_Service.getCharacteristic(Device_Name_UUID);
if(DeviceName == null) {
Log.d(TAG, "DeviceName charateristic not found!");
return;
}
}
Log.v(TAG, "readCharacteristic(DeviceName) = " + mBluetoothGatt.readCharacteristic(DeviceName));
String i = "123";
DeviceName.setValue(i);
Log.v(TAG, "writeCharacteristic(DeviceName) = " + mBluetoothGatt.writeCharacteristic(DeviceName));
он показывает следующий журнал:
V/BluetoothLeService( 3680): readCharacteristic(DeviceName) = true
V/BluetoothLeService( 3680): writeCharacteristic(DeviceName) = false
D/audio_hw_primary( 1752): found out /dev/snd/pcmC0D0p
W/audio_hw_primary( 1752): out_write() limiting sleep time 45351 to 23219
W/audio_hw_primary( 1752): out_write() limiting sleep time 34263 to 23219
W/audio_hw_primary( 1752): out_write() limiting sleep time 33696 to 23219
D/BtGatt.btif( 2646): btif_gattc_upstreams_evt: Event 3
I/BtGatt.btif( 2646): set_read_value unformat.len = 13
D/BtGatt.GattService( 2646): onReadCharacteristic() - address=90:59:AF:0B:8A:AB, status=0, length=13
D/BluetoothGatt( 3680): onCharacteristicRead() - Device=90:59:AF:0B:8A:AB UUID=00002a00-0000-1000-8000-00805f9b34fb Status=0
он считается успешным, и я могу получить имя устройства.
И я ссылаюсь на Bluetooth Page-Device Name , формат — строка UTF-8. Но он пишет, что характеристика ложная.