اخبار محصول

به‌روزرسانی‌های SDK اندروید XR: معرفی پیش‌نمایش توسعه‌دهندگان ۴

مطالعه ۵ دقیقه‌ای
Amy Zeppenfeld و Stevan Silva

امروز ما مفتخریم که چهارمین پیش‌نمایش توسعه‌دهندگان از کیت توسعه نرم‌افزار اندروید XR را منتشر کنیم و تمرکز خود را بر یکپارچه‌سازی توسعه بین دستگاهی برای هدست‌ها، عینک‌های XR سیمی و عینک‌های هوشمند ادامه دهیم. برای حفظ سادگی پلتفرم خود، نامگذاری توصیفی‌تری را برای فرم‌فکتورهای خود در نظر گرفته‌ایم، به طوری که عینک‌های هوش مصنوعی اکنون به عینک‌های صوتی و عینک‌های هوش مصنوعی به عینک‌های نمایشگر تبدیل شده‌اند و این تغییرات از امروز در مستندات ما ظاهر می‌شوند.

این نسخه شامل به‌روزرسانی‌هایی است که به شما کمک می‌کند تا تجربیات فوق‌العاده‌ای برای دستگاه‌های XR بسازید، تجربیات فراگیر عمیق‌تری را در هدست‌های XR فعال کنید و مسیر ایجاد تجربیات افزوده را در عینک‌های صوتی و تصویری ساده‌تر کنید. همچنین، کتابخانه‌های اصلی ما - از جمله XR Runtime، Jetpack SceneCore و ARCore برای Jetpack XR - به زودی رسماً به نسخه بتا منتقل می‌شوند!

برای دسترسی زودهنگام شما به سخت‌افزار و منابع لازم برای ساخت تجربیات فراگیر و افزوده در دستگاه‌های آینده - مانند عینک‌های نمایشگر و صوتی و پروژه Aura شرکت XREAL - ما برنامه کاتالیزور توسعه‌دهندگان اندروید XR را معرفی می‌کنیم. همین امروز اطلاعات بیشتری کسب کنید و درخواست خود را شروع کنید .

ساخت تجربیات افزوده برای عینک‌های صوتی و تصویری

پیش‌نمایش توسعه‌دهندگان ۴ با شروع از کتابخانه‌های ما برای تجربیات افزوده، APIهای جدیدی را معرفی می‌کند که به شما در ایجاد و آزمایش برنامه‌هایتان کمک می‌کنند.

Jetpack Projected: رابط‌های برنامه‌نویسی کاربردی (API) مربوط به Device Availability و ProjectedTestRule

کتابخانه Jetpack Projected به انتقال تجربیات برنامه از تلفن به میدان دید کاربر کمک می‌کند. ما API دسترسی به دستگاه را اضافه کرده‌ایم که وضعیت سایش و سیگنال‌های اتصال را در مقادیر استاندارد Lifecycle.State اندروید ادغام می‌کند. این به شما امکان می‌دهد رفتار برنامه‌های خود را بر اساس اینکه آیا دستگاه پوشیده شده است یا خیر، تنظیم کنید.

val xrDevice = XrDevice.getCurrentDevice(projectedContext)

// Observe the device lifecycle flow
xrDevice.getLifecycle().currentStateFlow
    .collect { state ->
        when (state) {
            Lifecycle.State.STARTED -> { /* Device is available (worn) */ }
            Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ }
            Lifecycle.State.DESTROYED -> { /* Device is DISCONNECTED */ }
        }
    }

برای ساده‌سازی تست، رابط برنامه‌نویسی کاربردی (API) جدید ProjectedTestRule در مصنوع تستِ پیش‌بینی‌شده، راه‌اندازی محیط‌های تستِ پیش‌بینی‌شده را خودکار می‌کند. این به شما کمک می‌کند تا تست‌های واحد تمیز و قابل اعتمادی بدون کد تکراری بنویسید.

// from the 'androidx.xr.projected:projected-testing:1.0.0-alpha07' artifact
@get:Rule
val projectedTestRule = ProjectedTestRule()

@Test
fun testProjectedContextInitialization() {
    // by default, ProjectedTestRule automatically creates and connects
    // a projected device before each test
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    // assert the projected context is successfully initialized
    assertThat(projectedContext).isNotNull()
}

