Pengalaman kacamata AI dibangun di atas framework ActivityAndroid API yang ada dan mencakup konsep tambahan untuk mendukung aspek unik kacamata AI. Tidak seperti headset XR yang menjalankan APK lengkap di perangkat, kacamata AI menggunakan
aktivitas khusus yang berjalan dalam aplikasi yang ada di ponsel Anda. Aktivitas ini
diproyeksikan dari perangkat host ke kacamata AI.
Untuk membuat pengalaman kacamata AI aplikasi Anda, perluas aplikasi ponsel yang ada dengan membuat Activity baru yang diproyeksikan untuk kacamata AI. Aktivitas ini berfungsi
sebagai titik entri peluncuran utama untuk aplikasi Anda di kacamata AI. Pendekatan ini
menyederhanakan pengembangan karena Anda dapat membagikan dan menggunakan kembali logika bisnis antara
pengalaman kacamata AI dan ponsel Anda.
Mendeklarasikan aktivitas Anda dalam manifes aplikasi
Sama seperti jenis aktivitas lainnya, Anda perlu mendeklarasikan aktivitas dalam file manifes aplikasi agar sistem dapat melihat dan menjalankannya.
<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>
Poin penting tentang kode
- Menentukan
xr_projecteduntuk atributandroid:requiredDisplayCategoryuntuk memberi tahu sistem bahwa aktivitas ini harus menggunakan konteks yang diproyeksikan untuk mengakses hardware dari perangkat yang terhubung.
Buat aktivitas Anda
Selanjutnya, Anda akan membuat aktivitas kecil yang dapat menampilkan sesuatu di kacamata AI setiap kali layar diaktifkan.
/**
* 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.
}
}
Poin penting tentang kode
AIGlassesActivitymemperluasComponentActivity, seperti yang Anda harapkan dalam pengembangan aplikasi untuk platform seluler.- Blok
setContentdalamonCreate()menentukan root hierarki UI Composable untuk aktivitas. - Menginisialisasi UI selama metode
onCreate()aktivitas (lihat siklus proses aktivitas yang diproyeksikan). - Menyiapkan tata letak dasar
TopBarScaffolddengan latar belakang hitam untuk UI menggunakan Jetpack Compose Glimmer.
Mengimplementasikan composable
Aktivitas yang Anda buat mereferensikan fungsi composable DisplayUi yang
perlu Anda terapkan. Kode berikut menggunakan Jetpack Compose Glimmer untuk
menentukan composable yang dapat menampilkan beberapa teks di layar kacamata AI:
@Composable
fun DisplayUi() {
Box(
modifier = Modifier
.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text("Hello World!")
}
}
Poin penting tentang kode
- Seperti yang Anda tentukan dalam aktivitas sebelumnya, fungsi
DisplayUimencakup konten composable yang dilihat pengguna saat layar kacamata AI aktif. - Komponen Glimmer
TextJetpack Compose menampilkan teks "Hello World!" ke layar kacamata.
Mulai aktivitas Anda
Setelah membuat aktivitas dasar, Anda dapat meluncurkannya ke kacamata Anda. Untuk mengakses hardware kacamata, aplikasi Anda harus memulai aktivitas dengan opsi tertentu yang memberi tahu sistem untuk menggunakan konteks yang diproyeksikan, seperti yang ditunjukkan dalam kode berikut:
val options = ProjectedContext.createProjectedActivityOptions(context)
val intent = Intent(context, AIGlassesActivity::class.java)
context.startActivity(intent, options.toBundle())
Metode createProjectedActivityOptions() di ProjectedContext
membuat opsi yang diperlukan untuk memulai aktivitas Anda dalam konteks yang diproyeksikan.
Parameter context dapat berupa konteks dari perangkat ponsel atau kacamata.
Periksa apakah kacamata AI terhubung
Jika Anda ingin menentukan apakah kacamata AI pengguna terhubung ke
ponselnya sebelum meluncurkan aktivitas Anda, gunakan metode
ProjectedContext.isProjectedDeviceConnected(). Metode ini
menampilkan Flow<Boolean> yang dapat diamati aplikasi Anda untuk mendapatkan update real-time tentang
status koneksi.
Langkah berikutnya
Setelah membuat aktivitas pertama untuk kacamata AI, pelajari cara lain untuk memperluas fungsinya:
- Menangani output audio menggunakan Text to Speech
- Menangani input audio menggunakan Pengenalan Ucapan Otomatis
- Membangun UI dengan Glimmer Jetpack Compose
- Mengakses hardware kacamata AI