Thêm dữ liệu tuỳ chỉnh khi ghi trên Nền tảng thực tế tăng cường (AR) nhắm đến Android

API Quay và phát cho phép bạn ghi lại một phiên và sử dụng phiên đó thay cho nguồn cấp dữ liệu máy ảnh theo thời gian thực. Tuy nhiên, các bản ghi này chỉ chứa dữ liệu video và cảm biến. Bạn cũng có thể thêm dữ liệu tuỳ chỉnh vào bản ghi phiên và nhận lại dữ liệu đó trong khi phát, như thể dữ liệu đó là một phần của hình ảnh máy ảnh.

ARCore không tự động đưa bất kỳ dữ liệu tuỳ chỉnh nào vào bản ghi. Thay vào đó, API này cho phép bạn thêm dữ liệu tuỳ chỉnh vào khung ARCore trong khi quay video và truy xuất cùng dữ liệu đó từ khung trong khi phát. Bạn có thể lập trình ứng dụng theo cách mà người dùng sẽ nhận lại dữ liệu mà họ mong đợi khi phát lại phiên của họ.

Trường hợp sử dụng dữ liệu tuỳ chỉnh

Việc thêm dữ liệu tuỳ chỉnh vào bản ghi sẽ mở rộng khả năng cho ứng dụng AR của bạn. Sau đây là một số trường hợp sử dụng cụ thể.

Sử dụng công nghệ AR khi di chuyển

Trước đây, người dùng chỉ có thể truy cập vào trải nghiệm AR ở đúng nơi và đúng thời điểm. Nếu muốn đặt một chiếc đèn AR trong phòng khách, họ phải đứng tại vị trí đó để xem chiếc đèn trông như thế nào. Với các kênh tuỳ chỉnh, họ có thể quay video phòng khách một lần rồi thêm đồ nội thất ảo vào cảnh bất cứ khi nào họ muốn.

Cộng tác tạo trải nghiệm thực tế tăng cường

Khi không cần phải có phiên trực tiếp, người dùng có nhiều lựa chọn hơn để chỉnh sửa nội dung AR, cho phép họ tạo và truy cập nội dung AR độc đáo ở bất kỳ nơi đâu và bất cứ lúc nào. Ví dụ: họ có thể quay lại một môi trường nhất định, thêm hiệu ứng thực tế tăng cường và chia sẻ với bạn bè.

Điều kiện tiên quyết

Hãy đảm bảo rằng bạn hiểu các khái niệm cơ bản về AR và cách định cấu hình phiên ARCore trước khi tiếp tục.

Khởi chạy bản ghi bằng dữ liệu tuỳ chỉnh

Hãy làm theo các bước sau để khởi chạy bản ghi bằng dữ liệu tuỳ chỉnh. Để bắt đầu, dừng và kiểm tra một phiên ghi, vui lòng xem phần Ghi và phát lại một phiên AR.

  1. Lấy ARCoreRecordingConfig.
  2. Tạo một Track mới bằng UUID tuỳ chỉnh. Tất cả dữ liệu tuỳ chỉnh sẽ được lưu tại đây.
  3. Thêm Track vào ARCoreRecordingConfig mà bạn đã tạo trong quá trình định cấu hình phiên.
// Initialize a new track with a custom UUID.
// Make sure to save the UUID because it is the ID that you will use
// to get your data back during playback.
var track = new Track {
 Id = Guid.Parse("de5ec7a4-09ec-4c48-b2c3-a98b66e71893") // from UUID generator
};

// Add the Track to the recordingConfig.
// recordingConfig must already be configured.
List<Track> tracks = new List<Track>();
tracks.Add(track);
recordingConfig.Tracks = tracks;

Tất cả các bản nhạc mới đều được coi là bản ghi riêng biệt, trong đó mỗi bản nhạc được ghi đều có UUID riêng.

Định cấu hình kênh bằng dữ liệu bổ sung

Định cấu hình kênh bằng dữ liệu bổ sung mô tả bản ghi phiên. Ví dụ: bạn có thể "gắn thẻ" một bản nhạc bằng cách thêm ghi chú mô tả vị trí và thời gian bạn ghi lại phiên: "Phiên này được ghi lại tại trung tâm mua sắm vào buổi chiều".

// Set additional data on this track.
// For example, describe where you recorded the session.
byte[] metadata = ...
track.Metadata = metadata;

Định cấu hình kênh bằng loại MIME

Định cấu hình một kênh bằng loại MIME mô tả loại dữ liệu được ghi lại trong kênh đó để tương thích với các công cụ bên ngoài.

Nếu bạn không chỉ định loại, dữ liệu sẽ được phân loại là application/text. ARCore bỏ qua loại MIME khi đọc dữ liệu.

// Set a MIME type for compatibility with external tools.
track.MimeType = "text/csv";

Ghi lại các kênh dữ liệu tuỳ chỉnh

Tất cả dữ liệu kênh tuỳ chỉnh đều được ghi vào khung. Thời điểm bạn ghi dữ liệu vào một khung hình cũng chính là thời điểm dữ liệu được trả về trong quá trình phát. Ví dụ: nếu gọi RecordTrackData() với giá trị "A" tại 00:07:02, bạn sẽ nhận được "A" trở lại tại dấu 00:07:02 khi phát bản nhạc.

Để ghi lại một kênh dữ liệu tuỳ chỉnh, hãy gọi RecordTrackData().

// Place an AR lamp in a room.
if (placeLampButtonWasPressed) {
  // Convert the lamp data into a byte array.
  var lampData = new byte[] { (byte) Lamp.FLOOR };  // a floor lamp
  recordingManager.RecordTrackData(trackGuid, lampData);
}

Phát lại các kênh dữ liệu tuỳ chỉnh

Trích xuất dữ liệu tuỳ chỉnh từ bản ghi phiên trong khi phát.

Khởi chạy quá trình phát

Việc khởi chạy phát bằng dữ liệu tuỳ chỉnh cũng giống như khởi chạy phát bản ghi phiên thông thường.

Trả về dữ liệu tuỳ chỉnh

Gọi GetUpdatedTrackData() để truy xuất dữ liệu tuỳ chỉnh được ghi lại trên một khung. Bạn có thể truy xuất nhiều dữ liệu kênh từ cùng một khung. Ví dụ: nếu gọi RecordTrackData() hai lần trên cùng một khung hình trong quá trình quay video, bạn sẽ nhận được hai thực thể của TrackData trong quá trình phát.

// Fetch the data recorded on a select frame and place it in a
// container object.
var trackDataList = recordingManager.GetUpdatedTrackData(trackGuid);

Sau khi TrackData nằm trong đối tượng vùng chứa, hãy trích xuất các byte dữ liệu tuỳ chỉnh.

// Extract the bytes of custom data from the list of track data.
foreach (TrackData trackData in trackDataList) {
  var data = trackData.Data;
  Lamp lamp = Lamp.fromByte(data[0]); // This is the lamp!
}

Bước tiếp theo