use*_*996 6 android bluetooth discovery android-intent
我注意到,当配对的蓝牙设备更改名称时,我的Android设备并不总是注册该名称更改.它继续显示设备的旧名称......这对于不成对设备来说不是问题,所以我的猜测是Android会在某处缓存配对设备的名称.
环顾四周后,我发现如果我取消配对设备并手动清除存储在Android的"蓝牙共享"应用程序中的缓存,则此问题就会消失.当然,在我再次将设备与Android配对后,问题可能会再次出现.
TL; DR如何强制Android始终显示蓝牙设备的最新名称?
我听说过"fetchUuidsWithSdp"方法,但我不知道如何使用它.
是的,fetchUuidsWithSdp()是一个好主意,因为与getUuids()不同,它强制设备尝试连接到目标设备并更新它的相关信息.
fetchUuidsWithSdp的官方支持刚刚在4.0.3中添加,但在使用反射之前可以使用它.
public static void startFetch( BluetoothDevice device ) {
// Need to use reflection prior to API 15
Class cl = null;
try {
cl = Class.forName("android.bluetooth.BluetoothDevice");
} catch( ClassNotFoundException exc ) {
Log.e(CTAG, "android.bluetooth.BluetoothDevice not found." );
}
if (null != cl) {
Class[] param = {};
Method method = null;
try {
method = cl.getMethod("fetchUuidsWithSdp", param);
} catch( NoSuchMethodException exc ) {
Log.e(CTAG, "fetchUuidsWithSdp not found." );
}
if (null != method) {
Object[] args = {};
try {
method.invoke(device, args);
} catch (Exception exc) {
Log.e(CTAG, "Failed to invoke fetchUuidsWithSdp method." );
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
通常会注册android.bluetooth.device.action.UUID,但您可能希望注册名称更改操作.
请注意,如果您决定注册UUID操作,则在API 15之前拼错为"android.bleutooth.device.action.UUID"(蓝牙中的e和u交换).
| 归档时间: |
|
| 查看次数: |
7649 次 |
| 最近记录: |