Yapay zeka gözlüğü deneyimi, mevcut Android Activity çerçevesi üzerine kurulmuştur ve yapay zeka gözlüğünün benzersiz yönlerini desteklemek için ek kavramlar içerir. Cihazda tam APK çalıştıran XR başlıklarının aksine, yapay zeka gözlükleri telefonunuzdaki mevcut uygulamada çalışan özel bir etkinlik kullanır. Bu etkinlik, ana cihazdan yapay zeka gözlüğüne yansıtılır.
Uygulamanızın yapay zeka gözlüğü deneyimini oluşturmak için mevcut telefon uygulamanızı yapay zeka gözlüğü için yeni bir yansıtılan Activity oluşturarak genişletirsiniz. Bu etkinlik, yapay zeka gözlüklerindeki uygulamanızın ana başlatma giriş noktası olarak kullanılır. Bu yaklaşım, telefonunuz ve yapay zeka gözlüğü deneyimleriniz arasında iş mantığını paylaşmanıza ve yeniden kullanmanıza olanak tanıdığı için geliştirme sürecini basitleştirir.
Uygulamanızın manifest dosyasında etkinliğinizi beyan edin
Diğer etkinlik türlerinde olduğu gibi, sistemin etkinliğinizi görmesi ve çalıştırması için uygulamanızın manifest dosyasında etkinliğinizi beyan etmeniz gerekir.
<application>
<activity
android:name=".AIGlassesActivity"
android:exported="true"
android:requiredDisplayCategory="xr_projected"
android:label="Example AI Glasses activity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
</application>
Kodla ilgili önemli noktalar
- Bu etkinliğin, bağlı bir cihazdaki donanıma erişmek için tahmini bir bağlam kullanması gerektiğini sisteme bildirmek üzere
android:requiredDisplayCategoryözelliği içinxr_projecteddeğerini belirtir.
Etkinliğinizi oluşturma
Ardından, ekran her açıldığında yapay zeka gözlüğünde bir şeyler gösterebilen küçük bir etkinlik oluşturacaksınız.
/**
* When this activity launches, it stays in the started state.
*/
class AIGlassesActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val projectedWindowManager = ProjectedWindowManager.create(this)
setContent {
GlassesComposeContent {
GlimmerTheme {
TopBarScaffold(modifier = Modifier.background(color = Color.Black)) {
ProjectedDisplayController.create(activity)
.addPresentationModeChangedListener {
presentationModeFlags ->
// Check whether visuals are on or off
val areVisualsOff = !presentationModeFlags.hasPresentationMode(VISUALS_ON)
}
// Conditional UI based on presentation mode.
if (areVisualsOff) {
// Implementation for the when the display is off.
} else {
DisplayUi()
}
}
}
}
}
}
override fun onStart() {
// Do things to make the user aware that this activity is active (for
// example, play audio frequently), when the display is off.
}
override fun onStop() {
// Stop all the data source access.
}
}
Kodla ilgili önemli noktalar
AIGlassesActivity, mobil geliştirmede beklediğiniz gibiComponentActivity'i genişletir.onCreate()içindekisetContentbloğu, etkinlik için Composable UI ağacının kökünü tanımlar.- Etkinliğin
onCreate()yöntemi sırasında kullanıcı arayüzünü başlatır (bkz. tahmini etkinlik yaşam döngüsü). - Jetpack Compose Glimmer kullanarak kullanıcı arayüzü için siyah arka planlı bir
TopBarScaffoldtemel düzen oluşturur.
Composable'ı uygulama
Oluşturduğunuz etkinlik, uygulamanız gereken bir DisplayUi composable işlevine referans veriyor. Aşağıdaki kod, Jetpack Compose Glimmer'ı kullanarak yapay zeka gözlüğünün ekranında metin gösterebilen bir composable tanımlar:
@Composable
fun DisplayUi() {
Box(
modifier = Modifier
.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text("Hello World!")
}
}
Kodla ilgili önemli noktalar
- Daha önce etkinliğinizde tanımladığınız gibi,
DisplayUiişlevi, yapay zeka gözlüğünün ekranı açıkken kullanıcının gördüğü birleştirilebilir içeriği içerir. - Jetpack Compose Glimmer
Textbileşeni, gözlüğün ekranında "Hello World!" metnini gösterir.
Etkinliğinizi başlatma
Temel bir etkinlik oluşturduğunuza göre artık bu etkinliği gözlüğünüzde başlatabilirsiniz. Uygulamanızın gözlüğün donanımına erişebilmesi için etkinliğinizi, aşağıdaki kodda gösterildiği gibi sisteme yansıtılmış bir bağlam kullanmasını söyleyen belirli seçeneklerle başlatması gerekir:
val options = ProjectedContext.createProjectedActivityOptions(context)
val intent = Intent(context, AIGlassesActivity::class.java)
context.startActivity(intent, options.toBundle())
createProjectedActivityOptions() yöntemi, ProjectedContext içinde etkinliğinizi planlanan bir bağlamda başlatmak için gerekli seçenekleri oluşturur.
context parametresi, telefondaki veya gözlükteki bir bağlam olabilir.
Yapay zeka gözlüğünün bağlı olup olmadığını kontrol etme
Etkinliğinizi başlatmadan önce kullanıcının yapay zeka gözlüğünün telefonuna bağlı olup olmadığını belirlemek istiyorsanız ProjectedContext.isProjectedDeviceConnected() yöntemini kullanın. Bu yöntem, bağlantı durumuyla ilgili anlık güncellemeler almak için uygulamanızın gözlemleyebileceği bir Flow<Boolean> döndürür.
Sonraki adımlar
Yapay zeka gözlükleri için ilk etkinliğinizi oluşturduğunuza göre, işlevselliğini genişletebileceğiniz diğer yöntemleri keşfedin:
- Metin okuma özelliğini kullanarak ses çıkışını yönetme
- Otomatik Konuşma Tanıma'yı kullanarak ses girişini işleme
- Jetpack Compose Glimmer ile kullanıcı arayüzü oluşturma
- Yapay zeka gözlüğünün donanımına erişme