smart samsung lock inteligente funciona desbloqueo desactivar abrir android bluetooth bluetooth-lowenergy android-bluetooth google-smartlockpasswords

android - samsung - ¿Cómo usar Smart Lock API en mi aplicación para desbloquear el modo de patrón?



smart lock no funciona (3)

Estoy usando Android 5.0. La versión proporciona la función SmartLock que permite desbloquear la contraseña / patrón al conectarse con un dispositivo confiable. Tengo un dispositivo bluetooth de baja energía (BLE) que se registró como dispositivo de confianza. Quiero usar el BLE para desbloquear (modo de patrón) el teléfono. Desbloqueará el teléfono cuando el BLE y el teléfono estén conectados y los datos estén disponibles para el evento

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

Si alguien que trabajó con SmartLock, por favor dame alguna orientación para hacerlo? No encontré ninguna API de SmartLock para hacerlo.

Gracias a todos


Puede ser un poco complicado, pero Google ya proporcionó enormes documentos sobre este uso.

Para solicitar credenciales almacenadas, debe crear una instancia de GoogleApiClient configurada para acceder a la API de credenciales.

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

Un objeto CredentialRequest especifica los sistemas de inicio de sesión desde los que desea solicitar credenciales. Cree una CredentialRequest utilizando el método setPasswordLoginSupported para el inicio de sesión basado en contraseña y el método setAccountTypes() para servicios de inicio de sesión federados, como el inicio de sesión de Google.

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

Una vez que haya creado los objetos GoogleApiClient y CredentialRequest , GoogleApiClient al método CredentialsApi.request() para solicitar las credenciales almacenadas para su aplicación.

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()); } } });

En una solicitud de credencial exitosa, use el objeto Credential resultante para completar el inicio de sesión del usuario en su aplicación. Use el método getAccountType() para determinar el tipo de credenciales recuperadas, luego complete el proceso de inicio de sesión apropiado.

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); // ... } }


No hay una API externa como tal para SmartLock. Puede consultar Google Docs para consultarlo.

Puede verificar esta muestra en GitHub y aquí encontrará el tutorial sobre cómo integrar la API de Smart Lock en su aplicación.


No creo que haya una API SmartLock. Como dijo Pravin en los comentarios, el bloqueo inteligente desactivará automáticamente el patrón cuando el dispositivo esté conectado.

No lo he intentado, pero una vez que se deshabilita el patrón, debe poder pasar por alto la pantalla de bloqueo con lo siguiente (de esta respuesta ):

KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE); KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); lock.disableKeyguard();

Deberá agregar un permiso a su manifiesto:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>