اخبار محصول

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

‫۵ دقیقه خواندن

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

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

برای اینکه دسترسی زودرس به سخت‌افزار و منابع برای ساختن تجربه‌های فراگیر و افزوده در دستگاه‌های آینده (مثل عینک‌های صوتی و نمایشگر و Project Aura از XREAL) را برای شما فراهم کنیم، برنامه کاتالیزور توسعه‌دهنده Android XR را معرفی می‌کنیم. بیشتر بدانید و درخواستتان را امروز شروع کنید. 

Building Augmented Experiences for Audio and Display Glasses

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

Jetpack Projected: Device Availability and ProjectedTestRule APIs

کتابخانه Jetpack Projected به پل زدن تجربه‌های برنامه از تلفن به میدان دید کاربر کمک می‌کند. میانای برنامه‌سازی کاربردی دردسترس بودن دستگاه را اضافه کرده‌ایم که وضعیت پوشیدن و سیگنال‌های اتصال را در مقادیر استاندارد Android 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 */ }
        }
    }

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

// 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: Google Sans Flex و مؤلفه‌های جدید

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

  • دسته‌ها: برای گروه‌های بهینه‌شده برای صفحه لمسی طراحی شده است و هربار یک مورد را نشان می‌دهد.
  • تراشه‌های عنوان: دسته‌بندی و بافت را برای کارت‌های محتوا ارائه می‌دهد.
glimmer (1).gif

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

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

Beta Transition & Modern Architecture

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

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
)

همچنین Custom Meshes را به 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,
    )

‫Compose برای واقعیت گسترده: پشتیبانی از glTF بومی

اکنون با  SpatialGltfModel، پشتیبانی glTF بومی را مستقیماً در Compose برای «واقعیت گسترده» داریم. از این مورد همراه با SpatiallGltfModelState برای دسترسی به گره‌ها و پویانمایی‌ها در مدل 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: پیش‌نمایش Geospatial API برای عینک واقعیت گسترده سیمی

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

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

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

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

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

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

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

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

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

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

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

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

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

نویسنده:
ادامه خواندن