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
- Kod,
ProjectedPermissionsResultContractyöntemini kullanarakActivityResultLauncheroluşturur. Geri çağırma, izin adlarının verilen durumlarına ilişkin bir harita alır. - Uygulamanızın hangi izinleri gerektirdiğini belirtmeniz gerekir. Örneğin,
Manifest.permission.CAMERAveyaManifest.permission.RECORD_AUDIO.
İ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
requestHardwarePermissionsişlevi birProjectedPermissionsRequestParamsnesnesi 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
launchiş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
- Kullanıcı, uygulamanıza gerekli izinleri daha önce vermişse uygulamanızın deneyimini başlatmak için
initializeGlassesFeaturesişlevi çağrılır. Bu işlev, yapay zeka gözlükleri için uygulamanızın etkinliğinin bir parçası olarak tanımlanır.
İ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:
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.
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.
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.
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
ActivityResultLaunchergeri aramanız çağrılır.