تتبُّع وضع الجهاز باستخدام ARCore for Jetpack XR

أجهزة XR المشمولة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة XR.
سماعات الرأس بنظام الواقع الممتد
نظارات سلكية بنظام الواقع الممتد
نظارات الذكاء الاصطناعي

باستخدام ARCore for Jetpack XR، يمكن لتطبيقك استرداد وضعية الجهاز، أي اتجاهه (الميلان والانحراف والتدوير) وموضعه (الإحداثيات س وص وع) بالنسبة إلى نقطة الأصل في العالم.

تُستخدَم هذه المعلومات لعرض المحتوى الرقمي في العالم الحقيقي أو لتحويل وضع الجهاز إلى وضع جغرافي مكاني من أجل إنشاء بيانات تستند إلى الموقع الجغرافي.

الوصول إلى جلسة

يمكنك الوصول إلى معلومات وضع الجهاز من خلال Jetpack XR Runtime Session، الذي يجب أن ينشئه تطبيقك.

ضبط الجلسة

لا يتم تفعيل معلومات وضع الجهاز تلقائيًا في جلسات XR. لتفعيل تطبيقك من أجل استرداد معلومات وضع الجهاز، اضبط الجلسة على وضع DeviceTrackingMode.LAST_KNOWN:

// Define the configuration object to enable tracking device pose.
val newConfig = session.config.copy(
    deviceTrackingMode = Config.DeviceTrackingMode.LAST_KNOWN
)
// Apply the configuration to the session.
try {
    when (val configResult = session.configure(newConfig)) {
        is SessionConfigureSuccess -> {
            // The session is now configured to track the device's pose.
        }
        else -> {
            // Catch-all for other configuration errors returned using the result class.
        }
    }
} catch (e: UnsupportedOperationException) {
    // Handle configuration failure. For example, if the specific mode is not supported on the current device or API version.
}

لا تتوافق بعض أجهزة XR مع وضع DeviceTrackingMode.LAST_KNOWN. إذا نجح الأمر Session.configure()، يعني ذلك أنّ الجهاز يتيح هذا الوضع.

الحصول على وضع الجهاز

بعد ضبط الجلسة، يمكنك الحصول على وضع الجهاز ضمن نظام الإحداثيات الخاص بالواقع المعزّز باستخدام العنصر ArDevice:

// Get the ArDevice instance
val arDevice = ArDevice.getInstance(session)

// Collect the state to process the device pose
arDevice.state.collect { state ->
      // processDevicePose gets called automatically when a new pose is available.
      processDevicePose(state.devicePose)
}

// Or, get the current device Pose from the AR Device's state.
// This is the device's position and orientation relative to the tracking origin.
val devicePose = ArDevice.getInstance(session).state.value.devicePose

الحصول على ترجمة وتدوير وضع الجهاز

يمثّل Pose الجهاز موضع الجهاز (الترجمة) واتجاهه (الدوران) بالنسبة إلى نقطة الأصل للتتبُّع. استخدِم هذه المعلومات في تطبيقك من أجل تحسين تجربة المستخدمين:

  1. تقديم تعليمات تنقّل دقيقة من الناحية الموضعية: يمكن استخدام البيانات الموضعية لمساعدة المستخدم في تحديد موقعه الجغرافي والتنقّل في محيطه بمساعدة المحتوى الرقمي الذي يتم عرضه فوق الواقع.

  2. محاذاة العالم المتوسطة: يستخدم Geospatial API هذه الوضعية لحساب الموقع الجغرافي.

fun processDevicePose(pose: Pose) {

    // Extract Translation and Rotation
    val translation = pose.translation // Vector3(x, y, z)
    val rotation = pose.rotation // Quaternion (x, y, z, w)

    TODO(/* Use the translation and rotation in your app. */)
}

تحويل وضعية الجهاز إلى وضعية جغرافية مكانية

بعد الحصول على وضع الجهاز، يمكنك الحصول على وضع جغرافي مكاني منه. عند تحويل المحتوى إلى وضع جغرافي مكاني، يتحوّل محتوى الواقع المعزّز من تجربة مؤقتة ومعزولة إلى ميزة دائمة ومتاحة للجميع ومراعية للسياق في العالم الحقيقي.

تعرَّف على كيفية تحويل وضعية جهاز إلى وضعية جغرافية مكانية في مستندات Geospatial API.