Jetpack SceneCore

สร้างและจัดการกราฟฉาก Android XR ด้วยเนื้อหา 3 มิติ
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
19 พฤศจิกายน 2025 - - - 1.0.0-alpha09

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน XR SceneCore คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ แอปหรือโมดูล

Groovy

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha09"

    // Optional dependencies for asynchronous conversions
    implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha09"

    // Use to write unit tests
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha09"
}

Kotlin

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha09")

    // Optional dependencies for asynchronous conversions
    implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha09")

    // Use to write unit tests
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha09")
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์

ความคิดเห็น

ความคิดเห็นของคุณช่วยให้ Jetpack ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา

รุ่น 1.0

เวอร์ชัน 1.0.0-alpha09

19 พฤศจิกายน 2025

ระบบจะถอนการอ้างสิทธิ์androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 เวอร์ชัน 1.0.0-alpha09 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม API สำหรับดึงข้อมูล ScenePose ที่แสดงถึงองค์ประกอบของท่าต้นทางของพื้นที่การรับรู้และท่าที่เกี่ยวข้อง กับต้นทางของพื้นที่การรับรู้ (I5b50a)
  • เพิ่มฟังก์ชัน getGravityAlignedPose แล้ว ท่าทางที่ปรับแนวแรงโน้มถ่วงจะไม่สนใจการหมุนของ Pitch และ Roll (I5ae21)
  • AnchorEntity.State เปลี่ยนประเภทค่าคงที่จาก Ints เป็นประเภทย่อยของ State (Ib0c49)
  • เพิ่ม getChildren() ลงในอินเทอร์เฟซเอนทิตีแล้ว อัปเดตวงจร MainPanelEntity (Ia69d6)

การเปลี่ยนแปลง API

  • เปลี่ยนประเภทค่าคงที่ PointerCaptureComponent.PointerCaptureState จาก Ints เป็นประเภทย่อย PointerCaptureState (Ic888a)
  • Scene.spatialCapabilities ตอนนี้เป็นประเภท Set<SpatialCapability> แทนที่จะเป็นฟิลด์ Int เปลี่ยนชื่อค่าคงที่ SpatialCapability แล้ว (I9c109)
  • SurfaceEntity มีการเปลี่ยนชื่อประเภทค่าคงที่และเปลี่ยนจาก Ints เป็นSurfaceEntityประเภทข้อมูลย่อย (I419ed)
  • SpatializerConstant มีการเปลี่ยนชื่อประเภทค่าคงที่และเปลี่ยนจาก Ints เป็นSpatializerConstantประเภทข้อมูลย่อย (Ia0e18)
  • TextureSampler มีการเปลี่ยนชื่อประเภทค่าคงที่และเปลี่ยนจาก Ints เป็นTextureSamplerประเภทข้อมูลย่อย (I44078)
  • เปลี่ยนประเภทค่าคงที่ SpatialVisibility จาก Ints เป็นประเภทย่อย SpatialVisibility (I70739)
  • ResizeEvent.ResizeState ประเภทค่าคงที่ได้รับการเปลี่ยนชื่อและเปลี่ยนจาก Ints เป็นประเภทResizeStateย่อย (I384d5)
  • InputEvent ประเภทค่าคงที่ได้รับการเปลี่ยนชื่อและเปลี่ยนจาก Ints เป็นการรับค่าจากประเภทที่ครอบคลุมที่เกี่ยวข้อง (I82817)
  • เปลี่ยนประเภทค่าคงที่ GltfModelEntity.AnimationState จาก Ints เป็นประเภทย่อย AnimationState (I24f4e)
  • AlphaMode มีการเปลี่ยนชื่อประเภทค่าคงที่และเปลี่ยนจาก Ints เป็นAlphaModeประเภทข้อมูลย่อย (I27b56)
  • เปลี่ยนประเภทค่าคงที่ Space จาก Ints เป็นประเภทย่อยของ Space (I9255b)
  • ScenePose.hitTest และเมธอดที่เกี่ยวข้องจะแสดงผล null หากไม่พบการตัดกัน แทนที่จะแสดง HitTestResult ที่มี hitPosition เป็นค่าว่าง HitTestResult.hitPosition จะไม่เป็นค่าว่างอีกต่อไป (I1400a)
  • เปลี่ยนการอ้างอิงของ ActivityPose เป็น ScenePose (I7fe43)

เวอร์ชัน 1.0.0-alpha08

22 ตุลาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ ActivityPanelEntity.moveActivity เป็น transferActivity แล้ว (I273c5, b/430332856)

การแก้ไขข้อบกพร่อง

  • เพิ่ม :xr:scenecore:scenecore-spatial-rendering และ :xr:scenecore:scenecore-spatial-core เป็นการขึ้นต่อกันในการติดตั้งใช้งานของ :xr:scenecore:scenecore (I6ab65, b/447000520)
  • ระบบจะแสดงข้อยกเว้นหากมีการเข้าถึง session.scene หลังจากทำลายเซสชัน (I77e6f)

เวอร์ชัน 1.0.0-alpha07

