android - studio - bluetooth low energy




如何在我的應用程序中使用智能鎖定API來解鎖模式? (2)

我正在使用Android 5.0。 該版本提供SmartLock功能,允許通過連接受信任的設備來解鎖密碼/模式。 我有一個藍牙低功耗(BLE)設備註冊為可信設備。 我想用BLE解鎖(模式模式)手機。 當BLE和手機連接並且數據可用時,它將解鎖手機

if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) 
// Calling unlock by the SmartLock API

如果有人使用SmartLock,請給我一些指導來做到這一點? 我沒有找到任何SmartLock API來做到這一點。

謝謝大家


這可能有點複雜,但Google已經提供了有關這種用法的Doc。

要請求存儲的憑證,您必須創建一個配置為訪問憑證API的GoogleApiClient實例。

mCredentialsApiClient = new GoogleApiClient.Builder(this)
    .addConnectionCallbacks(this)
    .enableAutoManage(this, this)
    .addApi(Auth.CREDENTIALS_API)
    .build();

CredentialRequest對象指定要從中請求憑據的登錄系統。 使用setPasswordLoginSupported方法為基於密碼的登錄構建CredentialRequest ,並使用聯合登錄服務(例如Google Sign-In setAccountTypes()setAccountTypes()方法。

mCredentialRequest = new CredentialRequest.Builder()
    .setPasswordLoginSupported(true)
    .setAccountTypes(IdentityProviders.GOOGLE, IdentityProviders.TWITTER)
    .build();

在創建了GoogleApiClientCredentialRequest對象之後,將它們傳遞給CredentialsApi.request()方法來請求為您的應用程序存儲的憑據。

Auth.CredentialsApi.request(mCredentialsClient, mCredentialRequest).setResultCallback(
    new ResultCallback<CredentialRequestResult>() {
        @Override
        public void onResult(CredentialRequestResult credentialRequestResult) {
            if (credentialRequestResult.getStatus().isSuccess()) {
                // See "Handle successful credential requests"
                onCredentialRetrieved(credentialRequestResult.getCredential());
            } else {
                // See "Handle unsuccessful and incomplete credential requests"
                resolveResult(credentialRequestResult.getStatus());
            }
        }
    });

在成功的證書請求上,使用生成的Credential對象來完成用戶的登錄到您的應用程序。 使用getAccountType()方法確定檢索到的憑據的類型,然後完成適當的登錄過程。

private void onCredentialRetrieved(Credential credential) {
    String accountType = credential.getAccountType();
    if (accountType == null) {
        // Sign the user in with information from the Credential.
        signInWithPassword(credential.getId(), credential.getPassword());
    } else if (accountType.equals(IdentityProviders.GOOGLE)) {
        // The user has previously signed in with Google Sign-In. Silently
        // sign in the user with the same ID.
        // See https://developers.google.com/identity/sign-in/android/
        GoogleSignInOptions gso =
                new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                        .requestEmail()
                        .build();
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .setAccountName(credential.getId())
                .build();
        OptionalPendingResult<GoogleSignInResult> opr =
                Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
        // ...
    }
}

SmartLock沒有外部API。 您可以查看Google 文檔以供參考。

你可以在GitHub上查看這個例子,在這裡你可以找到關於如何在你的應用中集成智能鎖API的教程。





google-smartlockpasswords