{ } { }
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 12 tháng 2 năm 2025 | - | - | - | 1.0.0-alpha02 |
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.0.0-alpha01" // Required for Java implementation "com.google.guava:listenableFuture:1.0" // Required for Kotlin implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha01") // Required for Java implementation("com.google.guava:listenableFuture:1.0") // Required for Kotlin implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.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ề Công cụ theo dõi lỗi để biết thêm thông tin.
Phiên bản 1.0
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 tạo 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
Session
sang một phương thức đồng hành trên từng loại tương ứng:- Xoá
Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)
và thay thế bằngActivityPanelEntity.create(Session, Dimensions, String, Pose)
- Xoá
Session.createAnchorEntity(Anchor)
và thay thế bằngAnchorEntity.create(Session, Anchor)
- Xoá
Session.createAnchorEntity(Dimensions, Int, Int, Duration)
và thay thế bằngAnchorEntity.create(Session, Dimensions, Int, Int, Duration)
- Xoá
Session.createEntity(String, Pose)
và thay thế bằngContentlessEntity.create(Session, String, Pose)
- Xoá
Session.createExrImageResource(String)
và thay thế bằngExrImage.create(Session, String)
- Xoá
Session.createGltfEntity(GltfModel, Pose)
và thay thế bằngGltfModelEntity.create(Session, GltfModel, Pose)
- Xoá
Session.createGltfModelResource(String)
và thay thế bằngGltfModel.create(Session, String)
- Xoá
Session.createInteractableComponent(Executor, InputEventListener)
và thay thế bằngInteractableComponent.create(Session, Executor, InputEventListener)
- Xoá
Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)
và thay thế bằngMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)
- Xoá
Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)
và thay thế bằngPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)
- Xoá
Session.createResizableComponent(Dimensions, Dimensions)
và thay thế bằngResizableComponent.create(Session, Dimensions, Dimensions)
- Xoá
Session.createStereoSurfaceEntity(Int, Dimensions, Pose)
và thay thế bằngStereoSurface.create(Session, Int, Dimensions, Pose)
- Xoá
- 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ằng cách sử dụnggetSpatialCapabilities().hasCapability()
như một cách phân chia rõ ràng hơn để kiểm tra xem có các chức năng không gian hay không vìgetSpatialCapabilities()
trả về một đối tượngSpatialCapabilities
.- Xoá
Session.requestFullSpaceMode()
và thay thế bằngSpatialEnvironment.requestFullSpaceMode()
- Xoá
Session.requestHomeSpaceMode()
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 dành cho 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.setFullSpaceMode
import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)
đã được chuyển sang một hàm mở rộng. Các tệp dành cho 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 dành cho 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.getEntitiesOfType
import 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, bạn có thể giảm thiểu điều này bằng cách di chuyển bảng điều khiển về vị trí hiện tại- Khi
BoundsChanged
được gọi trênActivitySpace
, một sốActivityPose
có thể chưa được cập nhật chính xác. Thông tin này sẽ được cập nhật trong lệnh gọiOnSpaceUpdated
sau trênActivitySpace
Thay đổi có thể gây lỗi và thay đổi về hành vi
PanelEntity
vàActivityPanelEntity
sẽ 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
Các API và tính năng mới
- Giới thiệu
StereoSurface.CanvasShape
, cho phép tạo các canvasSpherical
và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
. (Thông 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 thiết lậpCanvasShape
StereoSurfaceEntity
có một thành phầnCanvasShape
có thể được đặt một cách linh động.StereoSurfaceEntity.dimensions
hiện là thuộc tính chỉ có thể đọc; các ứng dụng nên đặtCanvasShape
để thay đổi kích thước.StereoSurfaceEntity
hiện cho phép đặt lạiStereoMode
sau khi tạo.
Các thay đổi khác
- Giảm minSDK tại thời điểm biên dịch xuống còn 24. Tất cả API Jetpack XR vẫn yêu cầu API 34 trong thời gian chạy.
- Nhà máy phiên (
Session.create
) củaSceneCore
không còn khởi chạy ý định để có được quyềnSCENE_UNDERSTANDING
nữa. 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. Việc tạo neo sẽ không thành công nếu người dùng không cấp quyền.
Sửa lỗi
getActivitySpacePose()
đã được sửa để tính đến tỷ lệActivitySpace
bằng cách trả về các giá trị dịch trong mét theo tỷ lệ thay vì luôn trả về mét không theo tỷ lệ.transformPoseTo
hiện cũng sử dụng các đơn vị phù hợp để tính toán các thay đổi về toạ độ khiActivitySpace
liên quan đến nguồn hoặc đích.- Giờ đây, hộp bầu trời sẽ được đặt thành hộp bầu trời toàn màu đen bất cứ khi nào bạn truyền tuỳ chọn hộp bầu trời rỗng bằng
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))
. Để quay lại hộp trời và hình học 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 và bảng nội dung tương ứng với nhau cũng như môi trường ảo hoặc thực tế của bạn.
- SpatialEnvironment: Tạo trải nghiệm sống động bằng hình ảnh hộp bầu trời và/hoặc hình học mô hình 3D làm phông nền cho cảnh XR của môi trường. Hoặc bật tính năng truyền để cảnh ảo của bạn có thể tích hợp với môi trường thực 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 thực tế.
- 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à điểm vào cảnh 3D để có âm thanh không gian sống động, chân thực.
- StereoSurfaceEntity: SceneCore hỗ trợ định tuyến mắt trái/phải của nội dung được kết xuất trên một Surface Android. Bạn có thể dùng tính năng này để kết xuất nội dung âm thanh nổi ở định dạng cạnh nhau hoặc trên dưới, chẳng hạn như ảnh âm thanh nổi, video 3D hoặc các giao diện người dùng được kết xuất động khác. 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.
- Mối liên kết: Khi bật tính năng truyền tải, bạn có thể đính kèm 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ế 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 của bạn 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 khả năng không gian khi có, chẳng hạn như định vị nội dung giao diện người dùng theo 3D. Không chỉ vậy, ứng dụng của bạn còn có thể theo dõi các thay đổi đối với 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 đang sử dụng thiết bị Android XR.
Lỗi đã biết
- Hiện tại, bạn cần có minSDK là 30 để sử dụng Jetpack SceneCore. Để khắc phục, hãy thêm mục nhập tệp kê khai
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
sau đây để có thể tạo và chạy với minSDK là 23. - Phiên có thể trở nên 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à tối. Nếu bạn gặp phải vấn đề về việc vô hiệu hoá phiên, bạn có thể khắc phục bằng cách không thay đổi kích thước bảng điều khiển chính, 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 đối với 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/tối.
- Các thành phần có thể di chuyển và thay đổi kích thước không được hỗ trợ trên GltfEntity.
- Entity.getSize() không được hỗ trợ trên GltfEntity.
- Các ứng dụng Jetpack XR bắt buộc phải yêu cầu quyền
android.permission.SCENE_UNDERSTANDING
trong AndroidManifest. - Tính năng 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 một RuntimeException.
- Việc đặt hộp bầu trời thành rỗng thông qua `SpatialEnvironment.setSpatialEnvironmentPreference() không dẫn đến hộp bầu trời màu đen đồng nhất như đã ghi nhận. Điều này có thể dẫn đến hộp bầu trời 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 SceneCore phải 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 bản phát hành trong tương lai, scenecore sẽ đưa thư viện này vào dưới dạng phần phụ thuộcapi
để ứng dụng không cần phải khai báo rõ ràng. - SceneCore bao gồm
com.google.guava:guava-31.1-android
vàcom.google.protobuf:protobuf-javalite
dưới dạng phần phụ thuộc bắc cầu một cách không chính xác. Nếu điều này dẫn đến lỗi lớp trùng lặp trong bản dựng, bạn có thể loại trừ an toàn 2 phần phụ thuộc này. - 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.