24 กันยายน 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha07 androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 ออกแล้ว เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ fixedAspectRatio เป็น isFixedAspectRatioEnabled และทำให้เป็นพร็อพเพอร์ตี้บูลีน (I5c4e8, b/440588971)
  • Scenecore ตอนนี้อยู่ในโมดูล xr:scenecore:scenecore-testing แล้ว (Idd951)
  • เปลี่ยนชื่อ shouldAutoHideContent เป็น isAutoHideContentWhileResizingEnabled และ shouldAlwaysShowOverlay เป็น isAlwaysShowOverlayEnabled (I97c36, b/432335421)
  • อัปเดตค่าคงที่ SceneCore TextureSampler เพื่อให้อ่านง่ายขึ้น เช่น ตอนนี้ TextureSampler.MinFilter.LINEAR คือ TextureSampler.MIN_FILTER_LINEAR (Ib159c)
  • ระบบได้ผสานรวมตัวตั้งค่า setKeyEntity ของฉากเข้ากับตัวแปร keyEntity แล้ว การตั้งค่า keyEntity เป็นเอนทิตีที่ย้ายไม่ได้ เช่น AnchorEntity จะทำให้เกิด IllegalArgumentException แทนที่จะส่งคืนค่าบูลีนเป็นเท็จ (I62080, b/428721695, b/422215745)
  • ตัวแปร SpatialModeChangeListener ของฉากถูกแทนที่ด้วย setSpatialModeChangedListener โดยรับค่า Consumer<SpatialModeChangeEvent> แทน SpatialModeChangedListener setSpatialModeChangedListener สามารถรับ Executor ได้แล้ว (ไม่บังคับ) (I62080, b/428721695, b/422215745)
  • นำพารามิเตอร์ bundle ออกจาก ActivityPanelEntity.startActivity (I64344, b/430332856, b/430333040)
  • เปลี่ยนชื่อ SpatializerConstants.SOURCE_TYPE_BYPASS เป็น SpatializerConstants.SOURCE_TYPE_DEFAULT แล้ว (Ifc7fe, b/422215565)
  • เพิ่มค่าคงที่ SpatialSoundPool.PLAY_FAILED (Ifc7fe, b/422215565)
  • เพิ่มอาร์กิวเมนต์เริ่มต้นลงในเมธอด SpatialSoundPool.play (Ifc7fe, b/422215565)
  • นำค่าที่ส่งคืนของตัวตั้งค่าใน SpatialAudioTrackBuilder ออกแล้ว (Ifc7fe, b/422215565)
  • การเปลี่ยนแปลง SurfaceEntity
    • SurfaceEntity.CanvasShape เปลี่ยนชื่อเป็น Shape แล้ว
    • SurfaceEntity.CanvasShape.Vr180Hemisphere เปลี่ยนชื่อเป็น Hemisphere แล้ว
    • SurfaceEntity.CanvasShape.Vr360Sphere เปลี่ยนชื่อเป็น Sphere แล้ว
    • SurfaceEntity.EdgeFeatheringParams.SmoothFeather เปลี่ยนชื่อเป็น RectangleFeather แล้ว
    • SurfaceEntity.EdgeFeathingParams.SolidEdge เปลี่ยนชื่อเป็น NoFeathering แล้ว
    • SurfaceEntity.ContentSecurityLevel เปลี่ยนชื่อเป็น SurfaceProtection แล้ว
    • SurfaceEntity.ContentSecurityLevel.{values} เพิ่มคำนำหน้า SURFACE_PROTECTION_
    • SurfaceEntity.SuperSampling.{$values} เพิ่มคำนำหน้า SUPER_SAMPLING_
    • SurfaceEntity.StereoMode.{values} เพิ่มคำนำหน้า STEREO_MODE_
    • SurfaceEntity.ContentColorMetadata.maxCLL เปลี่ยนชื่อ maxContentLightLevel (I7eb5f, b/422216050, b/427529950)
  • เปลี่ยนชื่อ launchActivity เป็น startActivity (I7db90, b/430332856)
  • นำ Scene.activitySpaceRoot ออกแล้ว โปรดใช้ Scene.activitySpace แทน (I05ee8, b/378706624, b/422215745)
  • configureBundleForFullSpaceModeLaunch และ configureBundleForFullSpaceModeLaunchWithEnvironmentInherited เปลี่ยนชื่อเป็น createBundleForFullSpaceModeLaunch และ createBundleForFullSpaceModeLaunchWithEnvironmentInherited ตามลำดับ และย้ายไปที่ไฟล์ LaunchUtils.kt เป็นเมธอดระดับบนสุดและใช้ Session เป็นพารามิเตอร์แรก (I64a2c, b/437186050)
  • ตอนนี้ GroupEntity จะแสดงผลประเภท GroupEntity แทน Entity (I66042)

การแก้ไขข้อบกพร่อง

  • ส่ง IllegalStateException เมื่อมีการใช้อินสแตนซ์ของเอนทิตีหลังจากทิ้ง (I90990, b/427314036, b/432063442)

เวอร์ชัน 1.0.0-alpha06

13 สิงหาคม 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha06 androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 ออกแล้ว เวอร์ชัน 1.0.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • ยกเลิกการจำกัด API ของ SceneCore BaseEntity และ BaseScenePose (88c0ff6)

เวอร์ชัน 1.0.0-alpha05

30 กรกฎาคม 2025

androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05 androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 และ androidx.xr.scenecore:scenecore:1.0.0-alpha05 ออกแล้ว เวอร์ชัน 1.0.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม API ความละเอียดที่รับรู้แล้วลงในเอนทิตีแผงและ SurfaceEntities (I118f6)
  • PerceivedResolution เพิ่มเมธอดการเรียกกลับไปยัง Scene.kt เพื่อตรวจสอบความละเอียดที่รับรู้ของแผงหลักของกิจกรรมใน HSM (I58084)
  • SurfaceEntity - เพิ่มการรองรับแอปพลิเคชันเพื่อขอการสุ่มตัวอย่างขั้นสูงในเวลาที่สร้าง ซึ่งจะช่วยให้แอปพลิเคชันใช้ฟิลเตอร์การสุ่มตัวอย่างแบบ Super Sampling เพื่อการป้องกันรอยหยักได้ (I06913)
  • เพิ่มพร็อพเพอร์ตี้ recommendedContentBoxInFullSpace ลงใน ActivitySpace แล้ว โดยจะแสดงช่องแนะนำสำหรับวางเนื้อหาเมื่ออยู่ในโหมดพื้นที่เต็ม (I4cd6f)
  • มีตัวสร้างที่โอเวอร์โหลดสำหรับตัวแก้ไขที่เคลื่อนย้ายได้ซึ่งอนุญาตการยึด (Ic0c70)

การเปลี่ยนแปลง API

