我希望能幫到我, 我正在開發一個Android應用程序,需要連接藍牙設備,如掃描儀和打印機,目前我可以列出所有配對設備,但我想知道配對設備是否是打印機,掃描儀,手機等。如何檢查配對的藍牙設備是打印機還是掃描儀(Android)
有一些方法可以知道配對的藍牙設備的種類嗎?
我希望能幫到我, 我正在開發一個Android應用程序,需要連接藍牙設備,如掃描儀和打印機,目前我可以列出所有配對設備,但我想知道配對設備是否是打印機,掃描儀,手機等。如何檢查配對的藍牙設備是打印機還是掃描儀(Android)
有一些方法可以知道配對的藍牙設備的種類嗎?
總之,
是的,你可以。您可以通過使用設備的UUID來執行此操作。如果您知道設備的UUID,您可以從報告的UUID中匹配它們,並知道哪個配對設備是什麼。
事情是這樣的:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
Method getUuidsMethod = BluetoothAdapter.class.getDeclaredMethod("getUuids", null);
ParcelUuid[] uuids = (ParcelUuid[]) getUuidsMethod.invoke(adapter, null);
現在簡單地比較檢索的UUID已知UUID設備(在線或包裝盒上的)。
如果他們是匹配的,你就知道它是什麼設備。
注:最常見的UUID(掃描儀,打印機,鼠標),有通用的UUID 0001101-0000-1000-8000-00805F9B34FB
閱讀有關getUUID()方法,paracable方法,Method Java類,並最終Java.util.UUID.
我有一個想法,它可能會幫助你。
for (BluetoothDevice device : pairedDevices)
{
String deviceBTMajorClass = getBTMajorDeviceClass(device.getBluetoothClass().getMajorDeviceClass());
if (D) Log.d(TAG, "deviceBTMajorClass"+deviceBTMajorClass);
//btArrayAdapter.add(deviceBTName + "\n"+ deviceBTMajorClass);
data.add(device.getName() + "\n" + device.getAddress());
}
private String getBTMajorDeviceClass(int major) {
switch (major) {
case BluetoothClass.Device.Major.AUDIO_VIDEO:
return "AUDIO_VIDEO";
case BluetoothClass.Device.Major.COMPUTER:
return "COMPUTER";
case BluetoothClass.Device.Major.HEALTH:
return "HEALTH";
case BluetoothClass.Device.Major.IMAGING:
return "IMAGING";
case BluetoothClass.Device.Major.MISC:
return "MISC";
case BluetoothClass.Device.Major.NETWORKING:
return "NETWORKING";
case BluetoothClass.Device.Major.PERIPHERAL:
return "PERIPHERAL";
case BluetoothClass.Device.Major.PHONE:
return "PHONE";
case BluetoothClass.Device.Major.TOY:
return "TOY";
case BluetoothClass.Device.Major.UNCATEGORIZED:
return "UNCATEGORIZED";
case BluetoothClass.Device.Major.WEARABLE:
return "AUDIO_VIDEO";`enter code here`
default:
return "unknown!";
}
}
謝謝,我找到了另一種方式去做,但它會有用 – 2014-12-04 22:18:51
你做了什麼? – SeahawksRdaBest 2014-12-04 22:28:11
那麼看,因爲我只是想過濾打印機配對的設備,我使用設備的BluetoothClass,所以然後我過濾與1536(成像)和1280(Peripherical)所有設備getMajorDeviceClass(),所以它解決了我的問題,但感謝您的回答,將幫助我也許以後 – 2014-12-04 22:37:22