एआई चश्मे के लिए हार्डवेयर से जुड़ी अनुमतियों का अनुरोध करना

इन XR डिवाइसों पर लागू होता है
इस गाइड की मदद से, इन तरह के एक्सआर डिवाइसों के लिए अनुभव बनाए जा सकते हैं.
एआई चश्मा

फ़ोन की तरह ही, एआई चश्मे पर कैमरा और माइक्रोफ़ोन जैसे संवेदनशील हार्डवेयर को ऐक्सेस करने के लिए, उपयोगकर्ता की साफ़ तौर पर सहमति लेना ज़रूरी है. इन्हें चश्मे से जुड़ी अनुमतियां माना जाता है. आपका ऐप्लिकेशन, रनटाइम में इनके लिए अनुरोध करेगा. भले ही, उसके पास फ़ोन पर पहले से ही इनसे जुड़ी अनुमतियां हों.

अपने ऐप्लिकेशन के मेनिफ़ेस्ट में अनुमतियों की जानकारी देना

अनुमतियों का अनुरोध करने से पहले, आपको उन्हें अपने ऐप्लिकेशन के मेनिफ़ेस्ट में एलान करना होगा. इसके लिए, <uses-permission> एलिमेंट का इस्तेमाल करें. यह एलान एक जैसा ही रहता है, भले ही अनुमति किसी फ़ोन के लिए हो या एआई-ग्लासेस की किसी सुविधा के लिए. हालाँकि, आपको अब भी चश्मे के लिए खास तौर पर बनाए गए हार्डवेयर या सुविधा के लिए साफ़ तौर पर अनुरोध करना होगा.

<manifest ...>
    <!-- Only declare permissions that your app actually needs. In this example,
    we declare permissions for the camera. -->
    <uses-permission android:name="android.permission.CAMERA"/>
    <application ...>
        ...
    </application>
</manifest>

अनुमतियों को लॉन्च करने वाले टूल को रजिस्टर करना

एआई चश्मे के लिए अनुमतियों का अनुरोध करने के लिए, सबसे पहले आपको ProjectedPermissionsResultContract तरीके के साथ ActivityResultLauncher का इस्तेमाल करके, अनुमतियों के लॉन्चर को रजिस्टर करना होगा.

// Register the permissions launcher using the ProjectedPermissionsResultContract.
private val requestPermissionLauncher: ActivityResultLauncher<List<ProjectedPermissionsRequestParams>> =
    registerForActivityResult(ProjectedPermissionsResultContract()) { results ->
        if (results[Manifest.permission.CAMERA] == true) {
            isPermissionDenied = false
            initializeGlassesFeatures()
        } else {
            // Handle permission denial.
            isPermissionDenied = true
        }
    }

कोड के बारे में अहम बातें

  • इस कोड में, ProjectedPermissionsResultContract तरीके का इस्तेमाल करके ActivityResultLauncher बनाया गया है. कॉलबैक को, अनुमति के नामों और उनकी स्थिति का मैप मिलता है.
  • आपको यह बताना होगा कि आपके ऐप्लिकेशन को कौनसी अनुमतियों की ज़रूरत है. जैसे, Manifest.permission.CAMERA या Manifest.permission.RECORD_AUDIO.

अनुरोध फ़ंक्शन बनाना

इसके बाद, आपको एक ऐसा फ़ंक्शन बनाना होगा जो रनटाइम के दौरान उपयोगकर्ता से अनुमतियों का अनुरोध करने के लिए, आपके ऐप्लिकेशन के अनुमतियां लॉन्चर का इस्तेमाल करता हो.

private fun requestHardwarePermissions() {
    val params = ProjectedPermissionsRequestParams(
        permissions = listOf(Manifest.permission.CAMERA),
        rationale = "Camera access is required to overlay digital content on your physical environment."
    )
    requestPermissionLauncher.launch(listOf(params))
}

