Add aosp get device info api to fastpair manager and test
Test: pass in model id and ocrrect ble address do not need to hard code
antispoofing key to pair success.
Bug: 202335820
Change-Id: I64b18dad92f3c011d7ff17f4bc519a51adbc17dd
diff --git a/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java b/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
index 247339e..0457f4f 100644
--- a/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
+++ b/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
@@ -39,7 +39,6 @@
import android.nearby.ScanCallback;
import android.os.Bundle;
import android.os.UserHandle;
-import android.util.Base64;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -61,6 +60,7 @@
import com.android.server.nearby.fastpair.footprint.FootprintsDeviceManager;
import com.android.server.nearby.fastpair.halfsheet.HalfSheetCallback;
import com.android.server.nearby.fastpair.pairinghandler.PairingProgressHandlerBase;
+import com.android.server.nearby.provider.FastPairDataProvider;
import com.android.server.nearby.util.Environment;
import com.google.protobuf.ByteString;
@@ -93,6 +93,7 @@
public static final String ACTION_RESOURCES_APK = "android.nearby.SHOW_HALFSHEET";
// Temp action deleted when the scanner is ready
public static final String ACTION_START_PAIRING = "NEARBY_START_PAIRING";
+ public static final String EXTRA_MODEL_ID = "MODELID";
public static final String EXTRA_ADDRESS = "ADDRESS";
private static Executor sFastPairExecutor;
@@ -108,16 +109,15 @@
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Log.d("FastPairService", " screen on");
} else if (intent.getAction().equals(ACTION_START_PAIRING)) {
+ byte[] model = intent.getByteArrayExtra(EXTRA_MODEL_ID);
String address = intent.getStringExtra(EXTRA_ADDRESS);
- String testPublicKey =
- "E4kxROcAj2SPlqrxHgXOm_yF-XIMSS91pFrfmeLcxULWyn0nK8i52PPkoC4r"
- + "LKRM2kZzNgT8bhDwK5njJAjiOg";
- showHalfSheet(Cache.ScanFastPairStoreItem.newBuilder().setAddress(address)
- .setAntiSpoofingPublicKey(ByteString.copyFrom(
- Base64.decode(testPublicKey, Base64.URL_SAFE
- | Base64.NO_WRAP | Base64.NO_PADDING)))
- .build());
Log.d("FastPairService", "start pair " + address);
+ Rpcs.GetObservedDeviceResponse response =
+ FastPairDataProvider.getInstance().loadFastPairDeviceMetadata(model);
+ ByteString publicKey = response.getDevice().getAntiSpoofingKeyPair().getPublicKey();
+ showHalfSheet(Cache.ScanFastPairStoreItem.newBuilder().setAddress(address)
+ .setAntiSpoofingPublicKey(publicKey)
+ .build());
} else {
Log.d("FastPairService", " screen off");
}
@@ -243,7 +243,7 @@
String modelId = item.getTriggerId();
Preferences.Builder prefsBuilder =
- FlagUtils.getPreferencesBuilder()
+ Preferences.builderFromGmsLog()
.setEnableBrEdrHandover(false)
.setIgnoreDiscoveryError(true);
pairingProgressHandlerBase.onSetupPreferencesBuilder(prefsBuilder);
@@ -251,10 +251,15 @@
prefsBuilder.setSkipConnectingProfiles(
item.getFastPairInformation().getDataOnlyConnection());
}
+ // When add watch and auto device needs to change the config
+ prefsBuilder.setRejectMessageAccess(true);
+ prefsBuilder.setRejectPhonebookAccess(true);
+ prefsBuilder.setHandlePasskeyConfirmationByUi(false);
+
FastPairConnection connection = new FastPairDualConnection(
context, item.getMacAddress(),
- // Change to prefsBuilder.build when the api integration complete
- Preferences.builderFromGmsLog().build(), null);
+ prefsBuilder.build(),
+ null);
pairingProgressHandlerBase.onPairingSetupCompleted();
FastPairConnection.SharedSecret sharedSecret;