يمكن أن تتغيّر الإمكانات المكانية عندما يتفاعل المستخدمون مع تطبيقك أو النظام، أو يمكن أن يغيّرها تطبيقك نفسه، على سبيل المثال، الانتقال إلى "المساحة الرئيسية" أو "المساحة الكاملة". لتجنُّب حدوث مشاكل، يجب أن يتحقّق تطبيقك من الإمكانات المكانية لتحديد واجهات برمجة التطبيقات المتوافقة مع البيئة الحالية.
التحقّق من الإمكانات المكانية باستخدام Jetpack Compose لتطبيقات الواقع المعزّز والواقع الافتراضي
ينشئ Jetpack Compose لأجهزة الواقع المعزّز عنصر Composition Local للتحقّق من ميزات الواقع المكاني. استخدِم هذا الخيار للتحقّق مما إذا كانت واجهة المستخدم المكانية أو الصوت المكاني أو البيئات أو العرض المباشر أو المحتوى الثلاثي الأبعاد مفعَّلة.
يمكنك استخدام LocalSpatialCapabilities.current
للتحقّق مما إذا كانت الإمكانات المكانية التالية متاحة حاليًا:
-
isSpatialUiEnabled
: يشير إلى ما إذا كان التطبيق يمكنه إنشاء عناصر واجهة مستخدم مكانية (مثلSpatialPanel
). -
isContent3dEnabled
: تشير هذه السمة إلى ما إذا كان بإمكان التطبيق إنشاء أجسام ثلاثية الأبعاد. -
isAppEnvironmentEnabled
: يشير إلى ما إذا كان بإمكان التطبيق ضبط البيئة. -
isPassthroughControlEnabled
: يشير إلى ما إذا كان بإمكان التطبيق التحكّم في حالة السماح بالمرور. -
isSpatialAudioEnabled
: يشير إلى ما إذا كان التطبيق قد يستخدم ميزة "الصوت المكاني".
يوضّح المثال التالي كيفية التحقّق مما إذا كانت واجهة المستخدم المكانية مفعّلة.
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
Subspace {
SpatialPanel(
modifier = SubspaceModifier
.width(1488.dp)
.fillMaxHeight()
) {
AppContent()
}
}
} else {
AppContent()
}
التحقّق من الإمكانات المكانية باستخدام SceneCore
عند استخدام مكتبة SceneCore، عليك إنشاء
جلسة. بعد إنشاء الجلسة، استخدِم الدالة
getSpatialCapabilities
في الجلسة للاستعلام عن ميزات المعالجة المكانية
المتوفّرة حاليًا.
SPATIAL_CAPABILITY_3D_CONTENT
: يمكن أن ينشئ النشاط محتوًى ثلاثي الأبعاد.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: يمكن للنشاط ضبط بيئته الخاصة.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: يمكن أن يتضمّن النشاط نشاطًا آخر مكانيًا.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: يمكن للنشاط تفعيل ميزة "النقل المباشر" أو إيقافها.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: يمكن أن يستخدم النشاط ميزة "الصوت المكاني".SPATIAL_CAPABILITY_UI
: يمكن للنشاط أن يُنشئ نموذجًا ثلاثي الأبعاد، مثل إضافة لوحة ثلاثية الأبعاد.
يمكنك أيضًا الاشتراك في خدمة تلقّي مكالمة addSpatialCapabilitiesChangedListener
لإعلامك عند تغيُّر ميزات المعالجة العمودية.
val xrSession = Session.create(this)
// Example 1: check if enabling passthrough mode is allowed
if (xrSession.getSpatialCapabilities().hasCapability(
SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL)) {
xrSession.spatialEnvironment.setPassthroughOpacityPreference(0f)
}
// Example 2: Multiple capability flags can be checked simultaneously:
if (xrSession.getSpatialCapabilities().hasCapability(
SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and
SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT)) {
// ...
}
// Example 3: Create a spatialized panel if/when spatialization UI becomes available
xrSession.addSpatialCapabilitiesChangedListener((capabilities) -> {
if (capabilities.hasCapability(SpatialCapabilities.SPATIAL_CAPABILITY_UI)){
Subspace{
SpatialPanel(...)
}
}
});
انظر أيضًا
- إنشاء جلسة
- الانتقال بين HSM وFSM
- إضافة بيئات مكانية إلى تطبيقك
- إضافة نماذج ثلاثية الأبعاد إلى تطبيقك