Android पर रिकॉर्डिंग करते समय कस्टम डेटा जोड़ना

द रिकॉर्डिंग ऐंड 'प्लेबैक एपीआई' की मदद से, किसी सेशन को रिकॉर्ड किया जा सकता है और उसका इस्तेमाल रीयल-टाइम कैमरा फ़ीड की जगह किया जा सकता है. हालांकि, इन रिकॉर्डिंग में सिर्फ़ वीडियो और सेंसर का डेटा होता है. किसी सेशन की रिकॉर्डिंग में कस्टम डेटा भी जोड़ा जा सकता है और वीडियो चलाने के दौरान वह आपको वापस मिल सकता है. यह इस तरह से काम करता है जैसे यह किसी कैमरे का हिस्सा हो.

ARCore, रिकॉर्डिंग में कोई भी कस्टम डेटा अपने-आप शामिल नहीं करता. इसके बजाय, यह आपको रिकॉर्डिंग के दौरान ARCore फ़्रेम में कस्टम डेटा जोड़ने और उसे चलाने के दौरान फ़्रेम से वापस पाने की सुविधा देता है. यह आप पर निर्भर करता है कि ऐप्लिकेशन को इस तरह प्रोग्राम किया जाए कि उपयोगकर्ता को अपना सेशन चलाने के दौरान, उम्मीद के मुताबिक डेटा वापस मिल जाए.

कस्टम डेटा के लिए इस्तेमाल के उदाहरण

रिकॉर्डिंग में कस्टम डेटा जोड़ने से, एआर ऐप्लिकेशन का इस्तेमाल करना ज़्यादा आसान हो जाता है. नीचे कुछ खास इस्तेमाल के उदाहरण दिए गए हैं.

कभी भी, कहीं भी एआर (ऑगमेंटेड रिएलिटी) का इस्तेमाल करें

पहले लोग एआर (ऑगमेंटेड रिएलिटी) की सुविधाओं को सिर्फ़ सही जगह और सही समय पर ऐक्सेस कर सकते थे. अगर उन्हें अपने लिविंग रूम में एआर लैंप लगाना है, तो उन्हें उस जगह पर खुद जाकर देखना होगा कि लैंप वहां कैसा दिखेगा. कस्टम ट्रैक की मदद से, वे अपने लिविंग रूम को एक बार रिकॉर्ड कर सकते हैं और जब चाहें, उसमें वर्चुअल फ़र्नीचर जोड़ सकते हैं.

एआर अनुभवों को साथ मिलकर बनाना

लाइव सेशन की ज़रूरत न होने पर, उपयोगकर्ताओं के पास एआर (ऑगमेंटेड रिएलिटी) में बदलाव करने के कई विकल्प होते हैं. इनकी मदद से, वे किसी भी जगह और समय पर यूनीक एआर कॉन्टेंट बना सकते हैं और उसे ऐक्सेस कर सकते हैं. उदाहरण के लिए, बच्चे किसी डिवाइस पर मौजूद माहौल को रिकॉर्ड कर सकते हैं, उसमें ऑगमेंटेड रिएलिटी (एआर) इफ़ेक्ट जोड़ सकते हैं, और उसे अपने दोस्तों के साथ शेयर कर सकते हैं.

ज़रूरी शर्तें

पक्का करें कि आपको एआर के बुनियादी सिद्धांतों के बारे में पता हो साथ ही, आगे बढ़ने से पहले ARCore सेशन को कॉन्फ़िगर करने का तरीका जानें.

कस्टम डेटा के साथ रिकॉर्ड करना

कस्टम डेटा के साथ सेशन रिकॉर्डिंग बनाएं.

कस्टम डेटा की मदद से रिकॉर्डिंग शुरू करना

कस्टम डेटा के साथ रिकॉर्डिंग शुरू करने के लिए, यह तरीका अपनाएं. रिकॉर्डिंग सेशन शुरू करने, रोकने, और उसकी जांच करने के लिए, कृपया एआर सेशन रिकॉर्ड करना और उसे चलाना लेख पढ़ें.

  1. RecordingConfig पाएं.
  2. कस्टम यूयूआईडी के साथ नया Track बनाएं. यहां सारा कस्टम डेटा सेव किया जाएगा.
  3. Track को उस RecordingConfig में जोड़ें जिसे आपने सेशन कॉन्फ़िगरेशन के दौरान बनाया था.

Java

// 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.
UUID trackUUID = UUID.fromString("de5ec7a4-09ec-4c48-b2c3-a98b66e71893"); // from UUID generator
Track track = new Track(session).setId(trackUUID);

// Add the Track to the recordingConfig.
// recordingConfig must already be configured.
recordingConfig.addTrack(track);

Kotlin

// 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.
val trackUUID = UUID.fromString("de5ec7a4-09ec-4c48-b2c3-a98b66e71893") // from UUID generator
val track = Track(session).setId(trackUUID)

// Add the Track to the recordingConfig.
// recordingConfig must already be configured.
recordingConfig.addTrack(track)

सभी नए ट्रैक को अलग-अलग रिकॉर्डिंग माना जाता है. रिकॉर्ड किए गए हर ट्रैक का अपना यूयूआईडी होता है.

वैकल्पिक: अतिरिक्त डेटा के साथ ट्रैक कॉन्फ़िगर करें

