OSDN Git Service

Add support for setting passkey as pairing variant lollipop-x86
authorGrzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
Tue, 20 Oct 2015 13:07:51 +0000 (15:07 +0200)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Tue, 22 Dec 2015 07:22:07 +0000 (15:22 +0800)
This is needed if pairing variant is passkey entry.

Change-Id: I8f3efbc90757ac77414a9e86d7c29326c25c12ad

api/current.txt
api/system-current.txt
core/java/android/bluetooth/BluetoothDevice.java

index 35423fd..bb7d853 100644 (file)
@@ -6202,6 +6202,7 @@ package android.bluetooth {
     method public int getType();
     method public android.os.ParcelUuid[] getUuids();
     method public boolean setPairingConfirmation(boolean);
+    method public boolean setPasskey(int);
     method public boolean setPin(byte[]);
     method public void writeToParcel(android.os.Parcel, int);
     field public static final java.lang.String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
@@ -6231,6 +6232,7 @@ package android.bluetooth {
     field public static final java.lang.String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE";
     field public static final java.lang.String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI";
     field public static final java.lang.String EXTRA_UUID = "android.bluetooth.device.extra.UUID";
+    field public static final int PAIRING_VARIANT_PASSKEY = 1; // 0x1
     field public static final int PAIRING_VARIANT_PASSKEY_CONFIRMATION = 2; // 0x2
     field public static final int PAIRING_VARIANT_PIN = 0; // 0x0
   }
index 729f656..dc17bc9 100644 (file)
@@ -6416,6 +6416,7 @@ package android.bluetooth {
     method public boolean isConnected();
     method public boolean isEncrypted();
     method public boolean setPairingConfirmation(boolean);
+    method public boolean setPasskey(int);
     method public boolean setPin(byte[]);
     method public void writeToParcel(android.os.Parcel, int);
     field public static final java.lang.String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
@@ -6445,6 +6446,7 @@ package android.bluetooth {
     field public static final java.lang.String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE";
     field public static final java.lang.String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI";
     field public static final java.lang.String EXTRA_UUID = "android.bluetooth.device.extra.UUID";
+    field public static final int PAIRING_VARIANT_PASSKEY = 1; // 0x1
     field public static final int PAIRING_VARIANT_PASSKEY_CONFIRMATION = 2; // 0x2
     field public static final int PAIRING_VARIANT_PIN = 0; // 0x0
   }
index bb0d0a3..ad723f1 100644 (file)
@@ -29,6 +29,8 @@ import android.util.Log;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.UUID;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 
 /**
  * Represents a remote Bluetooth device. A {@link BluetoothDevice} lets you
@@ -272,6 +274,7 @@ public final class BluetoothDevice implements Parcelable {
      * intents to indicate pairing method used. Possible values are:
      * {@link #PAIRING_VARIANT_PIN},
      * {@link #PAIRING_VARIANT_PASSKEY_CONFIRMATION},
+     * {@link #PAIRING_VARIANT_PASSKEY},
      */
     public static final String EXTRA_PAIRING_VARIANT =
             "android.bluetooth.device.extra.PAIRING_VARIANT";
@@ -483,7 +486,6 @@ public final class BluetoothDevice implements Parcelable {
 
     /**
      * The user will be prompted to enter a passkey
-     * @hide
      */
     public static final int PAIRING_VARIANT_PASSKEY = 1;
 
@@ -1094,13 +1096,27 @@ public final class BluetoothDevice implements Parcelable {
         return false;
     }
 
-    /** @hide */
+    /**
+     * Set the passkey during pairing when the pairing method is
+     * {@link #PAIRING_VARIANT_PASSKEY}
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}.
+     *
+     * @return true if passkey has been set
+     *         flase for error
+     */
     public boolean setPasskey(int passkey) {
-        //TODO(BT)
-        /*
+        if (sService == null) {
+            Log.e(TAG, "BT not enabled. Cannot set Remote Device passkey");
+            return false;
+        }
+        ByteBuffer buff = ByteBuffer.allocate(5);
+        buff.order(ByteOrder.nativeOrder());
+        buff.putInt(passkey);
+        byte[] passkeyByte = buff.array();
+
         try {
-            return sService.setPasskey(this, true, 4, passkey);
-        } catch (RemoteException e) {Log.e(TAG, "", e);}*/
+            return sService.setPasskey(this, true, passkeyByte.length, passkeyByte);
+        } catch (RemoteException e) {Log.e(TAG, "", e);}
         return false;
     }