Ses gözlüğü ve ekran gözlüğü için donanım izinleri isteme

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

Tıpkı telefonda olduğu gibi, ses gözlükleri ve ekran gözlüklerindeki 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 gözlüğe özgü bir özellik için olsa da aynı kalır ancak gözlüğe özgü donanım veya işlev 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

Ses gözlüğü ve ekran gözlüğü için izin istemek üzere önce izin başlatıcıyı kaydetmek için ProjectedPermissionsResultContract yöntemiyle ActivityResultLauncher 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 gözlük hem de telefon genelinde koordineli bir kullanıcı akışı başlatır.

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

  1. Gözlükte: Yansıtılan cihazda (gözlük) bir etkinlik görünür ve kullanıcıya devam etmek için telefonuna bakması talimatı verilir.

  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 gözlük 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 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.