Yapay zeka gözlükleri için donanım izni isteme

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
Yapay Zeka Gözlükleri

Tıpkı telefonlarda olduğu gibi, yapay zeka destekli akıllı gözlüklerde kamera ve mikrofon gibi hassas donanımlara erişmek için kullanıcının açık izni gerekir. Bunlar gözlüğe özel izinler olarak kabul edilir ve uygulamanız, telefonda ilgili izinlere sahip olsa bile bunları çalışma zamanında istemelidir.

Uygulamanızın manifest dosyasındaki izinleri beyan etme

İzin istemeden önce <uses-permission> öğesini kullanarak izinleri uygulamanızın manifesto dosyasında beyan etmeniz gerekir. Bu beyan, izin telefona veya yapay zeka gözlüğüne özgü bir özelliğe yönelik olsa da aynı kalır ancak gözlüğe özgü donanım veya işlevler için yine de açıkça istemeniz gerekir.

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

İzin başlatıcıyı kaydetme

Yapay zeka destekli akıllı gözlükler için izin istemek üzere önce izin başlatıcıyı kaydetmek için ActivityResultLauncher ile ProjectedPermissionsResultContract yöntemini kullanırsınız.

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

Kodla ilgili önemli noktalar

İstek işlevini oluşturma

Ardından, çalışma zamanında kullanıcıdan izin istemek için uygulamanızın izin başlatıcısını kullanan bir işlev oluşturacaksınız.

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

Kodla ilgili önemli noktalar

  • requestHardwarePermissions işlevi bir ProjectedPermissionsRequestParams nesnesi oluşturur. Bu nesne, uygulamanızın ihtiyaç duyduğu izinlerin listesini ve kullanıcıya yönelik gerekçeyi bir araya getirir. Uygulamanızın bu izinlere neden ihtiyaç duyduğunu açıklayan gerekçeyi net ve kısa tutun.
  • Başlatıcıda launch işlevi çağrıldığında izin isteği kullanıcı akışı tetiklenir.
  • Uygulamanız, başlatıcının geri çağırma işlevinde hem verilen hem de reddedilen sonuçları sorunsuz bir şekilde işlemelidir.

İzin kontrolü işlevini oluşturma

Ardından, kullanıcının uygulamanıza izin verip vermediğini kontrol edebilecek bir işlev oluşturacaksınız.

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

İzin isteği mantığını ekleme

Son olarak, çalışma zamanında izinleri kontrol etmek ve istemek için bu işlevleri kullanan mantığı oluşturun.

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

Kodla ilgili önemli noktalar

İzin isteği kullanıcı akışını anlama

ProjectedPermissionsResultContract yöntemini kullanarak izin isteği başlattığınızda sistem, hem yapay zeka destekli akıllı gözlük hem de telefonda koordineli bir kullanıcı akışı başlatır.

İzinler kullanıcı akışı sırasında uygulamanız ve kullanıcı şunları bekleyebilir:

  1. Yapay zeka destekli akıllı gözlükte: Yansıtılan cihazda (gözlük), kullanıcının devam etmek için telefonuna bakmasını isteyen bir etkinlik gösterilir.

  2. Telefonda: Aynı anda ana makine cihazında (telefon) bir etkinlik başlatılır. Bu ekranda, sağladığınız gerekçe dizesi gösterilir ve kullanıcıya devam etme veya iptal etme seçeneği sunulur.

  3. Telefonda: Kullanıcı gerekçeyi kabul ederse telefonda değiştirilmiş bir Android sistem izni iletişim kutusu gösterilir. Bu iletişim kutusunda, kullanıcının izni telefon için değil, yapay zeka destekli akıllı gözlük cihazı için verdiği belirtilir. Kullanıcı, izni resmi olarak verebilir veya reddedebilir.

  4. Sonucu alma: Kullanıcı son seçimini yaptıktan sonra hem telefondaki hem de yapay zeka destekli akıllı gözlükteki etkinlikler kapatılır. Ardından, istenen her izin için verilen durumu içeren bir haritayla ActivityResultLauncher geri aramanız çağrılır.