เราได้ทำการเปลี่ยนแปลง API อย่างครอบคลุมใน SceneCore สำหรับรุ่นนี้ มีการเปลี่ยนชื่อและ/หรือย้ายคลาสหลายคลาสไปยังโมดูลต่างๆ และมีการแทนที่เมธอด Getter/Setter ส่วนใหญ่ด้วยพร็อพเพอร์ตี้ Kotlin แม้ว่าเราจะคาดการณ์การเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้องในอนาคตจนกว่าจะมีการเปิดตัวเวอร์ชันเบต้าแรก แต่การเปลี่ยนแปลงดังกล่าวจะไม่ทำให้เกิดการหยุดชะงักหรือมีจำนวนมาก

  • เปลี่ยนชื่อและ/หรือย้ายคลาสและอินเทอร์เฟซต่อไปนี้ androidx.xr.scenecore.PixelDimensions เป็น androidx.xr.runtime.math.IntSize2d androidx.xr.scenecore.Dimensions เป็น androidx.xr.runtime.math.FloatSize3d androidx.xr.scenecore.ActivityPose เป็น ScenePose androidx.xr.scenecore.ContentlessEntity เป็น GroupEntity androidx.xr.scenecore.PlaneType เป็น PlaneOrientation androidx.xr.scenecore.PlaneSemantic เป็น PlaneSemanticType (Ifd405)(I3b622) (If534d)
  • เราได้ตั้งค่าตัวตั้งค่าจำนวนหนึ่งสำหรับพร็อพเพอร์ตี้ของ Scene เป็นแบบส่วนตัว เนื่องจากไม่ได้มีไว้ให้ไคลเอ็นต์ SceneCore แก้ไข ได้แก่ activitySpace, activitySpaceRoot, mainPanelEntity, perceptionSpace, spatialCapabilities, spatialEnvironment และ spatialUser (I2f506)
  • ในเอนทิตี: เปลี่ยน get/setParent(), setContentDescription เป็นพร็อพเพอร์ตี้ เลิกใช้งาน Entity.is/setHidden() แล้ว ให้ใช้ Entity.is/setEnabled แทน (Ibc4c6)
  • นำคลาส androidx.xr.scenecore.BasePanelEntity ออกแล้ว โปรดใช้ PanelEntity โดยตรงแทน แทนที่ Getter และ Setter สำหรับ PanelEntity ด้วยพร็อพเพอร์ตี้ เปลี่ยนพร็อพเพอร์ตี้ PanelEntity.size จาก Float3dSize เป็น Float2dSize นำเมธอด androidx.xr.scenecore.PanelEntity.getPixelDimensions ที่เลิกใช้งานแล้วออก และใช้ getSizeInPixels แทน (Icc174)
  • แทนที่ androidx.xr.scenecore.OnSpaceUpdatedListener ด้วย Runnable แล้ว (I19308)
  • แทนที่ SpatialUser.getCameraViews() ด้วยพร็อพเพอร์ตี้ (Ib0cc5) สำหรับ ExrImage และ GltfModel: เปลี่ยนเมธอด create ให้เป็นฟังก์ชันระงับ แก้ไขพารามิเตอร์การสร้างให้ยอมรับ Uri หรือ Path แทน String (Id8883) (I0d247), (I25706)
  • ย้าย SpatialEnvironment.requestFullSpaceMode และ SpatialEnvironment.requestHomeSpaceMode ไปยังฉาก เช่น ใช้ session.scene.requestFullSpaceMode() แทน session.scene.spatialEnvironment.requestFullSpaceMode() ตอนนี้ addOnPassthroughOpacityChangedListener และ addOnSpatialEnvironmentChangedListener มีการลบล้างที่ยอมรับ Executor ที่ไม่บังคับแล้ว (I12fe0) (I6b21e)
  • นำเมธอด SpatialEnvironment ที่เลิกใช้งานแล้วต่อไปนี้ออก: togglePassthrough, setPassthrough, setPassthroughOpacity, getPassthroughMode, getPassthroughOpacity, setSkybox และ setGeometry นอกจากนี้ ยังนำคลาส SpatialEnvironment.PassthroughMode (I927bd) (I927bd) (I927bd) ที่เลิกใช้งานแล้วออกด้วย
  • แทนที่ตัวรับและตัวตั้งค่า SpatialEnvironment ต่อไปนี้ด้วยพร็อพเพอร์ตี้ Kotlin: getCurrentPassthroughOpacity(), get/setPassthroughOpacityPreference(), get/setSpatialEnvironmentPreference(), isSpatialEnvironmentPreferenceActive() (I33a7b) (Ie06e2) (Ie06e2)
  • เปลี่ยนประเภท SpatialEnvironmentPreference.preferredPassthroughOpacity จาก Float? เป็น Float แล้ว โดยจะไม่รับค่า Null อีกต่อไป แต่จะใช้ SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE เพื่อส่งสัญญาณว่าไม่มีค่ากำหนดความทึบแสง (I40107)
  • อัปเดตพารามิเตอร์ windowBoundsPx เป็น pixelDimensions และประเภทจาก Rect เป็น IntSize2d ในเมธอด create (I1926e)
  • ตอนนี้ตัวสร้าง SpatialEnvironment เป็นแบบภายในแล้ว (I75a51)
  • แทนที่คลาส SpatialPointerIconNone และ SpatialPointerIconCircle ด้วยออบเจ็กต์คู่ SpatialPointerIcon.NONE และ SpatialPointerIcon.CIRCLE (I416d2)
  • SpatialPointerIcon ใน SpatialPointerComponent จะไม่เป็นค่าว่างอีกต่อไป ใช้ SpatialPointerIcon.DEFAULT แทนค่า Null เพื่อระบุว่าควรใช้ไอคอนเคอร์เซอร์เริ่มต้นของระบบ (I416d2)
  • แทนที่ androidx.xr.scenecore.AnchorEntity.getState() ด้วยพร็อพเพอร์ตี้แบบอ่านอย่างเดียว เปลี่ยนชื่อพารามิเตอร์ในเมธอด AnchorEntity.create() เพื่อความชัดเจน ในวิธีการตั้งค่าและเพิ่ม Listener ของ AnchorEntity's เราได้ย้าย Listener ไปยังอาร์กิวเมนต์สุดท้ายเพื่อเปิดใช้ Lambda ต่อท้าย แทนที่ androidx.xr.scenecore.OnStateChangedListener สำหรับ AnchorEntity ด้วย Consumer<AnchorEntity.State> (I472e0)
  • ตอนนี้ GltfModelEntity.getAnimationState() เป็นพร็อพเพอร์ตี้แล้ว (I10b29)
  • แทนที่ ActivitySpace.getBounds() ด้วยพร็อพเพอร์ตี้ เปลี่ยนชื่อ ActivitySpace.addBoundsChangedListener เป็น ActivitySpace.addOnBoundsChangedListener แล้ว แทนที่ ActivitySpace.setOnSpaceUpdatedListener ด้วยวิธีการเพิ่ม/นำออก (I4c956)
  • สำหรับ AnchorPlacement: planeTypeFilter เปลี่ยนชื่อเป็น anchorablePlaneOrientations และ planeSemanticFilter เปลี่ยนชื่อเป็น anchorablePlaneSemanticTypes การเพิ่ม MovableComponent ลงใน AnchorEntity หรือ ActivitySpace จะแสดงผลเป็นเท็จ มีการเปลี่ยนชื่อ MoveListener เป็น EntityMoveListener shouldDisposeParentAnchor เป็น disposeParentOnReAnchor systemMovable และนำออกจากฟังก์ชัน create เพื่อให้ใช้ creeateCustomMovable, createSystemMovable และ createAnchorable แทน (If11c4)
  • นำSurfaceEntity.featherRadiusX/Yออกและเพิ่มEdgeFeatheringParamsแนวคิดของชั้นเรียน (Ic78fc)
  • แทนที่เมธอด PanelEntity.enablePanelDepthTest() ด้วยพร็อพเพอร์ตี้ panelClippingConfig ตั้งค่า Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) เพื่อเปิดใช้การทดสอบเชิงลึก หรือตั้งค่าเป็น PanelClippingConfig(isDepthTestEnabled = false) เพื่อปิดใช้ (I0cbe0)
  • ตอนนี้ Scene.mainPanelEntity เป็นประเภท MainPanelEntity แทน PanelEntity (I7125a)
  • เปลี่ยนชื่อเมธอด setFullSpaceMode ของ Scene เป็น configureBundleForFullSpaceModeLaunch และเมธอด setFullSpaceModeWithEnvironmentInherited เป็น configureBundleForFullSpaceModeLaunchWithEnvironmentInherited (I0cbe0) (I0cbe0)
  • เปลี่ยนชื่อค่า SpatialVisibility's UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV และ WITHIN_FOV เป็น SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW และ SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW ตามลำดับ (Ie7e8c)
  • SpatialVisibility class ถูกแทนที่ด้วยออบเจ็กต์สาธารณะที่มีค่า Int แบบคงที่ ตอนนี้ setSpatialVisibilityChangedListener ยอมรับ Consumer<Int> แทน Consumer<SpatialVisibility> (Ie7e8c)
  • เปลี่ยนชื่อค่าคงที่ PointerCaptureComponent และย้ายไปยังออบเจ็กต์ PointerCaptureComponent.PointerCaptureState (I9c7ac)
  • แทนที่ PointerCaptureComponents' StateListener ด้วย Consumer<Int> แล้ว (I9c7ac)
  • แทนที่ InputEventListener ด้วย Consumer<InputEvent> (I9c7ac)
  • setPreferredAspectRatio ย้ายจากคลาส Scene ไปยังออบเจ็กต์ SpatialWindow และใช้ Session เป็นพารามิเตอร์แรก (I7b717)
  • Entity.setHidden() แทนที่ด้วย Entity.setEnabled() และ Entity.isHidden() แทนที่ด้วย Entity.isEnabled() setHidden(false) เท่ากับ setEnabled(true) และ isHidden() == !isEnabled() (Icf0de)
  • เปลี่ยนประเภท Entity.contentDescription จาก String เป็น CharSequence (Ie59be)
  • Session.create และ Session.configure จะแสดง SecurityException เมื่อไม่ได้รับสิทธิ์ที่เพียงพอแทนที่จะแสดง SessionCreatePermissionsNotGranted หรือ SessionConfigurePermissionsNotGranted (I7c488)
  • ตอนนี้ ResizableComponent.create ต้องใช้ Consumer<ResizeEvent> ResizeEventListener ถูกแทนที่ด้วย Consumer<ResizeEvent> ResizableComponent.size เปลี่ยนชื่อเป็น ResizableComponent.affordanceSize ResizableComponent.minimumSize เปลี่ยนชื่อเป็น ResizableComponent.minimumEntitySize ResizableComponent.maximumSize เปลี่ยนชื่อเป็น ResizableComponent.maximumEntitySize, ResizableComponent.autoHideContent เปลี่ยนชื่อเป็น ResizableComponent.shouldAutoHideContent ResizableComponent.forceShowResizeOverlay เปลี่ยนชื่อเป็น ResizableComponent.shouldAlwaysShowOverlay (I97a2d)
  • ลด minSDK เป็น 24 สำหรับ androidx.xr.scenecore และ androidx.xr.compose แพ็กเกจ XR ยังคงต้องใช้ API 34 ในรันไทม์ (I17224)
  • นำข้อจำกัด RequiresApi(34) ออกจากแพ็กเกจ Jetpack XR ทั้งหมด การจำกัดนี้ซ้ำซ้อนเนื่องจากปัจจุบัน Jetpack XR ใช้ได้เฉพาะในอุปกรณ์ที่มี API ระดับ 34 ขึ้นไป (Iae0f8)
  • อาร์ติแฟกต์หลัก SceneCore (xr:scenecore:scenecore) จะมีเฉพาะ API แบบไม่พร้อมกันในรูปแบบ Kotlin เท่านั้น นักพัฒนาซอฟต์แวร์ Java สามารถใช้ไลบรารี xr:scenecore:scenecore-guava เพื่อเข้าถึง API ที่เข้ากันได้ (If221b)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นการใช้งานประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง -Xjspecify-annotations=strict (นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ia8420)
  • เราได้แทนที่เมธอดแบบอะซิงโครนัสทั้งหมดที่ส่งคืน ListenableFuture ด้วยฟังก์ชันระงับของ Kotlin ตอนนี้ นักพัฒนาแอป Java ที่ต้องการใช้วิธีการแบบไม่พร้อมกันที่อิงตาม ListenableFuture แทน Suspend Function ของ Kotlin ต้องใช้ฟังก์ชันส่วนขยายใน :xr:scenecore-scenecore-guava เช่น GuavaExrImage มีฟังก์ชันแบบไม่พร้อมกันของ ExrImage ที่เทียบเท่ากับ Guava, GuavaScenePose มีฟังก์ชันแบบไม่พร้อมกันของ ScenePose ที่เทียบเท่ากับ Guava, GuavaGltfModel มีฟังก์ชันแบบไม่พร้อมกันของ Guava-equivalent GltfModel เป็นต้น (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)

