تجربه عینک هوش مصنوعی بر اساس API موجود در چارچوب Activity اندروید ساخته شده است و شامل مفاهیم اضافی برای پشتیبانی از جنبههای منحصر به فرد عینکهای هوش مصنوعی است. برخلاف هدستهای XR که یک APK کامل را روی دستگاه اجرا میکنند، عینکهای هوش مصنوعی از یک فعالیت اختصاصی استفاده میکنند که در برنامه موجود تلفن شما اجرا میشود. این فعالیت از دستگاه میزبان به عینک هوش مصنوعی منتقل میشود.
برای ایجاد تجربه عینک هوش مصنوعی برنامه خود، شما برنامه تلفن موجود خود را با ایجاد یک Activity جدید پیشبینیشده برای عینک هوش مصنوعی گسترش میدهید. این Activity به عنوان نقطه ورود اصلی راهاندازی برای برنامه شما در عینک هوش مصنوعی عمل میکند. این رویکرد توسعه را ساده میکند زیرا میتوانید منطق کسبوکار را بین تجربیات تلفن و عینک هوش مصنوعی خود به اشتراک بگذارید و دوباره استفاده کنید.
فعالیت خود را در مانیفست برنامه خود اعلام کنید
درست مانند سایر انواع اکتیویتیها، شما باید اکتیویتی خود را در فایل مانیفست برنامه خود تعریف کنید تا سیستم آن را ببیند و اجرا کند.
<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>
نکات کلیدی در مورد کد
-
xr_projectedبرای ویژگیandroid:requiredDisplayCategoryمشخص میکند تا به سیستم بگوید که این فعالیت باید از یک زمینهی پیشبینیشده برای دسترسی به سختافزار از یک دستگاه متصل استفاده کند.
فعالیت خود را ایجاد کنید
در مرحله بعد، یک فعالیت کوچک ایجاد خواهید کرد که میتواند هر زمان که صفحه نمایش روشن میشود، چیزی را روی عینک هوش مصنوعی نمایش دهد.
/**
* 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.
}
}
نکات کلیدی در مورد کد
- همانطور که در توسعه موبایل انتظار میرود،
AIGlassesActivityازComponentActivityارثبری میکند. - بلوک
setContentدرونonCreate()ریشه درخت رابط کاربری Composable را برای اکتیویتی تعریف میکند. - رابط کاربری را در طول متد
onCreate()مربوط به اکتیویتی مقداردهی اولیه میکند (به چرخه حیات اکتیویتی پیشبینیشده مراجعه کنید). - با استفاده از Jetpack Compose Glimmer ، یک طرح پایه
TopBarScaffoldبا پسزمینه مشکی برای رابط کاربری تنظیم میکند.
پیادهسازی composable
اکتیویتی که شما ایجاد کردهاید به یک تابع قابل ترکیب DisplayUi اشاره دارد که باید آن را پیادهسازی کنید. کد زیر از Jetpack Compose Glimmer برای تعریف یک تابع قابل ترکیب استفاده میکند که میتواند متنی را روی صفحه نمایش عینک هوش مصنوعی نمایش دهد:
@Composable
fun DisplayUi() {
Box(
modifier = Modifier
.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text("Hello World!")
}
}
نکات کلیدی در مورد کد
- همانطور که قبلاً در اکتیویتی خود تعریف کردید، تابع
DisplayUiشامل محتوای قابل ترکیبی است که کاربر هنگام روشن بودن صفحه نمایش عینک هوش مصنوعی میبیند. - کامپوننت Jetpack Compose Glimmer
Textمتن «سلام دنیا!» را روی نمایشگر عینک نمایش میدهد.
فعالیت خود را شروع کنید
اکنون که یک اکتیویتی پایه ایجاد کردهاید، میتوانید آن را روی عینک خود اجرا کنید. برای دسترسی به سختافزار عینک، برنامه شما باید اکتیویتی شما را با گزینههای خاصی که به سیستم میگوید از یک زمینهی پیشبینیشده استفاده کند، همانطور که در کد زیر نشان داده شده است، آغاز کند:
val options = ProjectedContext.createProjectedActivityOptions(context)
val intent = Intent(context, AIGlassesActivity::class.java)
context.startActivity(intent, options.toBundle())
متد createProjectedActivityOptions() در ProjectedContext گزینههای لازم برای شروع activity شما در یک context پیشبینیشده را تولید میکند. پارامتر context میتواند context از تلفن یا دستگاه عینک باشد.
بررسی کنید که آیا عینکهای هوش مصنوعی متصل هستند یا خیر
اگر میخواهید قبل از اجرای اکتیویتی خود، مشخص کنید که آیا عینک هوش مصنوعی کاربر به تلفن همراهش متصل است یا خیر، از متد ProjectedContext.isProjectedDeviceConnected() استفاده کنید. این متد یک Flow<Boolean> برمیگرداند که برنامه شما میتواند آن را مشاهده کند تا بهروزرسانیهای بلادرنگ در مورد وضعیت اتصال را دریافت کند.
مراحل بعدی
حالا که اولین فعالیت خود را برای عینک هوش مصنوعی ایجاد کردهاید، روشهای دیگری را که میتوانید عملکرد آن را گسترش دهید، بررسی کنید:
- مدیریت خروجی صدا با استفاده از تبدیل متن به گفتار
- مدیریت ورودی صدا با استفاده از تشخیص خودکار گفتار
- ساخت رابط کاربری با Jetpack Compose Glimmer
- دسترسی به سختافزار عینکهای هوش مصنوعی