अगर आपको बाद में इसकी पहचान करनी है, तो ट्रैक को अतिरिक्त डेटा के साथ कॉन्फ़िगर किया जा सकता है. इससे सेशन की रिकॉर्डिंग के बारे में जानकारी मिलती है. उदाहरण के लिए, आप एक नोट जोड़कर एक ट्रैक को “टैग” कर सकते हैं जो उस स्थान और समय का वर्णन करता है जब आपने सत्र रिकॉर्ड किया था: “यह सत्र मॉल में दोपहर में रिकॉर्ड किया गया था.”

Java

// Set additional data on this track.
// For example, describe where you recorded the session.
byte[] customTrackData = "airport".getBytes(StandardCharsets.UTF_8);
track.setMetadata(ByteBuffer.wrap(customTrackData));

Kotlin

// Set additional data on this track.
// For example, describe where you recorded the session.
val customTrackData: ByteArray = "airport".toByteArray()
track.setMetadata(ByteBuffer.wrap(customTrackData))

ज़रूरी नहीं: MIME टाइप के साथ ट्रैक को कॉन्फ़िगर करें

अगर आपके ऐप्लिकेशन को बाहरी टूल के साथ काम करना है, तो किसी ट्रैक को एमआईई टाइप के साथ कॉन्फ़िगर किया जा सकता है. इससे, ट्रैक में रिकॉर्ड किए गए डेटा के टाइप के बारे में पता चलता है. अगर आपने डेटा का टाइप नहीं बताया है, तो डेटा को application/text की कैटगरी में रखा जाएगा. ARCore, डेटा को पढ़ते समय MIME टाइप को अनदेखा कर देता है.

Java

// Set a MIME type for compatibility with external tools.
track.setMimeType("text/csv");

Kotlin

// Set a MIME type for compatibility with external tools.
track.setMimeType("text/csv")

कस्टम डेटा ट्रैक रिकॉर्ड करें

कस्टम ट्रैक का सारा डेटा, Frame में रिकॉर्ड किया जाता है. एआर सेशन, फ़्रेम पाने के लिए session.update() का इस्तेमाल करते हैं. किसी फ़्रेम पर डेटा रिकॉर्ड करने का समय, वही समय होता है जब वीडियो चलने के दौरान डेटा वापस दिया जाता है. उदाहरण के लिए, अगर आपने recordTrackData() को 00:07:02 पर “A” वैल्यू के साथ कॉल किया है, तो ट्रैक को वापस चलाने पर आपको “A”, 00:07:02 के निशान पर वापस मिल जाएगा.

अपनी पसंद के मुताबिक डेटा ट्रैक रिकॉर्ड करने के लिए, डेटा को ByteBuffer में बदलें और recordTrackData() को कॉल करें.

Java

// Place an AR lamp in a room.
if (placeLampButtonWasPressed) {
  Lamp lampProduct = Lamp.FLOOR; // a floor lamp
  // Convert the lamp data into a byte array.
  ByteBuffer lampData = ByteBuffer.wrap(new byte[] {(byte) lampProduct.ordinal()});
  frame.recordTrackData(trackUUID, lampData);
}

Kotlin

// Place an AR lamp in a room.
if (placeLampButtonWasPressed) {
  val lampProduct = Lamp.FLOOR // a floor lamp
  // Convert the lamp data into a byte array.
  val lampData = ByteBuffer.wrap(byteArrayOf(lampProduct.ordinal.toByte()))
  frame.recordTrackData(trackUUID, lampData)
}

कस्टम डेटा ट्रैक चलाएं

प्लेबैक के दौरान किसी सेशन की रिकॉर्डिंग से कस्टम डेटा निकालें.

वीडियो चलाना शुरू करना

कस्टम डेटा के साथ वीडियो चलाने की सुविधा को शुरू करना, किसी सामान्य सेशन की रिकॉर्डिंग को शुरू करने जैसा ही है.

कस्टम डेटा दिखाएं

किसी फ़्रेम पर रिकॉर्ड किया गया कस्टम डेटा पाने के लिए, getUpdatedTrackData() को कॉल करें. एक ही फ़्रेम से एक से ज़्यादा ट्रैक डेटा वापस पाया जा सकता है. उदाहरण के लिए, अगर आपने रिकॉर्डिंग के दौरान एक ही फ़्रेम पर recordTrackData() को दो बार कॉल किया है, तो आपको वीडियो चलाने के दौरान TrackData के दो इंस्टेंस वापस मिलेंगे.

Java

// Fetch the data recorded on a select frame and place it in a container object.
Collection<TrackData> trackDataList = frame.getUpdatedTrackData(trackUUID);

Kotlin

// Fetch the data recorded on a select frame and place it in a container object.
val trackDataList: Collection<TrackData> = frame.getUpdatedTrackData(trackUUID)

TrackData को कंटेनर ऑब्जेक्ट में रखने के बाद, कस्टम डेटा की बाइट निकालें.

Java

// Extract the bytes of custom data from the list of track data.
for (TrackData trackData : trackDataList) {
  ByteBuffer bytes = trackData.getData();
  Lamp lamp = Lamp.values()[bytes.get()]; // this is the lamp!
}

Kotlin

// Extract the bytes of custom data from the list of track data.
for (trackData in trackDataList) {
  val bytes = trackData.data
  val lamp = Lamp.values()[bytes.get().toInt()] // this is the lamp!
}

आगे क्या होगा