การแก้ไขข้อบกพร่อง

  • อัปเดตกฎ Jetpack XR Scenecore ProGuard เพื่อป้องกัน AbstractMethodError สำหรับไคลเอ็นต์ที่ย่อขนาด (I91a01)
  • การแก้ไขเพิ่มเติมเพื่อรองรับการลดขนาด Proguard สำหรับ Jetpack XR SceneCore (I4f47e)
  • แก้ไขข้อบกพร่องที่ InteractableComponent อาจทําให้เกิดข้อขัดข้องหาก hitPosition ใน HitInfo ของ InputEvent อาจขัดข้องหาก hitPosition ที่ส่งคืนจากระบบเป็น Null (I7a695)
  • เราได้เปลี่ยนชื่อค่า *Mode ของการกำหนดค่าเพื่อให้สอดคล้องกับลักษณะการทำงาน (I6d247)
  • แก้ไขปัญหาเกี่ยวกับ FOV และ HitTest ใน SceneCore TestApp (I2c51e)
  • แก้ไขข้อบกพร่องใน SpatialCapabilities.hasCapability() ซึ่งจะแสดงผลเป็นจริงหากความสามารถใดก็ตามที่ส่งผ่านด้วย OR แบบบิตเป็นจริง แทนที่จะแสดงผลเป็นจริงเฉพาะในกรณีที่ความสามารถทั้งหมดเป็นจริง (I2cd40)
  • SurfaceEntity.StereoMode.TOP_BOTTOM อัปเดตให้มีแผนที่ด้านบนสำหรับตาซ้ายและแผนที่ด้านล่างสำหรับตาขวา (I4ae68)

