Yapay zeka gözlükleri için ilk etkinliğinizi oluşturma

Geçerli XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
AI Glasses

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çin xr_projected değ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 gibi ComponentActivity'i genişletir.
  • onCreate() içindeki setContent bloğ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 TopBarScaffold temel 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, DisplayUi iş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 Text bileş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: