وكما هو الحال على الهاتف، يتطلّب الوصول إلى الأجهزة الحسّاسة، مثل الكاميرا والميكروفون، على نظارات الذكاء الاصطناعي موافقة صريحة من المستخدم. تُعدّ هذه الأذونات أذونات خاصة بالنظارات، ويجب أن يطلبها تطبيقك في وقت التشغيل، حتى إذا كان لديه الأذونات المقابلة على الهاتف.
تضمين الأذونات في بيان تطبيقك
قبل طلب الأذونات، يجب الإفصاح عنها في ملف البيان
الخاص بتطبيقك باستخدام العنصر <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>
تسجيل أداة تشغيل الأذونات
لطلب أذونات لنظارات الذكاء الاصطناعي، عليك أولاً استخدام
ActivityResultLauncher مع طريقة
ProjectedPermissionsResultContract لتسجيل مشغّل
الأذونات.
// 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 } }
النقاط الرئيسية حول الرمز
- ينشئ الرمز
ActivityResultLauncherباستخدام الطريقةProjectedPermissionsResultContract. يتلقّى إجراء الاستدعاء خريطة لأسماء الأذونات وحالاتها الممنوحة. - عليك تحديد الأذونات التي يتطلّبها تطبيقك، مثل
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() }
النقاط الرئيسية حول الرمز
- إذا كان المستخدم قد منح تطبيقك الأذونات المطلوبة، سيتم استدعاء الدالة
initializeGlassesFeaturesلتهيئة تجربة تطبيقك. يتم تعريف هذه الوظيفة على أنّها جزء من نشاط تطبيقك لنظارات الذكاء الاصطناعي.
فهم مسار المستخدم لطلب الحصول على إذن
عند إرسال طلب للحصول على إذن باستخدام طريقة
ProjectedPermissionsResultContract، يبدأ النظام تجربة مستخدم منسَّقة على كلّ من نظارات الذكاء الاصطناعي والهاتف.
في ما يلي ما يمكن أن يتوقّعه تطبيقك والمستخدم أثناء مسار المستخدِم الخاص بالأذونات:
على نظارات الذكاء الاصطناعي: يظهر نشاط على الجهاز المعروض (النظارات) يطلب من المستخدم النظر إلى هاتفه لمواصلة العملية.
على الهاتف: في الوقت نفسه، يتم تشغيل نشاط على الجهاز المضيف (الهاتف). تعرض هذه الشاشة سلسلة السبب التي قدّمتها وتمنح المستخدم خيار المتابعة أو الإلغاء.
على الهاتف: إذا وافق المستخدم على السبب، سيظهر على الهاتف مربّع حوار معدَّل خاص بأذونات نظام Android يوضّح للمستخدم أنّه يمنح الإذن لجهاز النظارات بالذكاء الاصطناعي (وليس للهاتف)، ويمكن للمستخدم منح الإذن أو رفضه بشكل رسمي.
تلقّي النتيجة: بعد أن يتخذ المستخدم قراره النهائي، يتم إغلاق الأنشطة على كل من الهاتف ونظارات الذكاء الاصطناعي. بعد ذلك، يتم استدعاء دالة
ActivityResultLauncherرد الاتصال مع خريطة تحتوي على حالة الإذن الممنوح لكل إذن مطلوب.