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
- 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 destekli akıllı gözlük 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 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:
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.
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, yapay zeka destekli akıllı gözlük cihazı 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 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
ActivityResultLaunchergeri aramanız çağrılır.