Jetpack SceneCore
| Bản cập nhật mới nhất | Bản phát hành ổn định | Bản phát hành dùng thử | Bản phát hành beta | Bản phát hành alpha |
|---|---|---|---|---|
| Ngày 21 tháng 10 năm 2026 | 1.0.0 | - | - | 1.1.0-alpha01 |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc trên XR SceneCore, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.
Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.1.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.1.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01") }
Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.
Ý kiến phản hồi
Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.
Xem tài liệu về Trình theo dõi sự cố để biết thêm thông tin.
Phiên bản 1.1
Phiên bản 1.1.0-alpha01
Ngày 21 tháng 10 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm API cập nhật lưới động (
MeshBuffer.createDynamic,MeshBuffer.updateVertexData,MeshBuffer.updateIndexDatavà hàm khởi tạoCustomMesh.BuilderFromMeshDatađộng) để hỗ trợ cập nhật dữ liệu đỉnh và chỉ mục trong thời gian chạy. (Ia1ecb) - Thêm các phương thức trợ giúp
VertexLayout.getBufferIndexđể dễ dàng truy xuất chỉ mục vùng đệm cho mộtVertexAttributehoặcVertexBufferLayoutnhất định. (I1a9e3) - Đặt
CustomMesh.boundsthành một biến để hộp giới hạn có thể được cập nhật linh động trong thời gian chạy. (Ib0397) - Chuyển các API ảnh động
glTF(GltfAnimation,GltfModelEntity.getAnimationsvàGltfModelEntity.stopAllAnimations) thành công khai/ổn định, đồng thời giữ nguyên phương thức setterGltfAnimation.loop ở dạng thử nghiệm, cònGltfAnimationStartOptionsvà start(options) ở dạng thử nghiệm và không dùng nữa. (Iacdae) - Thêm
stopAllAnimations()vàoGltfModelEntity, đặtGltfAnimation.start()không có tham số, thêm thuộc tínhloopvàspeedvàoGltfAnimation, đồng thời ngừng sử dụngGltfAnimationStartOptions,start(options)vàseekTo(Duration). (I53105) - Cập nhật các API
GltfModelEntityđể ghi lạiIllegalStateException(cụ thể làEntity.DisposedException) khi được gọi trên các thực thể đã loại bỏ. (I65a76f)
Sửa lỗi
- Phần phụ thuộc
androidx.lifecycle:lifecycle-runtimeđã được cập nhật lên phiên bản 2.10.0. Bạn cần có phiên bản này để chạy các quy trình kiểm tra tìm lỗi mã nguồn trong thời gian chạy của vòng đời đi kèm với AGP phiên bản 9.5.0-alpha04 trở lên. (I99bfd, b/556807521) - Cải thiện kdocs liên quan đến
AudioOutputProviderđể làm nổi bật rằng không nên sử dụng lại kdocs với nhiều thực thểExoPlayer(I6b18e) - Xoá các phần phụ thuộc không cần thiết trên
impresskhỏi nhiều mô-đun XR. I84636c
Phiên bản 1.0
Phiên bản 1.0.0
Ngày 21 tháng 10 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0. Phiên bản 1.0.0 bao gồm các thay đổi sau.
Các tính năng chính của phiên bản 1.0.0:
- Jetpack XR SceneCore hiện đã ổn định! SceneCore cho phép bạn đặt và sắp xếp nội dung 3D (được xác định theo thực thể) tương ứng với nhau và với môi trường của bạn. Với SceneCore, bạn có thể tạo, đặt và thao tác với các bảng điều khiển 2D và mô hình 3D trong cảnh thực tế ảo và thực tế hỗn hợp; chỉ định môi trường không gian và nguồn âm thanh không gian; đồng thời neo nội dung ảo vào thế giới thực.
- Để biết thêm thông tin, hãy xem Trang tổng quan và Tài liệu tham khảo API của chúng tôi.
Phiên bản 1.0.0-rc02
Ngày 7 tháng 10 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-rc02. Phiên bản 1.0.0-rc02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục khả năng xảy ra rò rỉ bộ nhớ bằng cách xoá
perceptionRuntimeCachetrongSessionExtvà tái cấu trúc để truy xuấtPerceptionRuntimetrực tiếp từ thực thểSession. (Ie35b1) - Khắc phục khả năng rò rỉ ngữ cảnh bằng cách sử dụng
applicationContextcho các tay điều khiển gốcOpenXRđể đảm bảo thời gian chạy gốc không giữ các tệp đối chiếu đến ngữ cảnhActivity. (Ie35b1) - Khắc phục tình trạng tương tranh trong
XrInstanceManagerbằng cách áp dụng cơ chế đồng bộ hoá và khoá khởi chạy thích hợp. (Ie35b1) - Sửa
ReferenceCleanerđể hỗ trợ việc huỷ đăng ký các hành động dọn dẹp và đảm bảo các hành động dọn dẹpEntityđược chạy rõ ràng trongdispose(), ngăn chặn việc thực thi trùng lặp khi thu gom rác. (Ie35b1) - Khắc phục lỗi rò rỉ bộ nhớ trong
Scenebằng cách xoásceneCachetrongSessionExtvà tái cấu trúcSceneđể tìm nạp trực tiếp thực thể từsessionConnectors. (Ie35b1)
Phiên bản 1.0.0-rc01
Ngày 9 tháng 9 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-rc01. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.
Thay đổi về API
- Đã thêm thư viện
xr:scenecore:scenecore-openxr. (Ic49f2) - Đã xóa một số API không dùng nữa trước khi phát hành bản ổn định 1.0.0.
Sửa lỗi
- Đã giải quyết lỗi rò rỉ bộ nhớ, trong đó hệ thống có thể giữ lại tệp đối chiếu Hoạt động khi Hoạt động bị huỷ. (I6dcd7)
Thay đổi về hành vi
- Đã xóa đầu ra logcat khỏi SceneCore. (I10c3c)
Phiên bản 1.0.0-beta02
Ngày 12 tháng 8 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-beta02. Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.
Bản sửa lỗi
toMoveEvent()sẽ trả vềnullnếu thực thể mẹ đã được thu gom rác. (Ia7a1b)
Phiên bản 1.0.0-beta01
Ngày 15 tháng 7 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-beta01. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- Các API
GltfAnimationvàSpatialGltfModelAnimationđã được đánh dấu là thử nghiệm. Một số thuộc tính đã được chuyển thành phương thức getter. (I8d689, b/524771027) - Xoá phương thức khởi tạo
MovableComponent.createTrackingMovablecông khai. (I00912, b/477169015) - Chuyển đổi Session.create thành hàm tạm ngưng. (I5d27f)
ActivitySpacevàAnchorSpacehiện mở rộng một lớpSpaceEntitychung chứa hành vi chung cho các thực thể có vị trí do hệ thống kiểm soát (I506ec, b/513619219)- Cập nhật
AnchorEntitythànhAnchorSpace(Ifa95e, b/513619219) - Cung cấp API kiểm thử công khai
SoundEffectPoolComponentTester. (I87df7, b/498104417) - Thêm tham số
cornerRadiuskhông bắt buộc vào hàm khởi tạoSurfaceEntity.Shape.Quadvà đặt thuộc tínhcornerRadiusở chế độ công khai. Giờ đây, nhà phát triển có thể chỉ định bán kính góc khi tạo hình dạng Tứ giác để kết xuất canvasSurfaceEntitycó góc bo tròn, đồng thời truy vấn bán kính của các Tứ giác hiện có. (Ia7809, b/474681085) - Cung cấp API kiểm thử công khai
SpatialAudioTrackBuilderTester,SpatialAudioTrackTestervà các phương thức nạp chồngSceneCoreTestRule.getTester. (I378c6, b/496333938) - Thêm các cơ chế ghi đè chuyên biệt của
toString()cho một số loại ARCore. Các loại này nhằm cung cấp thêm thông tin cho nhà phát triển để gỡ lỗi và không dùng trong quá trình sản xuất hoặc ứng dụng được vận chuyển.
Phiên bản 1.0.0-alpha16
Ngày 17 tháng 6 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha16. Phiên bản 1.0.0-alpha16 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm các phương thức nạp chồng cho
addVertexData,setIndexDatavàaddSubsetvàoCustomMesh.BuilderFromMeshDatavàCustomMesh.BuilderFromMeshBuffer. Các phương thức nạp chồng này cho phép nhà phát triển truyền trực tiếp dữ liệu thô và tham số (ví dụ:ByteBuffer,offset,size,topology,indexOffset,indexCount) mà không cần gói chúng trong các đối tượng trung gian nhưByteBufferRegionhoặcMeshSubset. (I84d5c) Scene.requestFullSpaceMode()vàScene.requestHomeSpaceMode()lần lượt được đổi tên thànhrequestFullSpace()vàrequestHomeSpace(). Các phương thức và tài liệu khác đề cập đến "Chế độ không gian chính" và "Chế độ toàn bộ không gian" cũng được cập nhật tương tự. (I45751)- Cung cấp API kiểm thử công khai
PanelEntityTestervàMainPanelEntityTester(I961e4) - Thêm thuộc tính
pointSourceParamsvàoSoundEffectPoolComponent(I4a750) - Cung cấp API kiểm thử công khai
MovableComponentTester(I0c972) - Cung cấp API kiểm thử công khai
PointerCaptureComponentTester(Ic0d4f) - Cung cấp API kiểm thử công khai
ActivityPanelEntityTester(I837c4) - Cung cấp API kiểm thử công khai
ResizableComponentTester(I0a3a4) - Cung cấp API kiểm thử công khai
BoundsComponentTester.(Iefd53) - Cung cấp API kiểm thử công khai
SpatialMediaPlayerTester(Ia3e09) - Cung cấp API kiểm thử công khai
SpatialEnvironmentTester(Icf60f) - Cung cấp API kiểm thử công khai
GltfModelTestervàSceneCoreTestRule.getGltfModelTester. (I33fcb) - Cung cấp API kiểm thử công khai
InteractableComponentTester. (Ia7096) - Cung cấp API kiểm thử công khai
SurfaceEntityTester. (Ic0740) - Cung cấp API kiểm thử công khai
GltfModelEntityTester,TestGltfModelNodevàTestGltfAnimation. (I72c4d) - Cung cấp API kiểm thử công khai
SceneTestervàSceneCoreTestRule.sceneTester. (Ib4ec5) - Cung cấp API kiểm thử công khai
PerceptionSpaceTestervàSceneCoreTestRule.perceptionSpaceTester. (Icf739) - Cung cấp API kiểm thử công khai
MeshEntityTester. (I63801) - Cung cấp API kiểm thử công khai
ImageBasedLightingAssetTestervà các phương thức nạp chồngSceneCoreTestRule.getTester. (I57ec4) - Cung cấp API kiểm thử công khai
TextureTester(Ia865b) - Cung cấp API kiểm thử công khai
PositionalAudioComponentTester(Icd96e) - Cung cấp API kiểm thử công khai
SpatialSoundPoolTester(Ia3531) - Cung cấp API kiểm thử công khai
SoundEffectPoolTester(If349a) - Cung cấp API kiểm thử công khai
ActivitySpaceTestervàSceneCoreTestRule.activitySpaceTester. (I2d5c2) - Cung cấp API kiểm thử công khai
SpatialWindowTester(I41837) - Cung cấp API kiểm thử công khai
AnchorEntityTester(I68404) - Cung cấp giao diện API kiểm thử công khai
SceneCoreTestRule. (Ic72d3) - Thêm lớp
PixelDensityvà hiển thị lớp này thông quaScene#virtualPixelDensityđể cung cấp tỷ lệ pixel trên mét dựa trên phần cứng nhằm ánh xạ kích thước vật lý chính xác trongActivitySpace. (I0e3ac) - Thêm API công khai để tạo và kết xuất Lưới tuỳ chỉnh. (I7ad2f)
- API
VertexLayoutđã được cập nhật để sử dụng danh sáchVertexBufferLayout, trong đó mỗiVertexBufferLayoutmô tả các thuộc tính trong một vùng đệm đỉnh. Điều này cho phép sắp xếp dữ liệu đỉnh linh hoạt hơn, bao gồm cả các thuộc tính đan xen với bước nhảy và độ lệch tuỳ chỉnh. (Ic426b) - Cung cấp
MovableComponent.createTrackingMovableđể biến đổi một Đối tượng có thể theo dõi của ARCore thành một tư thế tương ứng với Không gian hoạt động. (I12249) - Giá trị mặc định cho phần tử mẹ trong
Entity.createđã được cập nhật thành rỗng. (Ic3145) Entityđã được cập nhật thành một lớp thay vì giao diện và hiện là lớp cơ sở cho tất cả các loại Thực thể. Trong quá trình thay đổi này,BaseEntityđã bị xoá. (I7fbc9)GltfModel,ExrImagevàImageBasedLightingAssethiện triển khaiAutoCloseableđể cho phép quản lý tài nguyên theo thành ngữ bằng cách sử dụng khốiusecủa Kotlin. (I1ac79)- Ra mắt lớp
ImageBasedLightingAssetđể thay thếExrImagenhằm xác định ánh sáng môi trường không gian.ExrImagekhông còn được dùng nữa và đã bị xoá khỏi API công khai.SpatialEnvironmentPreferenceđã được cập nhật để sử dụngImageBasedLightingAsset. (I6c92a) - Đổi tên tham số
skyboxtrongSpatialEnvironmentthànhimageBasedLightingAssetđể phản ánh rõ hơn mục đích của tham số này, đồng thời làm rõ rằng kết cấu hộp bầu trời trực quan phải được đưa vào tham số hình học. (I24d4a) - Các thực thể không gian hiện sử dụng mật độ thiết bị ổn định để tính toán từ pixel sang mét trên các cấp độ API không gian 1 và 2, đảm bảo kích thước nhất quán bất kể thay đổi về mật độ hiển thị của hệ thống. (I37051)
Phiên bản 1.0.0-alpha15
Ngày 19 tháng 5 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha15. Phiên bản 1.0.0-alpha15 bao gồm các thay đổi sau.
Thay đổi về API
Entity.dispose()hiện đã bị xoá dưới dạng API công khai. Thay vì gọidispose()trên các thực thể Entity, ứng dụng có thể dọn dẹp các thực thể bằng cách đặtparentthànhnullvà xoá mọi tham chiếu mạnh đến các thực thể đó. (I396c9)- Các phương thức
set/clearOnLoadCompleteListenercủaSoundEffectPoolđã bị xoá. Thay vào đó, hãy sử dụngadd/removeLoadCompleteListener. (Iae78d) set/clearSpatialVisibilityChangedListenercủa Scene đã được thay thế bằngadd/removeSpatialVisibilityChangedListener. (I67dff)- Tất cả phương thức
add/removeOnFooListenercủa SceneCore đã được đổi tên thànhadd/removeFooListener, xoáOnkhỏi tên. (Ibe50b) - Các phương thức
AnchorEntity.setOnOriginChangedListenervàAnchorEntity.setOnStateChangedListenerđã được thay thế bằng phương thứcadd/removeFooListenerđể hỗ trợ nhiều Trình nghe đồng thời. (I13749) - Đổi tên
AnchorEntity.State.TIMEDOUTthànhState.TIMED_OUT. (Id2b8d) - Component API đã được tái cấu trúc để cải thiện độ an toàn và khả năng mở rộng.
Componenthiện là một lớp trừu tượng. Giờ đây, các phương thứconAttach()vàonDetach()làprotectedđể ngăn các lệnh gọi trực tiếp. Vui lòng sử dụngEntity.addComponent()vàEntity.removeComponent()để quản lý vòng đời của thành phần. (Id04e8) - Các hằng số
PlaneSemanticTypePlaneOrientationcủa SceneCore đã được di chuyển từ Int sang các loại tuỳ chỉnh. Các hằng sốANYcủa chúng sẽ bị xoá, thay vào đó, ứng dụng khách phải liệt kê rõ ràng tất cả hằng số mong muốn hoặc sử dụng hằng số Tập hợp không thể thay đổi.ALLmới. Phương thức nhà máyAnchorEntityhiện chấp nhận một Tập hợp các loại này, thay vì một giá trị duy nhất. (Ib1033) - Thêm tính năng hỗ trợ ảnh động khung xương (tạo giao diện) vào Custom Mesh API thử nghiệm. Giờ đây, nhà phát triển có thể tạo ảnh động cho lưới tuỳ chỉnh bằng cách chỉ định
boneCountkhi tạoMeshEntityvà cập nhật ảnh động theo thời gian thực bằngMeshEntity.setBoneTransforms(). (Id8ba2, b/496692490) - Ra mắt API
CustomMeshthử nghiệm. Giờ đây, nhà phát triển có thể tạo và kết xuất hình học 3D theo phương thức lập trình trong cảnh của họ bằngCustomMesh,MeshBuffervàMeshEntity. (I94617) - Đã xoá
androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD. Thay vào đó, hãy sử dụngSourceType.SOUND_FIELD. (Ia68b9) - Thêm các thành phần âm thanh không gian:
PositionalAudioComponent,SoundEffectPoolComponentvàSoundFieldAudioComponent(Ieda89) AnchorEntity.getAnchorđã được thay thế bằngAnchorEntity.anchorvà hiện sẽ trả vềAnchorkhiAnchorEntityđược tạo từAnchorARCore (I5c7c8)- Giá trị mặc định cho tham số
parenttrong các phương thức ban đầuActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityvàSurfaceEntityđã được thay đổi từActivitySpacethànhnull. Để đính kèm một thực thể vào biểu đồ cảnh và hiển thị thực thể đó, giờ đây, nhà phát triển phải đặt rõ ràng thành phần mẹ của thực thể đó trong quá trình tạo thực thể hoặc thông quaEntity.parent = ...(Ie7cc1)
Sửa lỗi
SceneCorehiện tự động thu hồi các thực thểEntitykhi chúng trở thành đối tượng có thể truy cập ảo, giúp nhà phát triển không cần phải gọidispose()một cách rõ ràng để giải phóng tài nguyên. Để đảm bảo một thực thể [Entity] được thu hồi đúng cách, nhà phát triển nên:- Tách nút này khỏi biểu đồ cảnh bằng cách đặt
parentthànhnull. - Từ bỏ tất cả các tham chiếu mạnh đến thực thể trong mã của họ.
- Lưu ý về các loại thực thể đặc biệt: Đối với các thực thể không thể có thành phần mẹ (chẳng hạn như
AnchorEntity), nhà phát triển phải duy trì một tệp đối chiếu mạnh trong khi thực thể đang được sử dụng. Nếu tất cả các tệp đối chiếu đều được phát hành, thì các thực thể này sẽ trở thành có thể truy cập ảo và sẽ tự động được thu hồi. (I83fe4)
- Tách nút này khỏi biểu đồ cảnh bằng cách đặt
- Thu hẹp quy tắc giữ lại của Proguard cho tất cả thư viện
SceneCore. (I98447)
Lỗi đã biết
- Việc đính kèm
PositionalAudioComponentvàoEntitycó thực thểExoPlayerkhông hoạt động sẽ gây ra sự cố. Không gọisetPointSourceParamshoặc đính kèm/tách các thành phần âm thanh không gian trong khi ExoPlayer đang dừng. Lỗi này sẽ được khắc phục trong bản phát hành tiếp theo.
Phiên bản 1.0.0-alpha14
Ngày 6 tháng 5 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha14. Phiên bản 1.0.0-alpha14 bao gồm các thay đổi sau.
Thay đổi về API
TrackingStatevàVpsAvailabilityResultđã chuyển sangandroidx.xr.arcore packagevà các loại trongandroidx.xr.runtimehiện không còn được dùng nữa. (Ic7930, b/480462213)- Đổi tên
Plane.TypethànhPlaneType. (I8c90c, b/482675376) - Đổi tên
Plane.LabelthànhPlaneLabel. (Ic6b67, b/482675376) - Ngừng sử dụng
androidx.xr.runtime.FieldOfView. Thay vào đó, hãy sử dụngandroidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045) Matrix4.poseđổi tên thànhMatrix4.toPose()Thuộc tính tư thế hiện không được dùng nữa. (I329b4, b/493383490)- Đổi tên các giá trị enum
HandJointType. (Ifbc83, b/482670596) - Hiển thị
Component.onAttachvàonDetachdưới dạng API công khai để cho phép triển khaiComponenttuỳ chỉnh. (I0ca1f) - Thêm các thành phần âm thanh không gian (I39ddd, b/489421980, b/436642086, b/436642499)
- Xoá thực thể khỏi
PointSourceParams. Thay vào đó, Thực thể sẽ được dùng trực tiếp vớiSpatialAudioTrack,SpatialSoundPoolvàSpatialMediaPlayer(Ib3685, b/489421980, b/436634048) - Đổi tên
DeviceTrackingMode.LAST_KNOWNthànhSPATIAL_LAST_KNOWN(với tính năng dự phòng không dùng nữa), thêmINERTIAL_LAST_KNOWNđể theo dõi 3DoF và thêmTRACKING_DEGRADEDvàoTrackingState. (Ie661c, b/445466590) - Ngừng sử dụng
GroupEntity. Để có một Thực thể chỉ có chức năng Thực thể cơ bản, hãy gọiEntity.createđể trả về giao diện Thực thể. (I4c450, b/473867483) - Thêm API
XrLog. ĐặtXrLog.isEnabledthànhtrueđể bật tính năng ghi nhật ký trong JetpackXR và sử dụngXrLog.Levelđể đặt cấp độ ghi nhật ký. (I76a1f, b/463460895, b/487378441)
Sửa lỗi
Scene.keyEntityhiện mặc định làmainPanelEntity. (I6a3ef)
Phiên bản 1.0.0-alpha13
Ngày 25 tháng 3 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha13. Phiên bản 1.0.0-alpha13 bao gồm các thay đổi sau.
Thay đổi về API
- Đã xoá cờ
unscaledGravityAlignedActivitySpacekhỏiSession.create.ActivitySpacehiện luôn không được điều chỉnh theo tỷ lệ và được căn chỉnh theo trọng lực. (If6f11, b/458173423) - Đã xóa các hàm
setMaterialOverridevàclearMaterialOverridekhông dùng nữa khỏiGltfModelEntity. Các hàm này hiện được gọi trên từngGltfModelNode. (I2e5d2) - Thêm
transformPixelCoordinatesToLocalPositionvàtransformNormalizedCoordinatesToLocalPositionvàoPanelEntity, đồng thời xoá các phương thức thử nghiệm tương đương từng trả về tư thế thay vì vị tríVector3. (Ib6960, b/460123106, b/458333591) - Thêm các API
GltfAnimationđể kiểm soát ảnh động glTF trongSceneCore. (I2c172, b/466065486, b/465819070, b/465818617) - Đổi tên
ScenePose.activitySpacePosethànhScenePose.poseInActivitySpace(I8f175, b/427822261) - Thêm phương thức triển khai thời gian chạy được chiếu của Scenecore (I9c4ab, b/476440158)
- Khi đổi kích thước thực thể bảng điều khiển chính, thực thể này có thể tự đặt lại vị trí về gốc
ActivitySpace. Không có giải pháp nào khác ngoài việc định vị lại bảng điều khiển về vị trí ban đầu theo cách thủ công hoặc theo phương thức lập trình. Lỗi này sẽ được khắc phục trong bản phát hành sau này. (b/489427007). - Trong một số trường hợp, khả năng chi trả cho
MovableComponentcó thể không xuất hiện choSurfaceEntityvà các loại thực thể khác không phải là Bảng điều khiển. Việc đặt rõ ràngMovableComponent.sizesẽ khiến khả năng chi trả xuất hiện. Lỗi này sẽ được khắc phục trong một bản phát hành sau này (b/490983469).
Phiên bản 1.0.0-alpha12
Ngày 25 tháng 2 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha12. Phiên bản 1.0.0-alpha12 bao gồm các thay đổi sau.
Lỗi đã biết
- Các thực thể được neo có thể chuyển từ vị trí được neo sang gốc không gian hoạt động sau vài giây.
- Ứng dụng có thể gặp sự cố khi tạo các thực thể
SurfaceEntity. Vấn đề này đã được giải quyết trongandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13và các bản phát hành tiếp theo. Các ứng dụng bị ảnh hưởng nên cập nhật lên phiên bản mới nhất.
Thay đổi về API
ActivitySpace.addOnSpaceUpdatedListenervàActivitySpace.removeOnSpaceUpdatedListenerđã được đổi tên thànhaddOnOriginChangedListenervàremoveOnOriginChangedListener.AnchorEntity.setOnSpaceUpdatedListenerđổi tên thànhsetOnOriginChangedListener. (I5d8fb)- Thêm thuộc tính tên công khai vào
FakeEntityvà đặt chế độ xem công khai trênFakePanelEntity. (Ifa1f9)
Sửa lỗi
- Sửa các phép tính mật độ pixel trên hình ảnh hệ thống mới hơn (I57d04)
Phiên bản 1.0.0-alpha11
Ngày 28 tháng 1 năm 2026
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha11. Phiên bản 1.0.0-alpha11 bao gồm các thay đổi sau.
Thay đổi về API
- Đổi tên
PerceivedResolutionResult.InvalidCameraViewthànhPerceivedResolutionResult.InvalidRenderViewpointvì các APIgetPerceivedResolutionhiện dựa vào APIRenderViewpointcủa ARCore thay vìCameraViewScenePose. Tên này phản ánh rõ hơn cách triển khai mới. (I8c967, b/446989745, b/419311998) - Các phương thức
PanelEntity/SurfaceEntity.getPerceivedResolutionhiện lấyRenderViewpointdo nhà phát triển cung cấp làm đối số. Trước đây, thời gian chạy chọn tuỳ ýRenderViewpointđược dùng trong phép tính độ phân giải cảm nhận được. (I8c967, b/446989745, b/419311998) - Xoá
SpatialUser,ScenePose.HeadvàScenePose.CameraView. Chức năng của các API này được APIArDevicevàRenderViewpointtrong ARCore cho Jetpack XR hỗ trợ. Để có đượcScenePosetương ứng với đầu hoặc mắt trái hoặc mắt phải của người dùng, nhà phát triển có thể sử dụngPerceptionSpace.getScenePoseFromPerceptionPosevới tư thế thích hợp có được bằng API ARCore. (I2f69c, b/446989745)
Phiên bản 1.0.0-alpha10
Ngày 3 tháng 12 năm 2025
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha10. Phiên bản 1.0.0-alpha10 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm
transformPixelCoordinatesToPosevàtransformNormalizedCoordinatesToPosevàoPanelEntity(I462b3) - Thêm một lớp trợ giúp, Utils, vào Thời gian chạy
SceneCoredựa trên logic trongSceneCore(I570b9)
Sửa lỗi
- Khắc phục sự cố tiềm ẩn có thể xảy ra khi Phiên bị huỷ và nhận được
SpatialModeChangeEvent(If44e8) - Khắc phục lỗi có thể khiến
IllegalStateExceptionbị gửi khi rời khỏi hoặc vào lại một Hoạt động. (Ibff1c)
Phiên bản 1.0.0-alpha09
Ngày 19 tháng 11 năm 2025
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha09. Phiên bản 1.0.0-alpha09 bao gồm các thay đổi sau.
Tính năng mới
- Thêm một API để truy xuất
ScenePoseđại diện cho thành phần của tư thế gốc không gian nhận thức và một tư thế liên quan đến gốc không gian nhận thức. (I5b50a) - Thêm hàm
getGravityAlignedPose. Tư thế căn chỉnh theo trọng lực sẽ bỏ qua độ dốc và độ nghiêng của góc xoay. (I5ae21) - Các loại hằng số
AnchorEntity.Stateđã được thay đổi từ Ints thành các loại phụ của State. (Ib0c49) - Thêm
getChildren()vào giao diện Thực thể. Đã cập nhật vòng đờiMainPanelEntity. (Ia69d6)
Thay đổi về API
- Các loại hằng số
PointerCaptureComponent.PointerCaptureStateđã được thay đổi từ Ints thành các loại phụPointerCaptureState. (Ic888a) Scene.spatialCapabilitieshiện thuộc loạiSet<SpatialCapability>thay vì trường Int. Các hằng sốSpatialCapabilityđã được đổi tên. (I9c109)- Các loại hằng số
SurfaceEntityđã được đổi tên và thay đổi từ Int thành loại phụSurfaceEntity. (I419ed) - Các loại hằng số
SpatializerConstantđã được đổi tên và thay đổi từ Int thành loại phụSpatializerConstant. (Ia0e18) - Các loại hằng số
TextureSamplerđã được đổi tên và thay đổi từ Int thành loại phụTextureSampler. (I44078) - Các loại hằng số
SpatialVisibilityđã được thay đổi từ Int thành loại phụSpatialVisibility. (I70739) - Các loại hằng số
ResizeEvent.ResizeStateđã được đổi tên và thay đổi từ Int thành loại phụResizeState. (I384d5) - Các loại hằng số
InputEventđã được đổi tên và thay đổi từ Int thành kế thừa từ loại bao quanh tương ứng. (I82817) - Các loại hằng số
GltfModelEntity.AnimationStateđã được thay đổi từ Ints thành các loại phụAnimationState. (I24f4e) - Các loại hằng số
AlphaModeđã được đổi tên và thay đổi từ Int thành loại phụAlphaMode. (I27b56) - Các loại hằng số
Spaceđã được thay đổi từ Ints thành các loại phụ của Space. (I9255b) ScenePose.hitTestvà các phương thức liên quan hiện trả vềnullnếu không tìm thấy giao điểm, thay vìHitTestResultcóhitPositionrỗng.HitTestResult.hitPositionkhông còn có thể rỗng. (I1400a)- Thay đổi các tham chiếu của
ActivityPosethànhScenePose. (I7fe43)
Phiên bản 1.0.0-alpha08
Ngày 22 tháng 10 năm 2025
Phát hành androidx.xr.scenecore:scenecore-*:1.0.0-alpha08. Phiên bản 1.0.0-alpha08 bao gồm các thay đổi sau.
Thay đổi về API
- Đổi tên
ActivityPanelEntity.moveActivitythànhtransferActivity(I273c5, b/430332856)
Sửa lỗi
:xr:scenecore:scenecore-spatial-renderingvà:xr:scenecore:scenecore-spatial-coređược thêm dưới dạng phần phụ thuộc triển khai của:xr:scenecore:scenecore(I6ab65, b/447000520)- Hệ thống sẽ gửi ngoại lệ nếu
session.sceneđược truy cập sau khi huỷ phiên. (I77e6f)
Phiên bản 1.0.0-alpha07
Ngày 24 tháng 9 năm 2025
Phát hành androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 và androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.
Thay đổi về API
- Đổi tên
fixedAspectRatiothànhisFixedAspectRatioEnabledvà đặt thành thuộc tính boolean (I5c4e8, b/440588971) ScenecoreCác đối tượng giả hiện nằm trong mô-đunxr:scenecore:scenecore-testing. (Idd951)- Đổi tên
shouldAutoHideContentthànhisAutoHideContentWhileResizingEnabledvàshouldAlwaysShowOverlaythànhisAlwaysShowOverlayEnabled(I97c36, b/432335421) - Cập nhật hằng số
SceneCoreTextureSamplerđể dễ đọc, ví dụ:TextureSampler.MinFilter.LINEARhiện làTextureSampler.MIN_FILTER_LINEAR(Ib159c) - Phương thức setter
setKeyEntitycủa cảnh đã được hợp nhất vào biếnkeyEntity. Việc đặtkeyEntitythành một Thực thể không thể di chuyển nhưAnchorEntitysẽ gửi mộtIllegalArgumentExceptionthay vì trả về giá trị boolean false. (I62080, b/428721695, b/422215745) - Biến
SpatialModeChangeListenercủa cảnh đã được thay thế bằngsetSpatialModeChangedListener. Hàm này nhậnConsumer<SpatialModeChangeEvent>thay vìSpatialModeChangedListener.setSpatialModeChangedListenerhiện có thể tuỳ ý nhận một Executor. (I62080, b/428721695, b/422215745) - Đã xóa tham số
bundlekhỏiActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040) - Đổi tên
SpatializerConstants.SOURCE_TYPE_BYPASSthànhSpatializerConstants.SOURCE_TYPE_DEFAULT. (Ifc7fe, b/422215565) - Thêm hằng số
SpatialSoundPool.PLAY_FAILED. (Ifc7fe, b/422215565) - Thêm đối số mặc định vào các phương thức
SpatialSoundPool.play. (Ifc7fe, b/422215565) - Xoá giá trị trả về của phương thức setter trong
SpatialAudioTrackBuilder. (Ifc7fe, b/422215565) - Thay đổi về SurfaceEntity
SurfaceEntity.CanvasShapeđã đổi tênShapeSurfaceEntity.CanvasShape.Vr180Hemispheređã đổi tênHemisphereSurfaceEntity.CanvasShape.Vr360Spheređã đổi tênSphereSurfaceEntity.EdgeFeatheringParams.SmoothFeatherđã đổi tênRectangleFeatherSurfaceEntity.EdgeFeathingParams.SolidEdgeđã đổi tênNoFeatheringSurfaceEntity.ContentSecurityLevelđã đổi tênSurfaceProtectionSurfaceEntity.ContentSecurityLevel.{values}đã thêm tiền tốSURFACE_PROTECTION_.SurfaceEntity.SuperSampling.{$values}đã thêm tiền tốSUPER_SAMPLING_SurfaceEntity.StereoMode.{values}đã thêm tiền tốSTEREO_MODE_- (I7eb5f, b/422216050, b/427529950) Đổi tên
SurfaceEntity.ContentColorMetadata.maxCLLthànhmaxContentLightLevel
- Đổi tên
launchActivitythànhstartActivity(I7db90, b/430332856) - Đã xoá
Scene.activitySpaceRoot. Thay vào đó, hãy sử dụngScene.activitySpace. (I05ee8, b/378706624, b/422215745) configureBundleForFullSpaceModeLaunchvàconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedđược đổi tên lần lượt thànhcreateBundleForFullSpaceModeLaunchvàcreateBundleForFullSpaceModeLaunchWithEnvironmentInherited, đồng thời được chuyển sang tệp LaunchUtils.kt dưới dạng các phương thức cấp cao nhất và lấy Session làm tham số đầu tiên (I64a2c, b/437186050)- Nhà máy
GroupEntityhiện trả về loạiGroupEntitythay vì Thực thể. (I66042)
Sửa lỗi
- Gửi
IllegalStateExceptionkhi một thực thể được sử dụng sau khi loại bỏ. (I90990, b/427314036, b/432063442)
Phiên bản 1.0.0-alpha06
Ngày 13 tháng 8 năm 2025
Phát hành androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 và androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về API
- Bỏ hạn chế các API
BaseEntityvàBaseScenePosecủaSceneCore(88c0ff6)
Phiên bản 1.0.0-alpha05
Ngày 30 tháng 7 năm 2025
Phát hành androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 và androidx.xr.scenecore:scenecore:1.0.0-alpha05. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Đã thêm API Độ phân giải cảm nhận được vào Thực thể bảng điều khiển và
SurfaceEntities. (I118f6) PerceivedResolutionCác phương thức gọi lại được thêm vào Scene.kt để theo dõi độ phân giải cảm nhận được của bảng điều khiển chính của hoạt động trong HSM. (I58084)SurfaceEntity– Thêm tính năng hỗ trợ để Ứng dụng yêu cầu siêu lấy mẫu tại thời điểm tạo. Điều này cho phép các ứng dụng sử dụng bộ lọc siêu lấy mẫu để khử răng cưa. (I06913)- Thêm thuộc tính
recommendedContentBoxInFullSpacevàoActivitySpace. Hàm này trả về một hộp được đề xuất để đặt nội dung khi ở Chế độ toàn bộ không gian. (I4cd6f) - Cung cấp hàm khởi tạo nạp chồng cho đối tượng sửa đổi có thể di chuyển, cho phép neo. (Ic0c70)
Thay đổi về API
Chúng tôi đã thực hiện nhiều thay đổi về API đối với SceneCore cho bản phát hành này. Một số lớp đã được đổi tên và/hoặc chuyển sang các mô-đun khác, đồng thời hầu hết các phương thức getter/setter đã được thay thế bằng các thuộc tính Kotlin. Mặc dù chúng tôi dự đoán sẽ có những thay đổi về API có thể gây lỗi trong tương lai cho đến khi phát hành bản Beta đầu tiên, nhưng những thay đổi đó sẽ không gây gián đoạn hoặc có số lượng nhiều như vậy.
- Đã đổi tên và/hoặc di chuyển các lớp và giao diện sau:
androidx.xr.scenecore.PixelDimensionsthànhandroidx.xr.runtime.math.IntSize2d;androidx.xr.scenecore.Dimensionsthànhandroidx.xr.runtime.math.FloatSize3d;androidx.xr.scenecore.ActivityPosethànhScenePose,androidx.xr.scenecore.ContentlessEntitythànhGroupEntity,androidx.xr.scenecore.PlaneTypethànhPlaneOrientation;androidx.xr.scenecore.PlaneSemanticthànhPlaneSemanticType. (Ifd405)(I3b622) (If534d) - Một số phương thức setter cho các thuộc tính của
Sceneđã được đặt ở chế độ riêng tư; các phương thức này không được thiết kế để các ứng dụngSceneCorethay đổi:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentvàspatialUser. (I2f506) - Trong Thực thể: Đã thay đổi các thuộc tính sau:
get/setParent(),setContentDescription; Không dùngEntity.is/setHidden()nữa, hãy sử dụngEntity.is/setEnabled. (Ibc4c6) - Xoá lớp
androidx.xr.scenecore.BasePanelEntity, hãy dùng trực tiếpPanelEntity. Thay thế phương thức getter và setter choPanelEntitybằng các thuộc tính. Đã thay đổi thuộc tínhPanelEntity.sizetừFloat3dSizethànhFloat2dSize. Xoá phương thức không dùng nữaandroidx.xr.scenecore.PanelEntity.getPixelDimensions, hãy sử dụnggetSizeInPixels. (Icc174) - Thay thế
androidx.xr.scenecore.OnSpaceUpdatedListenerbằngRunnable. (I19308) - Thay thế
SpatialUser.getCameraViews()bằng một thuộc tính. (Ib0cc5) Đối vớiExrImagevàGltfModel:, đã thay đổi các phương thứccreatethành hàm tạm ngưng; sửa đổi các tham số tạo để chấp nhậnUrihoặcPaththay vìString. (Id8883) (I0d247), (I25706) - Đã chuyển
SpatialEnvironment.requestFullSpaceModevàSpatialEnvironment.requestHomeSpaceModesang Scene, ví dụ: sử dụngsession.scene.requestFullSpaceMode()thay vìsession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListenervàaddOnSpatialEnvironmentChangedListenerhiện có các cơ chế ghi đè chấp nhận Trình thực thi không bắt buộc. (I12fe0) (I6b21e) - Đã xóa các phương thức
SpatialEnvironmentkhông dùng nữa sau đây:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxvàsetGeometry. Đồng thời xoá lớp không dùng nữaSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) - Thay thế các phương thức getter và setter
SpatialEnvironmentsau đây bằng các thuộc tính Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - Loại
SpatialEnvironmentPreference.preferredPassthroughOpacityđã thay đổi từFloat?thànhFloat. Hàm này không còn chấp nhận giá trị rỗng. Thay vào đó,SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEđược dùng để báo hiệu rằng không có lựa chọn ưu tiên về độ mờ. (I40107) - Cập nhật tham số
windowBoundsPxthànhpixelDimensionsvà loại của tham số này từ Rect thànhIntSize2dtrong phương thức tạo. (I1926e) - Hàm khởi tạo
SpatialEnvironmenthiện là nội bộ (I75a51) - Thay thế lớp
SpatialPointerIconNonevàSpatialPointerIconCirclebằng các đối tượng đồng hànhSpatialPointerIcon.NONEvàSpatialPointerIcon.CIRCLE(I416d2) SpatialPointerIcontrongSpatialPointerComponentkhông còn rỗng. Sử dụngSpatialPointerIcon.DEFAULTthay vì giá trị rỗng để cho biết rằng nên sử dụng biểu tượng con trỏ theo giá trị mặc định của hệ thống. (I416d2)- Thay thế
androidx.xr.scenecore.AnchorEntity.getState()bằng một thuộc tính chỉ đọc. Đổi tên các tham số trên phương thứcAnchorEntity.create()để cho rõ ràng. Trong các phương thức củaAnchorEntityđể thiết lập và thêm trình nghe, trình nghe đã được chuyển sang đối số cuối cùng để bật lambda theo sau. Đã thay thếandroidx.xr.scenecore.OnStateChangedListenerchoAnchorEntitybằngConsumer<AnchorEntity.State>. (I472e0) GltfModelEntity.getAnimationState()hiện là một tài sản. (I10b29)- Thay thế
ActivitySpace.getBounds()bằng một thuộc tính. Đổi tênActivitySpace.addBoundsChangedListenerthànhActivitySpace.addOnBoundsChangedListener. Thay thếActivitySpace.setOnSpaceUpdatedListenerbằng các phương thức thêm/xoá. (I4c956) - Đối với
AnchorPlacement: planeTypeFilterđã được đổi tên thànhanchorablePlaneOrientations,planeSemanticFilterđã được đổi tên thànhanchorablePlaneSemanticTypes. ThêmMovableComponentvàoAnchorEntityhoặcActivitySpacesẽ trả về giá trị false,MoveListenerđược đổi tên thànhEntityMoveListener shouldDisposeParentAnchorđược đổi tên thànhdisposeParentOnReAnchor systemMovableđã bị xoá khỏi hàmcreateđể thay bằngcreeateCustomMovable,createSystemMovablevàcreateAnchorable(If11c4) - Xoá
SurfaceEntity.featherRadiusX/Yvà thêm khái niệm lớpEdgeFeatheringParams. (Ic78fc) - Thay thế phương thức
PanelEntity.enablePanelDepthTest()bằng thuộc tínhpanelClippingConfig. ĐặtScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)để bật tính năng kiểm tra độ sâu hoặc đặtPanelClippingConfig(isDepthTestEnabled = false)để tắt tính năng này. (I0cbe0) Scene.mainPanelEntityhiện thuộc loạiMainPanelEntitythay vìPanelEntity(I7125a)- Đổi tên phương thức
setFullSpaceModecủa Scene thànhconfigureBundleForFullSpaceModeLaunchvà phương thứcsetFullSpaceModeWithEnvironmentInheritedthànhconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0) - Đổi tên các giá trị UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV và WITHIN_FOV của
SpatialVisibilitythành SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW và SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW (Ie7e8c) - Thay thế lớp
SpatialVisibilitybằng đối tượng công khai có giá trị Int không đổi.setSpatialVisibilityChangedListenerhiện chấp nhậnConsumer<Int>thay vìConsumer<SpatialVisibility>(Ie7e8c) - Đổi tên hằng số
PointerCaptureComponentvà di chuyển sang đối tượngPointerCaptureComponent.PointerCaptureState(I9c7ac) - Thay thế
PointerCaptureComponents' StateListenerbằngConsumer<Int>. (I9c7ac) - Thay thế
InputEventListenerbằngConsumer<InputEvent>(I9c7ac) setPreferredAspectRatiođã chuyển từ lớp Scene sang đối tượngSpatialWindowvà lấy Phiên làm tham số đầu tiên. (I7b717)Entity.setHidden()được thay thế bằngEntity.setEnabled()vàEntity.isHidden()được thay thế bằngEntity.isEnabled().setHidden(false)bằngsetEnabled(true)vàisHidden() == !isEnabled(). (Icf0de)- Loại
Entity.contentDescriptionđã thay đổi từ String thànhCharSequence. (Ie59be) Session.createvàSession.configurehiện gửiSecurityExceptionkhi chưa được cấp đủ quyền thay vì trả vềSessionCreatePermissionsNotGrantedhoặcSessionConfigurePermissionsNotGranted. (I7c488)ResizableComponent.createhiện yêu cầuConsumer<ResizeEvent> ResizeEventListenerđược thay thế bằngConsumer<ResizeEvent> ResizableComponent.sizeđược đổi tên thànhResizableComponent.affordanceSize ResizableComponent.minimumSizeđược đổi tên thànhResizableComponent.minimumEntitySize ResizableComponent.maximumSizeđược đổi tên thànhResizableComponent.maximumEntitySize,ResizableComponent.autoHideContentđược đổi tên thànhResizableComponent.shouldAutoHideContentResizableComponent.forceShowResizeOverlayđược đổi tên thànhResizableComponent.shouldAlwaysShowOverlay(I97a2d)- Giảm
minSDKxuống còn 24 choandroidx.xr.scenecorevàandroidx.xr.compose. Các gói XR vẫn yêu cầu API 34 trong thời gian chạy. (I17224) - Xoá quy định hạn chế
RequiresApi(34)đối với tất cả các gói Jetpack XR. Hạn chế này là thừa vì Jetpack XR hiện chỉ có trên các thiết bị có cấp độ API 34 trở lên. (Iae0f8) - Cấu phần phần mềm
SceneCorechính (xr:scenecore:scenecore) sẽ chỉ chứa các API không đồng bộ kiểu Kotlin. Nhà phát triển Java có thể dựa vào thư việnxr:scenecore:scenecore-guavađể truy cập vào các API tương thích. (If221b) - Các dự án được phát hành bằng Kotlin 2.0 cần có KGP 2.0.0 trở lên để sử dụng (Idb6b5)
- Thư viện này hiện sử dụng chú thích rỗng JSpecify, là chú thích sử dụng kiểu. Nhà phát triển Kotlin nên sử dụng đối số trình biên dịch sau đây để thực thi cách sử dụng chính xác:
-Xjspecify-annotations=strict(đây là giá trị mặc định bắt đầu từ phiên bản 2.1.0 của trình biên dịch Kotlin) (Ia8420) - Tất cả phương thức không đồng bộ trả về
ListenableFutuređều đã được thay thế bằng các hàm tạm ngưng của Kotlin. Giờ đây, các nhà phát triển Java muốn sử dụng các phương thức không đồng bộ dựa trênListenableFuturethay vì các hàm tạm ngưng Kotlin phải sử dụng các hàm mở rộng trong:xr:scenecore-scenecore-guava. Ví dụ:GuavaExrImagechứa các hàm không đồng bộ ExrImage tương đương với Guava,GuavaScenePosechứa các hàm không đồng bộScenePosetương đương với Guava,GuavaGltfModelchứa các hàm không đồng bộGuava-equivalent GltfModel, v.v. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Sửa lỗi
- Cập nhật quy tắc Jetpack XR Scenecore
ProGuardđể ngănAbstractMethodErrorcho ứng dụng thu gọn. (I91a01) - Các bản sửa lỗi bổ sung để hỗ trợ tính năng rút gọn Proguard cho Jetpack XR
SceneCore(I4f47e) - Khắc phục lỗi trong đó
InteractableComponentcó thể gây ra sự cố nếuhitPositiontrên HitInfo củaInputEventcó thể gặp sự cố nếuhitPositionđược trả về từ hệ thống là rỗng (I7a695) - Các giá trị Config *Mode đã được đổi tên để phản ánh hành vi của chúng. (I6d247)
- Khắc phục các vấn đề về FOV và
HitTesttrongSceneCoreTestApp. (I2c51e) - Sửa lỗi trong
SpatialCapabilities.hasCapability(), trong đó hàm này sẽ trả về giá trị true nếu bất kỳ chức năng nào được truyền vào bằng toán tử OR theo bit là true, thay vì chỉ trả về giá trị true nếu tất cả đều là true. (I2cd40) SurfaceEntity.StereoMode.TOP_BOTTOMđược cập nhật để có bản đồ trên cùng cho mắt trái và bản đồ dưới cùng cho mắt phải. (I4ae68)
Phiên bản 1.0.0-alpha04
Ngày 7 tháng 5 năm 2025
Phát hành androidx.xr.scenecore:scenecore:1.0.0-alpha04 và androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, thao tác quay lại sẽ hoạt động trên các thực thể bảng điều khiển không có hoạt động được nhúng. Để tính năng xử lý nút quay lại hoạt động, bạn cần chỉ định
android:enableOnBackInvokedCallback= "true"trong tệp kê khai Android. StereoSurfaceEntityhiện hỗ trợ phát MV-HEVC thông qua hai giá trịStereoModemới: MULTIVIEW_LEFT_PRIMARY và MULTIVIEW_RIGHT_PRIMARY.PanelEntity.setSizevàPanelEntity.getSizehiện trả về kích thước trong không gian mẹ.Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphavàEntity.getAlphahiện lấy một tham số mớirelativeTo, cho phép lấy/đặt giá trị tương ứng với các không gian khác nhau. Các giá trị được hỗ trợ là Parent, Activity và Real World spaces, còn giá trị mặc định cho tham số này là Parent.- Đã thêm các phương thức mở rộng Spatial Visibility Callback vào
SessionExt.ktđể theo dõi thời điểm nội dung cảnh di chuyển vào trong hoặc ra ngoài trường nhìn của người dùng. setPointSourceParamsđã được thêm vàoSpatialAudioTrack, cho phép cập nhật các tham số sau khi bản nhạc được tạo.- Thêm một lớp mới, Scene, có tham chiếu đến các API
Scenecore. Scene sẽ có thể truy cập được dưới dạng thuộc tính tiện ích của Session. Các hàm bên trongSessionExtđã được chuyển sang Scene nên bạn cần điều chỉnh các lệnh nhập; ví dụ:SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerđấu vớiSessionExt.addSpatialCapabilitiesChangedListener. ActivityPose.hitTestAsyncđã được thêm vào, cho phéphitTestđối với nội dung ảo.- Thêm loại Thành phần mới
SpatialPointerComponent, cho phép ứng dụng chỉ định biểu tượng được hiển thị cho con trỏ hoặc tắt biểu tượng. Thành phần này hiện chỉ có thể được đính kèm vào các thực thểPanelEntity. - Ra mắt nhà máy
PanelEntitymới, lấy kích thước bảng điều khiển theo mét hoặc pixel. Đã xoá nhà máyPanelEntitycũ hơn lấy hai tham số loại Kích thước cho bảng điều khiển.
Thay đổi về API
- Xoá quy định hạn chế
RequiresApi(34)đối với tất cả các gói Jetpack XR. Hạn chế này là thừa vì Jetpack XR hiện chỉ có trên các thiết bị có cấp độ API 34 trở lên. (Iae0f8) - Các dự án được phát hành bằng Kotlin 2.0 cần có KGP 2.0.0 trở lên để sử dụng (Idb6b5)
- Xoá lớp
PermissionHelper. PanelEntity.getPixelDensitykhông được dùng nữa.PanelEntity.setPixelDimensionsvàPanelEntity.getPixelDimensionđã bị xoá, thay thế bằngsetSizeInPixelsvàgetSizeInPixels.- Xoá
Entity.getActivitySpaceAlpha. Có thể thay thế bằngEntity.getAlpha(Space.Activity). - Xoá
Entity.getWorldSpaceScale. Có thể thay thế bằngEntity.getScale(Space.REAL\_WORLD). - Lớp Session trong
SceneCoređã bị xoá để thay bằng Session trong XR Runtime. StereoSurfaceEntityđổi tên thànhSurfaceEntityEntity.setSizevàEntity.getSizeđã bị xoá và các phương thức tương tự đã được thêm vàoPanelEntity.PointSourceAttributesđổi tên thànhPointSourceParamsSpatializerConstants.SOURCE\_TYPE\_BYPASSđổi tên thànhSpatializerConstants.SOURCE\_TYPE\_DEFAULT- Thực thể
PointSourceParamsđã được sửa đổi từ quyền truy cập công khai thành quyền truy cập nội bộ. AnchorEntity.createhiện yêu cầu định cấu hìnhPlaneTrackingModetrongSession.configure().- Các API
SpatialUserhiện yêu cầu phải định cấu hìnhHeadTrackingModetrongSession.configure(). - Khi không đính kèm
ResizableComponent, hệ thống sẽ cung cấp nhật ký cấp INFO thay vì nhật ký cấp ERROR. - Lớp Fov hiện là một lớp Kotlin thông thường.
- Tách
Entity.ktđể đặt từng loại thực thể cụ thể vào tệp riêng. - Khi tạo một
PanelEntitymới, hầu hết các Chế độ xem sẽ được chuyển sang mộtFrameLayout. Điều này giúp bạn dễ dàng sử dụngLayoutInspectorvới Bảng điều khiển không gian. - Thực thể
XrExtensionshiện đang được dùng hiện đã được đăng ký với nền tảng, theo cách hiệu quả nhất, để giúp gỡ lỗi ứng dụng.
Sửa lỗi
- Đã thêm một bản sửa lỗi để ngăn chặn sự cố có thể xảy ra khi di chuyển
PanelEntitycóMovableComponentvàAnchorPlacement - Khắc phục vấn đề
ResizableComponentcung cấp kích thước cũ trong lệnh gọi lạionResizeStart. - Khắc phục sự cố khi
dispose()củaJxrPlatformAdapterAxrđược gọi nhiều lần.
Phiên bản 1.0.0-alpha03
Ngày 26 tháng 2 năm 2025
Phát hành androidx.xr.scenecore:scenecore:1.0.0-alpha03 và androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Tính năng rút gọn Proguard hiện được hỗ trợ cho mã Jetpack XR
Sửa lỗi
- Các bản sửa lỗi bổ sung để hỗ trợ tính năng rút gọn Proguard cho Jetpack XR SceneCore (I4f47e)
- Cập nhật quy tắc Jetpack XR Scenecore
ProGuardđể ngănAbstractMethodErrorcho ứng dụng thu gọn. (I91a01)
Phiên bản 1.0.0-alpha02
Ngày 12 tháng 2 năm 2025
Phát hành androidx.xr.scenecore:scenecore:1.0.0-alpha02 và androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.
Thay đổi có thể gây lỗi sắp tới ảnh hưởng đến các ứng dụng được xây dựng trước phiên bản 1.0.0-alpha02
- Các phương thức nhà máy đã được chuyển từ lớp
Sessionsang một phương thức đồng hành trên từng loại tương ứng:Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)đã bị xoá và thay thế bằngActivityPanelEntity.create(Session, Dimensions, String, Pose)Session.createAnchorEntity(Anchor)đã bị xoá và thay thế bằngAnchorEntity.create(Session, Anchor)Session.createAnchorEntity(Dimensions, Int, Int, Duration)đã bị xoá và thay thế bằngAnchorEntity.create(Session, Dimensions, Int, Int, Duration)Session.createEntity(String, Pose)đã bị xoá và thay thế bằngContentlessEntity.create(Session, String, Pose)Session.createExrImageResource(String)đã bị xoá và thay thế bằngExrImage.create(Session, String)Session.createGltfEntity(GltfModel, Pose)đã bị xoá và thay thế bằngGltfModelEntity.create(Session, GltfModel, Pose)Session.createGltfModelResource(String)đã bị xoá và thay thế bằngGltfModel.create(Session, String)Session.createInteractableComponent(Executor, InputEventListener)đã bị xoá và thay thế bằngInteractableComponent.create(Session, Executor, InputEventListener)Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)đã bị xoá và thay thế bằngMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)đã bị xoá và thay thế bằngPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)Session.createResizableComponent(Dimensions, Dimensions)đã bị xoá và thay thế bằngResizableComponent.create(Session, Dimensions, Dimensions)Session.createStereoSurfaceEntity(Int, Dimensions, Pose)đã bị xoá và thay thế bằngStereoSurface.create(Session, Int, Dimensions, Pose)
- Các phương thức không dùng nữa sau đây đã bị xoá:
Session.canEmbedActivityPanel(Activity)đã bị xóa. Thay vào đó, hãy sử dụnggetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).Session.hasSpatialCapability(Int)đã bị xóa. Phương thức này đã được thay thế bằnggetSpatialCapabilities().hasCapability()để kiểm tra sự hiện diện của các chức năng không gian theo cách phân chia rõ ràng hơn, vìgetSpatialCapabilities()trả về một đối tượngSpatialCapabilities.Session.requestFullSpaceMode()đã bị xoá và thay thế bằngSpatialEnvironment.requestFullSpaceMode()Session.requestHomeSpaceMode()đã bị xoá và thay thế bằngSpatialEnvironment.requestHomeSpaceMode()
Session.setFullSpaceMode(Bundle)vàSession.setFullSpaceModeWithEnvironmentInherited(Bundle)đã được chuyển sang các hàm mở rộng. Các tệp của nhà phát triển sẽ cần thêm các lệnh nhập mới để truy cập:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)đã được chuyển sang một hàm mở rộng. Các tệp của nhà phát triển sẽ cần thêm lệnh nhập mới để truy cập:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)vàSession.getEntityForRtEntity(RtEntity)đã được chuyển sang các hàm mở rộng. Các tệp của nhà phát triển sẽ cần thêm các lệnh nhập mới để truy cập:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
- Đã xóa
Session.unpersistAnchor(Anchor) - Đã xóa
Session.createPersistedAnchorEntity(UUID)
Vấn đề đã biết
PanelEntity.setCornerRadius()vàActivityPanelEntity.setCornerRadius()có thể không có hiệu lực cho đến khi bảng điều khiển được di chuyển tiếp theo, điều này có thể được giảm thiểu bằng cách di chuyển bảng điều khiển đến vị trí hiện tại của nó- Khi
BoundsChangedđược gọi trênActivitySpace, một sốActivityPosecó thể chưa được cập nhật chính xác. Thông tin này sẽ được cập nhật trong cuộc gọiOnSpaceUpdatedtiếp theo vào ngàyActivitySpace
Thay đổi có thể gây lỗi và thay đổi về hành vi
PanelEntityvàActivityPanelEntitysẽ có bán kính góc mặc định là 32 dp trở xuống nếu bảng điều khiển có chiều rộng hoặc chiều cao nhỏ hơn 32 dp
API và tính năng mới
- Ra mắt
StereoSurface.CanvasShape, cho phép tạo canvasSphericalvàHemisphericalđể kết xuất nội dung nghe nhìn sống động. StereoSurfaceEntity.create()hiện chấp nhận tham sốCanvasShape. (Tham số này hiện bị bỏ qua, nhưng sẽ được sử dụng trong bản phát hành sau này)StereoSurfaceEntity.create()không còn nhận tham sốDimensions. Các ứng dụng phải kiểm soát kích thước của canvas thông qua việc đặtCanvasShapeStereoSurfaceEntitycó một thành viênCanvasShapecó thể được đặt linh động.StereoSurfaceEntity.dimensionshiện là thuộc tính chỉ có thể đọc; các ứng dụng nên đặtCanvasShapeđể thay đổi kích thước.StereoSurfaceEntityhiện cho phép đặt lạiStereoModesau khi khởi tạo.
Các thay đổi khác
- Giảm minSDK thời gian biên dịch xuống còn 24. Tất cả API Jetpack XR tiếp tục yêu cầu API 34 trong thời gian chạy.
- Nhà máy phiên (
Session.create) củaSceneCorekhông còn khởi chạy ý định để lấy quyềnSCENE_UNDERSTANDING. Thay vào đó, ứng dụng khách phải yêu cầu người dùng cấp quyền một cách rõ ràng trước khi cố gắng tạo neo. Quá trình tạo neo sẽ không thành công nếu người dùng không cấp quyền.
Bản sửa lỗi
getActivitySpacePose()đã được khắc phục để tính đến tỷ lệActivitySpacebằng cách trả về giá trị dịch theo mét được điều chỉnh theo tỷ lệ thay vì luôn trả về mét không được điều chỉnh theo tỷ lệ.transformPoseTohiện cũng sử dụng đúng đơn vị để tính toán các thay đổi về toạ độ khiActivitySpacecó liên quan đến nguồn hoặc đích.- Giờ đây, skybox sẽ được đặt thành skybox toàn màu đen bất cứ khi nào lựa chọn ưu tiên về skybox rỗng được truyền bằng
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). Để quay lại skybox và thành phần hình học theo giá trị mặc định của hệ thống, hãy sử dụngsetSpatialEnvironmentPreference(null).
Phiên bản 1.0.0-alpha01
Ngày 12 tháng 12 năm 2024
Phát hành androidx.xr.scenecore:scenecore-* 1.0.0-alpha01.
Các tính năng của bản phát hành ban đầu Bản phát hành ban đầu dành cho nhà phát triển của Jetpack SceneCore, một thư viện biểu đồ cảnh 3D để tạo và thao tác với các cảnh và môi trường sống động. Thư viện này cho phép bạn đặt và sắp xếp các mô hình 3D cũng như bảng điều khiển nội dung tương ứng với nhau và với môi trường ảo hoặc thực tế của bạn.
- SpatialEnvironment: Tạo trải nghiệm sống động hoàn toàn bằng hình ảnh skybox và/hoặc hình học mô hình 3D làm nền cho cảnh XR trong môi trường của bạn. Hoặc bật chế độ nhìn xuyên qua để cảnh ảo có thể tích hợp với môi trường thực tế của người dùng.
- PanelEntity: Thêm nội dung 2D vào cảnh 3D bằng cách nhúng các bố cục và Hoạt động Android tiêu chuẩn vào các bảng điều khiển không gian có thể nổi hoặc được neo vào các bề mặt trong thế giới thực.
- GltfModelEntity: Đặt, tạo ảnh động và tương tác với các mô hình 3D trong cảnh. SceneCore hỗ trợ định dạng tệp glTF để dễ dàng tích hợp với các mô hình hiện có.
- SpatialAudio: Thêm nguồn âm thanh xung quanh và âm thanh điểm vào cảnh 3D để có âm thanh không gian sống động.
- StereoSurfaceEntity: SceneCore hỗ trợ định tuyến nội dung cho mắt trái/phải được kết xuất trên một Surface của Android. Bạn có thể dùng thành phần này để kết xuất nội dung hình nổi ở định dạng song song hoặc trên dưới, chẳng hạn như ảnh nổi, video 3D hoặc các giao diện người dùng khác được kết xuất linh động. Các ứng dụng nên sử dụng MediaPlayer hoặc ExoPlayer để giải mã video.
- Hệ thống thành phần: SceneCore cung cấp một hệ thống thành phần mạnh mẽ và linh hoạt để thêm các chức năng vào nội dung XR, bao gồm cả các tính năng hỗ trợ người dùng di chuyển, đổi kích thước và tương tác với các mô hình và bảng điều khiển.
- Neo: Khi bật tính năng truyền qua, bạn có thể gắn các bảng điều khiển và mô hình vào các bề mặt thực tế, giúp người dùng tích hợp liền mạch nội dung ảo vào môi trường thực tế của họ.
- Tư thế của người dùng: Truy cập vào vị trí của người dùng trong cảnh ảo để định hướng nội dung xung quanh vị trí của người dùng.
- SpatialCapabilities: Tạo các ứng dụng thích ứng hoàn toàn, tận dụng các chức năng không gian khi có sẵn, chẳng hạn như định vị 3D cho nội dung giao diện người dùng. Không chỉ vậy, ứng dụng của bạn còn có thể theo dõi các thay đổi về chức năng trong khi ứng dụng đang thực thi, để sửa đổi trải nghiệm dựa trên cách người dùng sử dụng thiết bị Android XR của họ.
Lỗi đã biết
- Hiện tại, bạn cần có minSDK là 30 để sử dụng Jetpack SceneCore. Để giải quyết vấn đề này, hãy thêm mục nhập tệp kê khai sau
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>để có thể tạo và chạy với minSDK là 23. - Phiên có thể không hợp lệ trong nhiều trường hợp tự động tạo lại Hoạt động, bao gồm cả việc đổi kích thước bảng điều khiển chính, kết nối thiết bị ngoại vi và thay đổi giữa chế độ sáng và chế độ tối. Nếu bạn gặp phải vấn đề về việc vô hiệu hoá phiên, thì các giải pháp bao gồm việc đặt bảng điều khiển chính thành không thể đổi kích thước, sử dụng thực thể bảng điều khiển động, tắt tính năng tạo lại hoạt động cho các thay đổi cụ thể về cấu hình hoặc tắt các thay đổi về giao diện chế độ sáng/chế độ tối.
- GltfEntity không hỗ trợ các thành phần có thể di chuyển và đổi kích thước.
- Entity.getSize() không được hỗ trợ trên GltfEntity.
- Ứng dụng Jetpack XR cần yêu cầu quyền
android.permission.SCENE_UNDERSTANDINGtrong AndroidManifest. - Việc tạo phiên chỉ được hỗ trợ trên thiết bị Android XR. Tại thời điểm này, nếu tạo một Phiên và cố gắng sử dụng phiên đó trên một thiết bị không phải Android XR, bạn sẽ nhận được RuntimeException.
- Việc đặt skybox thành rỗng thông qua `SpatialEnvironment.setSpatialEnvironmentPreference() không dẫn đến skybox màu đen đồng nhất như đã ghi nhận. Điều này có thể dẫn đến việc hệ thống sử dụng hộp bầu trời theo giá trị mặc định của hệ thống hoặc không thay đổi hộp bầu trời hiện tại.
- Ứng dụng khách SceneCore nên thêm
implementation(“com.google.guava:listenablefuture-1.0”)vào cấu hình Gradle cho các phần phụ thuộc của ứng dụng. Trong một bản phát hành trong tương lai, scenecore sẽ bao gồm thư viện này dưới dạng phần phụ thuộcapiđể ứng dụng không cần khai báo rõ ràng. - SceneCore bao gồm nhầm
com.google.guava:guava-31.1-androidvàcom.google.protobuf:protobuf-javalitedưới dạng phần phụ thuộc bắc cầu. Nếu việc này dẫn đến lỗi lớp trùng lặp trong bản dựng, thì bạn có thể loại trừ hai phần phụ thuộc này một cách an toàn. - Nếu ứng dụng của bạn sử dụng SceneCore và bật ProGuard, thì ứng dụng sẽ gặp sự cố khi bạn tạo Phiên. Để khắc phục, hãy tắt ProGuard. Hãy xem hướng dẫn này để biết thêm thông tin về cách bật ProGuard.