เวอร์ชัน 1.0.0-alpha04

7 พฤษภาคม 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha04 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้การจัดการย้อนกลับจะใช้ได้กับเอนทิตีแผงที่ไม่มีกิจกรรมฝังตัว หากต้องการให้การจัดการย้อนกลับทำงาน คุณต้องระบุ android:enableOnBackInvokedCallback= "true" ในไฟล์ Manifest ของ Android
  • StereoSurfaceEntity รองรับการเล่น MV-HEVC ผ่านค่า StereoMode ใหม่ 2 ค่า ได้แก่ MULTIVIEW_LEFT_PRIMARY และ MULTIVIEW_RIGHT_PRIMARY
  • ตอนนี้ PanelEntity.setSize และ PanelEntity.getSize จะแสดงขนาดในพื้นที่ระดับบน
  • ตอนนี้ Entity.setPose, Entity.getPose, Entity.setScale, Entity.getScale, Entity.setAlpha และ Entity.getAlpha ใช้พารามิเตอร์ใหม่ relativeTo ซึ่งช่วยให้รับ/ตั้งค่าที่เกี่ยวข้องกับพื้นที่ต่างๆ ได้ ค่าที่รองรับ ได้แก่ พื้นที่สำหรับผู้ปกครอง กิจกรรม และโลกแห่งความเป็นจริง และค่าเริ่มต้นสำหรับพารามิเตอร์นี้คือ "ผู้ปกครอง"
  • เพิ่มเมธอดส่วนขยายของ Spatial Visibility Callback ลงใน SessionExt.kt เพื่อตรวจสอบเมื่อเนื้อหาฉากเคลื่อนที่ภายในหรือภายนอกฟิลด์ภาพของผู้ใช้
  • เพิ่ม setPointSourceParams ลงใน SpatialAudioTrack แล้ว ซึ่งจะช่วยให้คุณอัปเดตพารามิเตอร์ได้หลังจากสร้างแทร็กแล้ว
  • เพิ่มคลาสใหม่ชื่อ Scene พร้อมการอ้างอิงถึง ScenecoreAPI โดยจะเข้าถึงฉากได้ในฐานะพร็อพเพอร์ตี้ส่วนขยายของเซสชัน ฟังก์ชันภายใน SessionExt ได้รับการย้ายไปยัง Scene แล้ว ดังนั้นจึงต้องปรับการนำเข้า เช่น SessionExt.getScene(session)addSpatialCapababilitiesChangedListener พบกับ SessionExt.addSpatialCapabilitiesChangedListener
  • ActivityPose.hitTestAsync ได้รับการเพิ่มเข้ามา ซึ่งช่วยให้hitTestกับเนื้อหาเสมือนได้
  • เพิ่มประเภทคอมโพเนนต์ใหม่ SpatialPointerComponent ซึ่งช่วยให้ไคลเอ็นต์ระบุไอคอนที่แสดงสำหรับเคอร์เซอร์ หรือปิดใช้ไอคอนได้ ปัจจุบันแนบคอมโพเนนต์นี้กับอินสแตนซ์ PanelEntity ได้เท่านั้น
  • ขอแนะนำPanelEntityใหม่ ซึ่งใช้ขนาดแผงเป็นเมตรหรือพิกเซล นำPanelEntityรุ่นเก่าที่ใช้พารามิเตอร์ประเภทมิติข้อมูล 2 รายการสำหรับแผงออกแล้ว

การเปลี่ยนแปลง API

  • นำข้อจำกัด RequiresApi(34) ออกจากแพ็กเกจ Jetpack XR ทั้งหมด การจำกัดนี้ซ้ำซ้อนเนื่องจากปัจจุบัน Jetpack XR ใช้ได้เฉพาะในอุปกรณ์ที่มี API ระดับ 34 ขึ้นไป (Iae0f8)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
  • ระบบนำชั้นเรียน PermissionHelper ออกแล้ว
  • PanelEntity.getPixelDensity เลิกใช้งานแล้ว
  • ระบบจะนำ PanelEntity.setPixelDimensions และ PanelEntity.getPixelDimension ออก และแทนที่ด้วย setSizeInPixels และ getSizeInPixels
  • นำ Entity.getActivitySpaceAlpha ออกแล้ว สามารถแทนที่ด้วย Entity.getAlpha(Space.Activity)
  • นำ Entity.getWorldSpaceScale ออกแล้ว สามารถแทนที่ด้วย Entity.getScale(Space.REAL\_WORLD)
  • เราได้ลบคลาส Session ใน SceneCore ออกแล้วเพื่อใช้ Session ใน XR Runtime แทน
  • เปลี่ยนชื่อ StereoSurfaceEntity เป็น SurfaceEntity แล้ว
  • Entity.setSize และ Entity.getSize จะถูกนำออก และมีการเพิ่มเมธอดเดียวกันลงใน PanelEntity
  • เปลี่ยนชื่อ PointSourceAttributes เป็น PointSourceParams แล้ว
  • เปลี่ยนชื่อ SpatializerConstants.SOURCE\_TYPE\_BYPASS เป็น SpatializerConstants.SOURCE\_TYPE\_DEFAULT แล้ว
  • PointSourceParams มีการแก้ไขเอนทิตีจากการเข้าถึงแบบสาธารณะเป็นการเข้าถึงภายใน
  • ตอนนี้ AnchorEntity.create กำหนดให้ต้องกำหนดค่า PlaneTrackingMode ใน Session.configure()
  • ตอนนี้ API ของ SpatialUser ต้องกำหนดค่า HeadTrackingMode ใน Session.configure()
  • เมื่อไม่ได้แนบ ResizableComponent ระบบจะแสดงบันทึกระดับ INFO แทนบันทึกระดับ ERROR
  • ตอนนี้คลาส Fov เป็นคลาส Kotlin ปกติแล้ว
  • แยก Entity.kt เพื่อวางเอนทิตีประเภทคอนกรีตแต่ละประเภทลงในไฟล์ของตัวเอง
  • เมื่อสร้าง PanelEntity ใหม่ ระบบจะเปลี่ยนFrameLayoutของข้อมูลพร็อพเพอร์ตี้ส่วนใหญ่เป็นFrameLayout ซึ่งช่วยให้ใช้ LayoutInspector กับแผงเชิงพื้นที่ได้
  • ตอนนี้อินสแตนซ์ XrExtensions ที่ใช้อยู่ได้รับการลงทะเบียนกับแพลตฟอร์มแล้วในลักษณะที่พยายามอย่างเต็มที่เพื่อช่วยในการแก้ไขข้อบกพร่องของแอป