कोड के बारे में अहम बातें

  • requestHardwarePermissions फ़ंक्शन, ProjectedPermissionsRequestParams ऑब्जेक्ट बनाता है. इस ऑब्जेक्ट में, आपके ऐप्लिकेशन को ज़रूरी अनुमतियों की सूची और उपयोगकर्ता को दिखने वाली वजह शामिल होती है. इन अनुमतियों की ज़रूरत क्यों है, इस बारे में साफ़ तौर पर और कम शब्दों में बताएं.
  • लॉन्चर पर launch को कॉल करने से, अनुमति का अनुरोध करने वाले उपयोगकर्ता का फ़्लो ट्रिगर होता है.
  • आपके ऐप्लिकेशन को, लॉन्चर के कॉलबैक में अनुमति देने और अनुमति न देने, दोनों तरह के नतीजों को सही तरीके से हैंडल करना चाहिए.

अनुमतियों की जांच करने वाला फ़ंक्शन बनाना

इसके बाद, आपको एक ऐसा फ़ंक्शन बनाना होगा जो यह जांच कर सके कि उपयोगकर्ता ने आपके ऐप्लिकेशन को अनुमतियां दी हैं या नहीं.

private fun hasCameraPermission(): Boolean {
    return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) ==
            PackageManager.PERMISSION_GRANTED
}

अनुमति के लिए अनुरोध करने का लॉजिक जोड़ना

आखिर में, ऐसा लॉजिक बनाएं जो इन फ़ंक्शन का इस्तेमाल करके, रनटाइम के दौरान अनुमतियों की जांच करे और उनका अनुरोध करे.

if (hasCameraPermission()) {
    initializeGlassesFeatures()
} else {
    requestHardwarePermissions()
}

कोड के बारे में अहम बातें

अनुमति के अनुरोध से जुड़े उपयोगकर्ता फ़्लो को समझना

ProjectedPermissionsResultContract तरीके का इस्तेमाल करके, अनुमति का अनुरोध लॉन्च करने पर, सिस्टम एआई चश्मे और फ़ोन, दोनों पर एक साथ यूज़र फ़्लो शुरू करता है.

अनुमतियों के लिए यूज़र फ़्लो के दौरान, आपके ऐप्लिकेशन और उपयोगकर्ता को ये चीज़ें मिल सकती हैं:

  1. एआई चश्मे पर: प्रोजेक्ट किए गए डिवाइस (चश्मे) पर एक गतिविधि दिखती है. इसमें उपयोगकर्ता को आगे बढ़ने के लिए, अपने फ़ोन पर देखने का निर्देश दिया जाता है.

  2. फ़ोन पर: एक साथ, होस्ट डिवाइस (फ़ोन) पर कोई गतिविधि शुरू होती है. इस स्क्रीन पर, आपके दिए गए तर्क की स्ट्रिंग दिखती है. साथ ही, उपयोगकर्ता को आगे बढ़ने या रद्द करने का विकल्प मिलता है.

  3. फ़ोन पर: अगर उपयोगकर्ता वजह स्वीकार करता है, तो फ़ोन पर Android सिस्टम की अनुमति से जुड़ा बदला हुआ डायलॉग दिखता है. इसमें उपयोगकर्ता को बताया जाता है कि वह एआई चश्मे के डिवाइस के लिए (फ़ोन के लिए नहीं) अनुमति दे रहा है. साथ ही, उपयोगकर्ता के पास अनुमति देने या अनुमति के अनुरोध को अस्वीकार करने का विकल्प होता है.

  4. नतीजा पाना: जब उपयोगकर्ता कोई विकल्प चुन लेता है, तो फ़ोन और एआई चश्मे, दोनों पर चल रही गतिविधियां बंद हो जाती हैं. इसके बाद, आपकी ActivityResultLauncher कॉलबैक को कॉल किया जाता है. इसमें एक मैप होता है. इस मैप में, अनुरोध की गई हर अनुमति के लिए, अनुमति मिलने की स्थिति होती है.