Android kaynak koduna bakarak, UUID'lere bakarak bir aygıt için hangi profillerin kullanılabileceğini tahmin edebilir ve ardından her profili tek tek bağlayabilirsiniz.
Adım 0: Kopya _PROFILE_UUIDS
oradan sabitler: https://android.googlesource.com/platform/packages/apps/Settings/+/9ad703cdb9a8d0972c123b041d18aa7bbeb391a4/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
Adım 1: örneğin tarama yoluyla, senin BluetoothDevice
olsun. Düzgün bağlandığından emin olun.
Adım 2:android.bluetooth.BluetoothDevice.ACTION_UUID
eylem niyet
Adım 3 için BroadcastReceiver
kayıt: çağrı cihazınızdafetchUuidsWithSdp
yöntemi
Adım 4: Bir ACTION_UUID
yayın alacaksınız: yönteminde, alıcının kaydını silebilir ve aşağıdaki gibi profil listesini alabilirsiniz:
ArrayList<Integer> profiles = new ArrayList<>();
ParcelUuid[] uuids = device.getUuids();
if (BluetoothUuid.containsAnyUuid(uuids, HEADSET_PROFILE_UUIDS))
{
profiles.add(BluetoothProfile.HEADSET);
}
if (BluetoothUuid.containsAnyUuid(uuids, A2DP_PROFILE_UUIDS))
{
profiles.add(BluetoothProfile.A2DP);
}
if (BluetoothUuid.containsAnyUuid(uuids, OPP_PROFILE_UUIDS))
{
//OPP doesn't have any BluetoothProfile value
}
if (BluetoothUuid.containsAnyUuid(uuids, HID_PROFILE_UUIDS))
{
//You will need system privileges in order to use this one
profiles.add(BluetoothProfile.INPUT_DEVICE);
}
if (BluetoothUuid.containsAnyUuid(uuids, PANU_PROFILE_UUIDS))
{
profiles.add(BluetoothProfile.PAN);
}
Adım 5: tek tek, profiller için vekiller olsun:
for (int profile : profiles)
{
if (!adapter.getProfileProxy(context, listener, profile))
{
//Do something
}
}
Adım 6: senin dinleyici onServiceConnected
yönteminde alınan her proxy ile bir şey yapmak. Relfection kullanarak connect
yöntemine erişebilirsiniz.