การแก้ไขข้อบกพร่อง

  • เราได้เพิ่มการแก้ไขเพื่อป้องกันการขัดข้องที่อาจเกิดขึ้นเมื่อย้าย PanelEntity ที่มี MovableComponent และ AnchorPlacement
  • แก้ไขปัญหาที่ ResizableComponent แสดงขนาดที่ล้าสมัยในแฮนเดิล onResizeStart
  • แก้ไขข้อขัดข้องเมื่อมีการเรียกใช้ JxrPlatformAdapterAxr ของ dispose() หลายครั้ง

เวอร์ชัน 1.0.0-alpha03

26 กุมภาพันธ์ 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha03 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ระบบรองรับการลดขนาด Proguard สำหรับโค้ด Jetpack XR แล้ว

การแก้ไขข้อบกพร่อง

  • การแก้ไขเพิ่มเติมเพื่อรองรับการลดขนาด Proguard สำหรับ Jetpack XR SceneCore (I4f47e)
  • อัปเดตกฎ Jetpack XR Scenecore ProGuard เพื่อป้องกัน AbstractMethodError สำหรับไคลเอ็นต์ที่ย่อขนาด (I91a01)

เวอร์ชัน 1.0.0-alpha02

12 กุมภาพันธ์ 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha02 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลงแบบไม่รองรับเวอร์ชันก่อนหน้าที่จะเกิดขึ้นซึ่งส่งผลต่อแอปที่สร้างก่อน 1.0.0-alpha02

  • เราได้ย้ายเมธอดของ Factory จากคลาส Session ไปยังเมธอดคู่กันในแต่ละประเภทที่เกี่ยวข้องแล้ว ดังนี้
    • ระบบได้ลบ Session.createActivityPanelEntity(Dimensions, String, Activity, Pose) และแทนที่ด้วย ActivityPanelEntity.create(Session, Dimensions, String, Pose) แล้ว
    • ระบบได้ลบ Session.createAnchorEntity(Anchor) และแทนที่ด้วย AnchorEntity.create(Session, Anchor) แล้ว
    • ระบบได้ลบ Session.createAnchorEntity(Dimensions, Int, Int, Duration) และแทนที่ด้วย AnchorEntity.create(Session, Dimensions, Int, Int, Duration) แล้ว
    • ระบบได้ลบ Session.createEntity(String, Pose) และแทนที่ด้วย ContentlessEntity.create(Session, String, Pose) แล้ว
    • ระบบได้ลบ Session.createExrImageResource(String) และแทนที่ด้วย ExrImage.create(Session, String) แล้ว
    • ระบบได้ลบ Session.createGltfEntity(GltfModel, Pose) และแทนที่ด้วย GltfModelEntity.create(Session, GltfModel, Pose) แล้ว
    • ระบบได้ลบ Session.createGltfModelResource(String) และแทนที่ด้วย GltfModel.create(Session, String) แล้ว
    • ระบบได้ลบ Session.createInteractableComponent(Executor, InputEventListener) และแทนที่ด้วย InteractableComponent.create(Session, Executor, InputEventListener) แล้ว
    • ระบบได้ลบ Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean) และแทนที่ด้วย MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean) แล้ว
    • ระบบได้ลบ Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose) และแทนที่ด้วย PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose) แล้ว
    • ระบบได้ลบ Session.createResizableComponent(Dimensions, Dimensions) และแทนที่ด้วย ResizableComponent.create(Session, Dimensions, Dimensions) แล้ว
    • ระบบได้ลบ Session.createStereoSurfaceEntity(Int, Dimensions, Pose) และแทนที่ด้วย StereoSurface.create(Session, Int, Dimensions, Pose) แล้ว
  • ระบบได้นำเมธอดที่เลิกใช้งานแล้วต่อไปนี้ออก
    • ลบ Session.canEmbedActivityPanel(Activity) แล้ว โปรดใช้ getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY) แทน
    • ลบ Session.hasSpatialCapability(Int) แล้ว เราได้แทนที่ด้วยการใช้ getSpatialCapabilities().hasCapability() เพื่อเป็นวิธีที่แยกส่วนมากขึ้นในการตรวจสอบว่ามีฟีเจอร์เชิงพื้นที่หรือไม่ เนื่องจาก getSpatialCapabilities() จะแสดงผลออบเจ็กต์ SpatialCapabilities
    • ระบบได้ลบ Session.requestFullSpaceMode() และแทนที่ด้วย SpatialEnvironment.requestFullSpaceMode() แล้ว
    • ระบบได้ลบ Session.requestHomeSpaceMode() และแทนที่ด้วย SpatialEnvironment.requestHomeSpaceMode() แล้ว
  • Session.setFullSpaceMode(Bundle) และ Session.setFullSpaceModeWithEnvironmentInherited(Bundle) ได้ย้ายไปอยู่ในฟังก์ชันส่วนขยายแล้ว ไฟล์ของนักพัฒนาแอปจะต้องเพิ่มการนำเข้าใหม่เพื่อเข้าถึง ดังนี้
    • import androidx.xr.scenecore.setFullSpaceMode
    • import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
  • Session.setPreferredAspectRatio(Activity, Float) ได้ย้ายไปอยู่ในฟังก์ชันส่วนขยายแล้ว ไฟล์ของนักพัฒนาแอปจะต้องเพิ่มการนำเข้าใหม่เพื่อเข้าถึง ดังนี้
    • import androidx.xr.scenecore.setPreferredAspectRatio
  • Session.getEntitiesOfType(Class<out T>) และ Session.getEntityForRtEntity(RtEntity) ได้ย้ายไปอยู่ในฟังก์ชันส่วนขยายแล้ว ไฟล์ของนักพัฒนาแอปจะต้องเพิ่มการนำเข้าใหม่เพื่อเข้าถึง ดังนี้
    • import androidx.xr.scenecore.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • ลบ Session.unpersistAnchor(Anchor) แล้ว
  • ลบ Session.createPersistedAnchorEntity(UUID) แล้ว

