Bluetooth-pairing - wie zu zeigen das einfache Abbrechen/Paar-dialog?

Vorbereitet habe ich ein einfacher test-Projekt für diese Frage auf GitHub.

Ich versuche zum erstellen einer Android-app, die würde einen QR-code Scannen aus einem computer-Bildschirm und verwenden Sie dann die Daten (MAC-Adresse und PIN-oder hash) für einfach Paarung (Bindung) mit einem Bluetooth-Gerät.

Ähnlich wie die beliebten App InstaWifi - aber für die Klassischen Bluetooth.

Für Testzwecke mache ich nicht alle barcode-scanning noch nicht, aber gerade die Anzeige einer Liste der Geräte:

Bluetooth-pairing - wie zu zeigen das einfache Abbrechen/Paar-dialog?

Nachdem der Benutzer berührt eine der Geräte-pairing versucht wird, in MainActivity.java:

private void startBluetoothPairing(BluetoothDevice device) {
    Intent pairingIntent = new Intent(BluetoothDevice.ACTION_PAIRING_REQUEST);
    pairingIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
    pairingIntent.putExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT,
                BluetoothDevice.PAIRING_VARIANT_PIN);
    pairingIntent.putExtra(BluetoothDevice.EXTRA_PAIRING_KEY, 1234);
    //device.setPin(new byte[]{1,2,3,4});  <- DOES NOT CHANGE ANYTHING
    //device.setPairingConfirmation(false);
    startActivityForResult(pairingIntent, REQUEST_BT_SETTINGS);
}

Leider das popup immer noch, fragt nach der PIN:

Bluetooth-pairing - wie zu zeigen das einfache Abbrechen/Paar-dialog?

Da habe ich eigentlich angegeben, eine PIN in meinem source-code, war ich eigentlich erwarten, dass ein anderes, einfacheres system-dialog angezeigt werden (dies ist gezeigt, wenn dabei die NFC-OOB-Kopplung):

Bluetooth-pairing - wie zu zeigen das einfache Abbrechen/Paar-dialog?

Aus der Suche nach Lösungen, ich weiß, dass es eine setPin() Methode, aber es ist hier nicht anwendbar (oder ist es?) - weil ich versuche zu koppeln Sie das ganze smartphone mit dem Bluetooth-Gerät und nicht nur die app...

Meine Frage: Wie man Android-OS zu zeigen, die einfach Abbrechen/Paar-dialog?

Suche nach Bluetooth-pairing-Anfrage string auf GitHub hat nicht gezeigt, irgendwelche Hinweise...

UPDATE: Auf unrealsoul007 s Vorschlag (danke) habe ich den Quellcode aktualisieren in MainActivity.java und jetzt einfach Abbrechen/Paar-dialog angezeigt:

private void startBluetoothPairing(BluetoothDevice device) {
    Intent pairingIntent = new Intent(BluetoothDevice.ACTION_PAIRING_REQUEST);
    pairingIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
    pairingIntent.putExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT,
        BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION);
    pairingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivityForResult(pairingIntent, REQUEST_BT_PAIRING);
}

Aber ich bin nicht sicher, wie Sie Sie, um die Kopplung abzuschließen - weil onActivityResult heißt mit resultCode=0 sogar, bevor das Dialogfeld wird geschlossen:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    //this is called before user clicks Cancel or Pair in the dialog
    if (requestCode == REQUEST_BT_PAIRING) { 
        if (resultCode == Activity.RESULT_OK) {  //0 != -1
            Log.d("XXX", "Let#s pair!!!!"); //NOT CALLED
        }

        return;
    }
}
  • tut onActivityResult aufgerufen nach Klick-Pair-Mädchen als auch..?
  • Hat die onActivityResult aufgerufen, nachdem die Kommissionierung paar oder nur, wenn das popup ist?
  • haben Sie es geschafft, es passiert nur, wenn man akzeptiert das pairing?
  • Nope, ich hab es schließlich mit createBond()
Schreibe einen Kommentar