Jetpack Compose Glimmer: گوگل سنس فلکس و اجزای جدید

کتابخانه رابط کاربری ما برای عینک‌های نمایشی، Jetpack Compose Glimmer، اکنون شامل Google Sans Flex برای بهبود خوانایی در نمایشگرهای نوری شفاف است. ما همچنین چندین مؤلفه تعاملی اضافه کرده‌ایم:

  • پشته‌ها : برای گروه‌های بهینه‌سازی‌شده برای تاچ‌پد طراحی شده است و هر بار یک مورد را نشان می‌دهد.
  • تراشه‌های عنوان : دسته‌بندی و زمینه‌سازی برای کارت‌های محتوا را فراهم می‌کند.
درخشش (1).gif

ساخت تجربیات فراگیر برای هدست‌های XR و عینک‌های XR سیمی

اگر به دنبال ایجاد تجربیات کاملاً فراگیر برای هدست‌های XR و عینک‌های XR سیمی هستید، ما چندین به‌روزرسانی بزرگ داریم.

معماری مدرن و گذار بتا

ویژگی‌های XR Runtime، Jetpack SceneCore و ARCore برای درک Jetpack XR ( نقشه‌های عمق ، ردیابی چشم/دست ، تست ضربه و لنگرهای فضایی ) به زودی به نسخه بتا منتقل می‌شوند، بنابراین ما APIهای Jetpack XR را ساده‌سازی کرده‌ایم. ما بسته‌های قدیمی Guava و RxJava3 را به نفع یک معماری مدرن و مبتنی بر Kotlin حذف کرده‌ایم.

Jetpack SceneCore: glTF و مش‌های سفارشی

ما با افزودن قابلیت تنظیم دقیق مدل‌های سه‌بعدی و دسترسی به گره‌های خاص با یک مدل سه‌بعدی، در حال گسترش قابلیت‌های مدل سه‌بعدی هستیم. با استفاده از GltfModelNode ، می‌توانید ویژگی‌هایی مانند حالت، مواد و بافت‌ها را تغییر دهید و حتی انیمیشن‌ها را برای گره‌های خاص اجرا کنید.

// Create a new PBR material
pbrMaterial = KhronosPbrMaterial.create(
    session = xrSession,
    alphaMode = AlphaMode.OPAQUE
)

// Load a texture.
val texture = Texture.create(
    session = xrSession,
    path = Path("textures/texture_name.png")
)

// Apply the texture and configure occlusion to define how the material handles ambient lighting.
pbrMaterial.setOcclusionTexture(
    texture = texture,
    strength = 0.5f
)

// Access the hierarchy of nodes within the model entity.
val entityNodes = entity.nodes

// Find the specific node to apply the material override.
val myEntityNode = entityNodes.find { it.name == "node_name" }

// Apply the PBR material to the node.
myEntityNode?.setMaterialOverride(
   material = newMaterial
)

ما همچنین مش‌های سفارشی را به SceneCore می‌آوریم. مش‌های سفارشی به شما امکان می‌دهند هندسه را به صورت برنامه‌نویسی در حال اجرا بسازید، که برای ایجاد مدل‌های سه‌بعدی سفارشی ایده‌آل است. این ویژگی به صورت آزمایشی راه‌اندازی خواهد شد، بنابراین آن را امتحان کنید و نظرات خود را با ما در میان بگذارید!

// Create the mesh
val roadMesh =
    CustomMesh.BuilderFromMeshData(session, roadVertexLayout)
        .addVertexData(ByteBufferRegion(roadDataBuffer, 0, vertexDataSize))
        .setIndexData(ByteBufferRegion(roadDataBuffer, vertexDataSize, indexDataSize))
        .setTopology(MeshSubsetTopology.TRIANGLES)
        .build()

// Define the material
val roadMaterial = KhronosPbrMaterial.create(session, AlphaMode.OPAQUE)

// Instantiate the entity using the custom mesh and material
val roadEntity =
    MeshEntity.create(
        session,
        roadMesh,
        listOf(roadMaterial),
        pose = roadPose,
    )

نوشتن برای XR: پشتیبانی بومی glTF

اکنون ما مستقیماً در Compose for XR با SpatialGltfModel از glTF بومی پشتیبانی می‌کنیم. از این به همراه SpatialGltfModelState برای دسترسی به گره‌ها و انیمیشن‌ها در مدل glTF استفاده کنید، یا از آنها برای افزودن بافت‌ها و مواد به مدل‌های سه‌بعدی خود استفاده کنید.