ปัญหาที่ทราบแล้ว

  • PanelEntity.setCornerRadius() และ ActivityPanelEntity.setCornerRadius() อาจไม่มีผลจนกว่าจะมีการย้ายแผงในครั้งถัดไป ซึ่งสามารถแก้ไขได้โดยการย้ายแผงไปยังตำแหน่งปัจจุบัน
  • เมื่อมีการเรียกใช้ BoundsChanged ใน ActivitySpace ActivityPose บางรายการอาจไม่อัปเดตอย่างถูกต้อง โดยจะมีการอัปเดตในการโทร OnSpaceUpdated ครั้งถัดไปในวันที่ ActivitySpace

การเปลี่ยนแปลงด้านพฤติกรรมและนิสัย

  • PanelEntity และ ActivityPanelEntity จะมีรัศมีมุมเริ่มต้นที่ 32dp หรือเล็กกว่า หากแผงมีความกว้างหรือความสูงน้อยกว่า 32dp

API และความสามารถใหม่ๆ

  • เปิดตัว StereoSurface.CanvasShape ซึ่งช่วยให้สร้าง Canvas Spherical และ Hemispherical เพื่อแสดงผลสื่อที่สมจริงได้
  • StereoSurfaceEntity.create() ตอนนี้ยอมรับพารามิเตอร์ CanvasShape แล้ว (ปัจจุบันระบบจะไม่สนใจพารามิเตอร์นี้ แต่จะนำไปใช้ในรุ่นต่อๆ ไป)
  • StereoSurfaceEntity.create() ไม่รับพารามิเตอร์ Dimensions อีกต่อไป แอปพลิเคชันควรควบคุมขนาดของ Canvas ผ่านการตั้งค่า CanvasShape
  • StereoSurfaceEntity มีสมาชิก CanvasShape ซึ่งตั้งค่าแบบไดนามิกได้
  • ตอนนี้ StereoSurfaceEntity.dimensions เป็นพร็อพเพอร์ตี้แบบอ่านอย่างเดียวแล้ว แอปพลิเคชันควรตั้งค่า CanvasShape เพื่อเปลี่ยนขนาด
  • StereoSurfaceEntity อนุญาตให้รีเซ็ต StereoMode ได้หลังจากการก่อสร้าง

การเปลี่ยนแปลงอื่นๆ

  • ลด minSDK ในเวลาคอมไพล์เป็น 24 API ของ Jetpack XR ทั้งหมดจะยังคงต้องใช้ API 34 ในรันไทม์
  • โรงงานเซสชันของ SceneCore (Session.create) จะไม่เปิดใช้ Intent เพื่อขอสิทธิ์ SCENE_UNDERSTANDING อีกต่อไป แต่แอปพลิเคชันไคลเอ็นต์ต้องขอสิทธิ์จากผู้ใช้อย่างชัดเจนก่อนที่จะพยายามสร้าง Anchor การสร้าง Anchor จะล้มเหลวหากผู้ใช้ไม่ได้ให้สิทธิ์

แก้ไขข้อบกพร่อง

  • getActivitySpacePose() ได้รับการแก้ไขเพื่อพิจารณาสเกล ActivitySpace โดยการแสดงผลค่าการแปลเป็นเมตรที่ปรับขนาดแล้วแทนที่จะแสดงผลเป็นเมตรที่ไม่ได้ปรับขนาดเสมอ transformPoseTo ยังใช้หน่วยที่ถูกต้องในการคำนวณการเปลี่ยนแปลงพิกัดเมื่อ ActivitySpace เกี่ยวข้องกับแหล่งที่มาหรือปลายทางด้วย
  • ตอนนี้ระบบจะตั้งค่ากล่องท้องฟ้าเป็นกล่องท้องฟ้าสีดำทั้งหมดทุกครั้งที่มีการส่งค่ากำหนดกล่องท้องฟ้าเป็น Null โดยใช้ setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)) หากต้องการเปลี่ยนกลับไปใช้ Skybox และรูปทรงเรขาคณิตเริ่มต้นของระบบ ให้ใช้ setSpatialEnvironmentPreference(null).

เวอร์ชัน 1.0.0-alpha01

12 ธันวาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.xr.scenecore:scenecore-* 1.0.0-alpha01

