בקשת הרשאות חומרה למשקפי AI

מכשירי XR שמתאימים לשימוש
ההנחיות האלה יעזרו לכם ליצור חוויות למכשירי XR מהסוגים הבאים.
משקפי AI

בדיוק כמו בטלפון, כדי לגשת לחומרה רגישה כמו המצלמה והמיקרופון במשקפי AI, צריך לקבל הסכמה מהמשתמש. ההרשאות האלה נחשבות להרשאות ספציפיות למשקפיים, והאפליקציה צריכה לבקש אותן בזמן הריצה, גם אם כבר יש לה את ההרשאות התואמות בטלפון.

הצהרה על ההרשאות במניפסט של האפליקציה

לפני שמבקשים הרשאות, צריך להצהיר עליהן בקובץ המניפסט של האפליקציה באמצעות האלמנט <uses-permission>. ההצהרה הזו נשארת זהה בין אם ההרשאה היא לתכונה ספציפית בטלפון או במשקפיים עם AI, אבל עדיין צריך לבקש אותה באופן מפורש עבור חומרה או פונקציונליות ספציפיות למשקפיים.

<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>

רישום של כלי ההרשאות

כדי לבקש הרשאות למשקפי AI, קודם משתמשים ב-ActivityResultLauncher עם ה-method‏ 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
        }
    }

מידע חשוב על הקוד

יצירת פונקציית הבקשה

בשלב הבא, תיצרו פונקציה שמשתמשת בכלי להפעלת ההרשאות של האפליקציה כדי לבקש את ההרשאות מהמשתמש בזמן הריצה.

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 ב-Launcher מפעילה את תהליך בקשת ההרשאה מהמשתמש.
  • האפליקציה צריכה לטפל בצורה חלקה בתוצאות של אישור ודחייה בקריאה החוזרת של מרכז האפליקציות.

יצירת פונקציה לבדיקת הרשאות

בשלב הבא, תיצרו פונקציה שיכולה לבדוק אם המשתמש העניק הרשאות לאפליקציה.

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

הוספת הלוגיקה של בקשת ההרשאה

לבסוף, יוצרים את הלוגיקה שמשתמשת בפונקציות האלה כדי לבדוק את ההרשאות ולבקש אותן בזמן הריצה.

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

מידע חשוב על הקוד

הסבר על תהליך בקשת ההרשאה

כשמפעילים בקשת הרשאה באמצעות השיטה ProjectedPermissionsResultContract, המערכת מתחילה מסלול משתמש מתואם גם במשקפי ה-AI וגם בטלפון.

במהלך תהליך ההרשאות, אלה הפעולות שצפויות באפליקציה ובצד המשתמש:

  1. במשקפי ה-AI: פעילות מופיעה במכשיר החזוי (המשקפיים), עם הוראה למשתמש להסתכל בטלפון כדי להמשיך.

  2. בטלפון: במקביל, פעילות מופעלת במכשיר המארח (הטלפון). במסך הזה מוצג הנימוק שסיפקתם, והמשתמש יכול להמשיך או לבטל.

  3. בטלפון: אם המשתמש מאשר את ההסבר, בטלפון תופיע תיבת דו-שיח של הרשאות מערכת Android שעברה שינוי. בתיבה יוסבר למשתמש שהוא מעניק את ההרשאה למכשיר משקפי AI (ולא לטלפון), והמשתמש יוכל לאשר או לדחות את ההרשאה באופן רשמי.

  4. קבלת התוצאה: אחרי שהמשתמש בוחר את התשובה הסופית, הפעילויות בטלפון ובמשקפי ה-AI נסגרות. לאחר מכן, מתבצעת קריאה חוזרת (callback) אל ActivityResultLauncher עם מפה שמכילה את הסטטוס של כל הרשאה שהתבקשה.