Android: как программно выполнить сопряжение устройств bluetooth?
Пожалуйста, кто-нибудь помогите мне с сопряжением моего телефона android с другим обнаруженным телефоном программно ?
3 ответа:
Нашел решение с помощью рефлексии, я делаю это сейчас следующим образом, и это работает для меня:
//For Pairing private void pairDevice(BluetoothDevice device) { try { Log.d("pairDevice()", "Start Pairing..."); Method m = device.getClass().getMethod("createBond", (Class[]) null); m.invoke(device, (Object[]) null); Log.d("pairDevice()", "Pairing finished."); } catch (Exception e) { Log.e("pairDevice()", e.getMessage()); } } //For UnPairing private void unpairDevice(BluetoothDevice device) { try { Log.d("unpairDevice()", "Start Un-Pairing..."); Method m = device.getClass().getMethod("removeBond", (Class[]) null); m.invoke(device, (Object[]) null); Log.d("unpairDevice()", "Un-Pairing finished."); } catch (Exception e) { Log.e(TAG, e.getMessage()); } }
Можно сделать так:
public void pairDevice(BluetoothDevice device) { String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST"; Intent intent = new Intent(ACTION_PAIRING_REQUEST); String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE"; intent.putExtra(EXTRA_DEVICE, device); String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT"; int PAIRING_VARIANT_PIN = 0; intent.putExtra(EXTRA_PAIRING_VARIANT, PAIRING_VARIANT_PIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getActivity().startActivityForResult(intent,0); }