ฟีเจอร์ของการเปิดตัวครั้งแรก การเปิดตัว Jetpack SceneCore สำหรับนักพัฒนาแอปครั้งแรก ซึ่งเป็นไลบรารีกราฟฉาก 3 มิติสำหรับสร้างและจัดการฉากและสภาพแวดล้อมที่สมจริง ไลบรารีนี้ช่วยให้คุณวางและจัดเรียงโมเดล 3 มิติและแผงเนื้อหาโดยสัมพันธ์กันและสภาพแวดล้อมเสมือนจริงหรือโลกจริง

  • SpatialEnvironment: สร้างประสบการณ์การใช้งานที่สมจริงอย่างเต็มรูปแบบด้วยรูปภาพ Skybox และ/หรือรูปทรงโมเดล 3 มิติเป็นฉากหลังสำหรับฉาก XR ของสภาพแวดล้อม หรือเปิดใช้การส่งผ่านเพื่อให้ฉากเสมือนผสานรวมกับสภาพแวดล้อมจริงของผู้ใช้ได้
  • PanelEntity: เพิ่มเนื้อหา 2 มิติลงในฉาก 3 มิติโดยการฝังเลย์เอาต์และกิจกรรม Android มาตรฐานลงในแผงเชิงพื้นที่ที่ลอยหรือยึดกับพื้นผิวในโลกจริงได้
  • GltfModelEntity: วาง สร้างภาพเคลื่อนไหว และโต้ตอบกับโมเดล 3 มิติในฉาก SceneCore รองรับรูปแบบไฟล์ glTF เพื่อให้ผสานรวมกับโมเดลที่มีอยู่ได้ง่าย
  • SpatialAudio: เพิ่มแหล่งเสียงรอบข้างและแหล่งเสียงเฉพาะจุดลงในฉาก 3 มิติเพื่อให้ได้เสียงรอบทิศทางที่สมจริงและสมบูรณ์
  • StereoSurfaceEntity: SceneCore รองรับการกำหนดเส้นทางเนื้อหาสำหรับตาซ้าย/ขวาที่แสดงผลบน Android Surface ซึ่งใช้เพื่อแสดงเนื้อหาสเตอริโอสโคปในรูปแบบข้างต่อข้างหรือบนต่อล่างได้ เช่น ภาพถ่ายสเตอริโอ วิดีโอ 3 มิติ หรือ UI อื่นๆ ที่แสดงผลแบบไดนามิก แอปพลิเคชันควรใช้ MediaPlayer หรือ ExoPlayer ในการถอดรหัสวิดีโอ
  • ระบบคอมโพเนนต์: SceneCore มีระบบคอมโพเนนต์ที่แข็งแกร่งและยืดหยุ่นสำหรับการเพิ่มความสามารถให้กับเนื้อหา XR ซึ่งรวมถึงความสามารถให้ผู้ใช้ย้าย ปรับขนาด และโต้ตอบกับโมเดลและแผง
  • Anchor: เมื่อเปิดใช้การส่งผ่าน คุณจะติดแผงและโมเดลกับพื้นผิวจริงได้ ซึ่งจะช่วยให้ผู้ใช้ผสานรวมเนื้อหาเสมือนเข้ากับสภาพแวดล้อมในโลกแห่งความเป็นจริงได้อย่างราบรื่น
  • ท่าทางของผู้ใช้: เข้าถึงตำแหน่งของผู้ใช้ในฉากเสมือนเพื่อจัดวางเนื้อหาตามตำแหน่งของผู้ใช้
  • SpatialCapabilities: สร้างแอปที่ปรับเปลี่ยนได้อย่างเต็มที่ซึ่งใช้ประโยชน์จากความสามารถเชิงพื้นที่เมื่อพร้อมใช้งาน เช่น การวางตำแหน่งเนื้อหา UI แบบ 3 มิติ นอกจากนี้ แอปยังตรวจสอบการเปลี่ยนแปลงความสามารถขณะที่แอปกำลังทำงานเพื่อปรับเปลี่ยนประสบการณ์การใช้งานตามวิธีที่ผู้ใช้ใช้อุปกรณ์ Android XR ได้ด้วย

ปัญหาที่ทราบ

  • ปัจจุบันต้องใช้ minSDK 30 เพื่อใช้ Jetpack SceneCore วิธีแก้ปัญหาคือเพิ่มรายการไฟล์ Manifest ต่อไปนี้ <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> เพื่อให้สามารถสร้างและเรียกใช้ด้วย minSDK 23 ได้
  • เซสชันอาจไม่ถูกต้องในสถานการณ์ต่างๆ ที่สร้างกิจกรรมขึ้นมาใหม่โดยอัตโนมัติ ซึ่งรวมถึงการปรับขนาดแผงหลัก การเชื่อมต่ออุปกรณ์ต่อพ่วง และการเปลี่ยนระหว่างโหมดสว่างและโหมดมืด หากพบปัญหาการทำให้เซสชันไม่ถูกต้อง วิธีแก้ปัญหาชั่วคราว ได้แก่ การทำให้แผงหลักไม่สามารถปรับขนาดได้ การใช้เอนทิตีแผงแบบไดนามิก การปิดใช้การสร้างกิจกรรมใหม่สำหรับการเปลี่ยนแปลงการกำหนดค่าที่เฉพาะเจาะจง หรือการปิดใช้การเปลี่ยนธีมโหมดสว่าง/มืด
  • GltfEntity ไม่รองรับคอมโพเนนต์ที่ย้ายและปรับขนาดได้
  • GltfEntity ไม่รองรับ Entity.getSize()
  • แอป Jetpack XR ต้องขอสิทธิ์ android.permission.SCENE_UNDERSTANDING ใน AndroidManifest
  • การสร้างเซสชันรองรับเฉพาะในอุปกรณ์ Android XR ในตอนนี้ หากคุณสร้างเซสชันและพยายามใช้ในอุปกรณ์ที่ไม่ใช่ Android XR คุณจะได้รับ RuntimeException
  • การตั้งค่ากล่องท้องฟ้าเป็น null ผ่าน `SpatialEnvironment.setSpatialEnvironmentPreference()` จะไม่ทำให้กล่องท้องฟ้าเป็นสีดำทึบตามที่ระบุไว้ ซึ่งอาจส่งผลให้ระบบใช้กล่องท้องฟ้าเริ่มต้นหรือไม่มีการเปลี่ยนแปลงกล่องท้องฟ้าปัจจุบัน
  • ไคลเอ็นต์ SceneCore ควรเพิ่ม implementation(“com.google.guava:listenablefuture-1.0”) ลงในการกำหนดค่า Gradle สำหรับการอ้างอิงของแอป ในรุ่นต่อๆ ไป Scenecore จะรวมไลบรารีนี้เป็นapi Dependency เพื่อให้ไคลเอ็นต์ไม่ต้องประกาศอย่างชัดแจ้ง
  • SceneCore มี com.google.guava:guava-31.1-android และ com.google.protobuf:protobuf-javalite เป็นการขึ้นต่อกันแบบทรานซิทีฟโดยไม่ถูกต้อง หากการดำเนินการนี้ทำให้เกิดข้อผิดพลาดของคลาสที่ซ้ำกันในการสร้าง คุณสามารถยกเว้นการขึ้นต่อกันทั้ง 2 รายการนี้ได้อย่างปลอดภัย
  • หากแอปใช้ SceneCore และเปิดใช้ ProGuard แอปจะขัดข้องเมื่อคุณ สร้างเซสชัน คุณแก้ไขปัญหาเบื้องต้นได้โดยปิดใช้ ProGuard ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเปิดใช้ ProGuard ได้ที่คำแนะนำ นี้