android - पटर मोड को अनलॉक करने के लिए अपने एप्लिकेशन में स्मार्ट लॉक एपीआई का उपयोग कैसे करें?




bluetooth bluetooth-lowenergy (2)

मैं एंड्रॉइड 5.0 का उपयोग कर रहा हूं। संस्करण SmartLock फ़ंक्शन प्रदान करता है जो एक विश्वसनीय डिवाइस से कनेक्ट करके पासवर्ड / पैटर्न को अनलॉक करने की अनुमति देता है। मेरे पास ब्लूटूथ कम ऊर्जा (बीएलई) डिवाइस है जो विश्वसनीय डिवाइस के रूप में पंजीकृत है I मैं फोन को अनलॉक (पैटर्न मोड) के लिए BLE का उपयोग करना चाहता हूं। BLE और फोन जुड़े हुए हैं और ईवेंट द्वारा डेटा उपलब्ध होने पर यह फ़ोन अनलॉक कर देगा

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

यदि कोई भी SmartLock के साथ काम करता है, तो कृपया मुझे यह करने के लिए कुछ मार्गदर्शन दें? मुझे ऐसा करने के लिए कोई स्मार्टलाक एपीआई नहीं मिला।

सभी को धन्यवाद


यह थोड़ा जटिल हो सकता है, लेकिन Google इस उपयोग के बारे में पहले से ही विशाल डॉक्स प्रदान करता है

संग्रहीत क्रेडेंशियल्स का अनुरोध करने के लिए, आपको क्रेडेंशियल्स एपीआई एक्सेस करने के लिए कॉन्फ़िगर किया गया GoogleApiClient का एक उदाहरण बनाना होगा।

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

एक क्रेडेंशियल अनुरोध वस्तु उन साइन-इन सिस्टम को निर्दिष्ट करती है, जिनसे आप क्रेडेंशियल्स का अनुरोध करना चाहते हैं। पासवर्ड-आधारित साइन-इन के लिए setPasswordLoginSupported विधि का उपयोग करके एक CredentialRequest setPasswordLoginSupported , और Google Sign-In जैसे फ़ेडरेटेड साइन-इन सेवाओं के लिए setAccountTypes() विधि

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

आपके द्वारा GoogleApiClient और CredentialRequest ऑब्जेक्ट बनाने के बाद, उन्हें अपने ऐप के लिए संग्रहीत क्रेडेंशियल्स का अनुरोध करने के लिए क्रेडेंशियल्स एपी।

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

एक सफल क्रेडेंशियल अनुरोध पर, अपने ऐप में उपयोगकर्ता के साइन-इन को पूरा करने के लिए परिणामी क्रेडेंशियल ऑब्जेक्ट का उपयोग करें। पुनर्प्राप्त किए गए क्रेडेंशियल के प्रकार को निर्धारित करने के लिए 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);
        // ...
    }
}

स्मार्टलाक के लिए कोई बाहरी एपीआई नहीं है आप इस पर संदर्भ के लिए Google दस्तावेज़ देख सकते हैं।

आप इस नमूना को GitHub पर चेक कर सकते हैं और यहां आप अपने ऐप में स्मार्ट लॉक एपीआई को एकीकृत करने के लिए ट्यूटोरियल देखेंगे।





google-smartlockpasswords