باستخدام ARCore for Jetpack XR، يمكن لتطبيقك استرداد وضعية الجهاز، أي اتجاهه (الميل والانحراف والالتفاف) وموضعه (س، ص، ع) بالنسبة إلى نقطة الأصل في العالم.
تُستخدَم هذه المعلومات لعرض المحتوى الرقمي في العالم الحقيقي أو لتحويل وضع الجهاز إلى وضع جغرافي مكاني من أجل إنشاء بيانات تستند إلى الموقع الجغرافي.
الوصول إلى جلسة
يمكنك الوصول إلى معلومات وضع الجهاز من خلال Session Jetpack XR Runtime،
الذي يجب أن ينشئه تطبيقك.
ضبط الجلسة
لا يتم تفعيل معلومات وضع الجهاز تلقائيًا في جلسات XR. لتفعيل تطبيقك من أجل استرداد معلومات وضع الجهاز، اضبط الجلسة على وضع HeadTrackingMode.LAST_KNOWN:
// Define the configuration object to enable tracking device pose.
val newConfig = session.config.copy(
headTrackingMode = Config.HeadTrackingMode.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.
}
لا تتوافق بعض أجهزة الواقع الممتد مع وضع HeadTrackingMode.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 موضع الجهاز (الترجمة) واتجاهه (الدوران) بالنسبة إلى نقطة الأصل للتتبُّع. استخدِم هذه المعلومات في تطبيقك لتحسين تجربة المستخدمين:
تقديم تعليمات تنقّل دقيقة من الناحية الموضعية: يمكن استخدام البيانات الموضعية لمساعدة المستخدم في تحديد موقعه الجغرافي والتنقّل في محيطه بمساعدة المحتوى الرقمي الذي يتم عرضه فوق الواقع.
محاذاة العالم المتوسطة: يستخدم 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.