val myGltfModelState = rememberSpatialGltfModelState(
        source = SpatialGltfModelSource.fromPath(
            Paths.get("models/my_animated_model.glb")
        )
    )

    val myGltfAnimation =
        myGltfModelState.animations.find { it.name == "animation_name" }

    DisposableEffect(myGltfAnimation) {
        myGltfAnimation?.loop()

        onDispose {
            myGltfAnimation?.stop()
        }
    }

    SpatialGltfModel(state = myGltfModelState, modifier = modifier)

ARCore برای Jetpack XR: پیش‌نمایش API مکانی برای عینک‌های XR سیمی

ما همچنین پیش‌نمایش اولیه‌ای از API جغرافیایی برای عینک‌های XR سیمی در ARCore برای Jetpack XR ارائه می‌دهیم. این به‌روزرسانی امکان اتصال دقیق محتوای دیجیتالی مرتبط با مکان‌های دنیای واقعی را در بیش از ۸۷ کشور فراهم می‌کند.

با ترکیب سیستم موقعیت‌یابی بصری (VPS) ARCore با قابلیت‌های استدلال و صوتی Gemini Live API، می‌توانید تجربیات آگاهانه‌ای ایجاد کنید که هم موقعیت مکانی و هم موقعیت کاربر شما را درک می‌کند. تصور کنید که یک تور پیاده‌روی همه‌جانبه و هدایت‌شده توسط هوش مصنوعی می‌سازید که توضیحات صوتی بلادرنگ از مکان‌های اطراف ارائه می‌دهد و اطلاعات دیجیتال را به طور یکپارچه با محیط فیزیکی ترکیب می‌کند.

ساختن آینده را از همین امروز شروع کنید

اکنون زمان فوق‌العاده‌ای برای توسعه برای اندروید XR است. با انتشار نسخه بتای کیت توسعه نرم‌افزار Jetpack XR و مجموعه‌ای قدرتمند از ابزارهای جدید در دسترس شما، هر یک از حوزه‌های زیر را بررسی کنید تا تجربیات برنامه خود را برای XR آماده کنید!

مستندات را بخوانید، نمونه‌ها را بررسی کنید و آزمایش‌های XR را بررسی کنید

برای راهنماهای فنی کامل، مرجع API و دستورالعمل‌های راه‌اندازی شبیه‌ساز جدید، به سایت رسمی توسعه‌دهندگان اندروید مراجعه کنید. از نمونه‌ها و آزمایش‌های ما الهام بگیرید. ببینید چگونه از این APIها برای ساخت طرح‌بندی‌های فضایی فراگیر، بارگذاری مدل‌های سه‌بعدی، بررسی صدای فضایی و موارد دیگر استفاده کرده‌ایم!

بررسی کنید چه چیزهایی برای موتورهای بازی جدید است

ما پشتیبانی رسمی از Unreal Engine و Godot را اضافه کرده‌ایم و دو ابزار جدید برای تسریع توسعه برای Android XR با Unity و Android XR Interaction Framework راه‌اندازی کرده‌ایم. و بر اساس بازخورد شما، ما Android XR Engine Hub را معرفی می‌کنیم تا به شما امکان دهیم تجربیات خود را مستقیماً از موتور مورد نظر خود اجرا کنید.

برای برنامه کاتالیزور توسعه‌دهندگان اندروید XR درخواست دهید

فرصت خود را برای ساخت جدیدترین سخت‌افزار اندروید XR از دست ندهید. همین امروز برای دسترسی به سخت‌افزارهای پیش‌عرضه، از جمله نمونه اولیه عینک‌های صوتی و تصویری ما و پروژه Aura شرکت XREAL، درخواست دهید.

بیشتر بدانید و همین امروز درخواست دهید

مشتاقانه منتظر دیدن تجربیات شگفت‌انگیز XR شما هستیم، چرا که به سمت عرضه دستگاه‌های اندروید XR بیشتر در اواخر امسال حرکت می‌کنیم!

این اطلاعیه و تمام به‌روزرسانی‌های Google I/O 2026 را در io.google بررسی کنید.

نوشته شده توسط:

ادامه مطلب