2017-03-04 61 views
0

我正在开发一个蓝牙应用程序,我需要获取特定客户端蓝牙设备提供的服务的名称。我正在使用下面的代码来获取UUID的。如何在蓝牙中获取相应UUID的服务名称?

代码段:

if(BluetoothDevice.ACTION_UUID.equals(action)) 
{ 
BluetoothDevice device =  intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
Parcelable[] uuidExtra = intent.getParcelableArrayExtra(BluetoothDevice.EXTRA_UUID); 
for (int i = 0; i < uuidExtra.length; i++) { 
String abc=uuidExtra[i].toString()); 
} 
} 

我得到的uuid值,例如“00001000-0000-1000-8000-00805F9B34FB”但我需要像下面的相应的服务名称。

BrowseGroupDescriptorServiceClassID = 00001001-0000-1000-8000-00805F9B34FB PublicBrowseGroupServiceClass = 00001002-0000-1000-8000-00805F9B34FB

回答

0

On Bluetooth.com你可以找到的16位UUID的列表。他们都是transformable到128位。你只需要检查GATT规范。剩下的唯一事情就是将名称映射到UUID,您可能必须自己写。

+0

所以你的意思是没有特定的语法映射名称? @morynicz –

+0

你的意思是魔法内置的方法将UUID转换为人类可读的字符串?我对此表示怀疑。但是你可以检查android文档。 – morynicz

+0

好的,谢谢@morynicz –

0

顺便说一句,这是来自iOS的开发不同,连接时,我们不能让service_namecharactistics_name通过Android的公共API(除UUID),所以如果 我们要extpand我们自己service_namecharactistics_name在远程蓝牙之外blutetooth SIG defined -硬件。我们无法直接获取目标charactistics_name(例如,charactistics.getUUIDName())(仍然使用映射添加自己charactistics_uuid不可互换)