درخواست مجوزهای سخت‌افزاری برای عینک‌های هوش مصنوعی

دستگاه‌های XR قابل اجرا
این راهنما به شما کمک می‌کند تا برای این نوع دستگاه‌های 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>

راه‌انداز مجوزها را ثبت کنید

برای درخواست مجوز برای عینک‌های هوش مصنوعی، ابتدا از 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
        }
    }

نکات کلیدی در مورد کد

تابع درخواست را ایجاد کنید

در مرحله بعد، تابعی ایجاد خواهید کرد که از لانچر مجوزهای برنامه شما برای درخواست مجوزها از کاربر در زمان اجرا استفاده می‌کند.

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. در تلفن : اگر کاربر منطق را بپذیرد، یک پنجره‌ی مجوز سیستم اندروید اصلاح‌شده روی تلفن ظاهر می‌شود که به کاربر می‌گوید مجوز را برای دستگاه عینک هوش مصنوعی (نه تلفن) اعطا می‌کند و کاربر می‌تواند رسماً مجوز را اعطا یا رد کند.

  4. دریافت نتیجه : پس از اینکه کاربر انتخاب نهایی خود را انجام داد، فعالیت‌های روی گوشی و عینک هوش مصنوعی رد می‌شوند. سپس تابع فراخوانی ActivityResultLauncher شما با نقشه‌ای حاوی وضعیت اعطا شده برای هر مجوز درخواستی فراخوانی می‌شود.