অ্যান্ড্রয়েডে রেকর্ড করার সময় কাস্টম ডেটা যোগ করুন

রেকর্ডিং এবং প্লেব্যাক API আপনাকে একটি সেশন রেকর্ড করতে এবং এটি একটি রিয়েল-টাইম ক্যামেরা ফিডের জায়গায় ব্যবহার করতে দেয়। যাইহোক, এই রেকর্ডিংগুলিতে শুধুমাত্র ভিডিও এবং সেন্সর ডেটা থাকে৷ আপনি একটি সেশন রেকর্ডিংয়ে কাস্টম ডেটা যোগ করতে পারেন এবং প্লেব্যাকের সময় ডেটা আপনার কাছে ফেরত দিতে পারেন, যেন এটি একটি ক্যামেরা চিত্রের অংশ।

ARCore স্বয়ংক্রিয়ভাবে রেকর্ডিংয়ে কোনো কাস্টম ডেটা অন্তর্ভুক্ত করে না। বরং, এটি আপনাকে রেকর্ডিংয়ের সময় একটি ARCore ফ্রেমে কাস্টম ডেটা যোগ করতে এবং প্লেব্যাকের সময় ফ্রেম থেকে একই ডেটা পুনরুদ্ধার করতে দেয়। অ্যাপটিকে এমনভাবে প্রোগ্রাম করা আপনার উপর নির্ভর করে যাতে ব্যবহারকারীরা তাদের সেশনটি খেলার সময় তাদের প্রত্যাশা করা ডেটা ফিরে পায়।

কাস্টম ডেটার জন্য কেস ব্যবহার করুন

রেকর্ডিংয়ে কাস্টম ডেটা যোগ করা আপনার AR অ্যাপের সম্ভাবনাকে প্রসারিত করে। নিম্নলিখিত কিছু নির্দিষ্ট ব্যবহারের ক্ষেত্রে আছে.

যেতে যেতে AR ব্যবহার করুন

অতীতে, ব্যবহারকারীরা শুধুমাত্র সঠিক জায়গায় এবং সঠিক সময়ে AR অভিজ্ঞতা অ্যাক্সেস করতে পারত। যদি তারা তাদের লিভিং রুমে একটি এআর বাতি রাখতে চায়, তবে সেখানে ল্যাম্পটি দেখতে কেমন হতে পারে তা দেখতে তাদের শারীরিকভাবে অবস্থানে দাঁড়াতে হবে। কাস্টম ট্র্যাকগুলির সাহায্যে, তারা তাদের বসার ঘরটি একবার রেকর্ড করতে পারে এবং যখনই তারা মনে হয় দৃশ্যে ভার্চুয়াল আসবাবপত্র যোগ করতে পারে।

AR অভিজ্ঞতা সহ-তৈরি করুন

লাইভ সেশনের প্রয়োজনীয়তা ছাড়াই, ব্যবহারকারীদের কাছে AR সম্পাদনার জন্য আরও অনেক বিকল্প রয়েছে, যা তাদের যেকোনো স্থানে এবং সময়ে অনন্য এআর সামগ্রী তৈরি করতে এবং অ্যাক্সেস করতে দেয়। উদাহরণস্বরূপ, তারা একটি প্রদত্ত পরিবেশ রেকর্ড করতে পারে, বর্ধিত-বাস্তবতা প্রভাব যোগ করতে পারে এবং সেগুলি বন্ধুদের সাথে শেয়ার করতে পারে।

পূর্বশর্ত

এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনি মৌলিক AR ধারণা এবং কীভাবে একটি ARCore সেশন কনফিগার করবেন তা বুঝতে পেরেছেন।

কাস্টম ডেটা সহ রেকর্ড করুন

কাস্টম ডেটা সহ একটি সেশন রেকর্ডিং তৈরি করুন।

কাস্টম ডেটা সহ একটি রেকর্ডিং শুরু করুন

কাস্টম ডেটা সহ একটি রেকর্ডিং শুরু করতে এই পদক্ষেপগুলি অনুসরণ করুন৷ একটি রেকর্ডিং সেশন শুরু করতে, থামাতে এবং পরীক্ষা করতে, অনুগ্রহ করে একটি এআর সেশন রেকর্ড এবং প্লে ব্যাক দেখুন।

  1. একটি RecordingConfig পান।
  2. একটি কাস্টম UUID দিয়ে একটি নতুন Track তৈরি করুন৷ সমস্ত কাস্টম ডেটা এখানে সংরক্ষণ করা হবে।
  3. সেশন কনফিগারেশনের সময় আপনি যে RecordingConfig তৈরি করেছিলেন তাতে Track যোগ করুন।

জাভা

// 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);

কোটলিন

// 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)

সমস্ত নতুন ট্র্যাক আলাদা রেকর্ডিং হিসাবে গণ্য করা হয়, প্রতিটি রেকর্ড করা ট্র্যাক নিজস্ব UUID দখল করে।

ঐচ্ছিক: অতিরিক্ত ডেটা দিয়ে ট্র্যাক কনফিগার করুন

যে ক্ষেত্রে আপনি পরে এটি সনাক্ত করতে চান, আপনি অতিরিক্ত ডেটা সহ একটি ট্র্যাক কনফিগার করতে পারেন যা সেশন রেকর্ডিং বর্ণনা করে। উদাহরণস্বরূপ, আপনি একটি নোট যোগ করে একটি ট্র্যাককে "ট্যাগ" করতে পারেন যা আপনি সেশনটি রেকর্ড করেছেন এমন অবস্থান এবং সময় বর্ণনা করে: "এই সেশনটি বিকেলে মলে রেকর্ড করা হয়েছিল।"

জাভা

// 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));

কোটলিন

// 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 প্রকারের সাথে ট্র্যাক কনফিগার করুন৷

যদি আপনার অ্যাপটি বাহ্যিক সরঞ্জামগুলির সাথে সামঞ্জস্যপূর্ণ হওয়ার প্রয়োজন হয়, তাহলে আপনি একটি MIME প্রকারের সাথে একটি ট্র্যাক কনফিগার করতে পারেন যা ট্র্যাকে রেকর্ড করা ডেটার প্রকার বর্ণনা করে৷ যদি আপনি একটি প্রকার নির্দিষ্ট না করেন, ডেটা application/text হিসাবে শ্রেণীবদ্ধ করা হবে। ডেটা পড়ার সময় ARCore MIME প্রকার উপেক্ষা করে।

জাভা

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

কোটলিন

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

কাস্টম ডেটা ট্র্যাক রেকর্ড করুন

সমস্ত কাস্টম ট্র্যাক ডেটা Frame রেকর্ড করা হয়। AR সেশন একটি ফ্রেম পেতে session.update() ব্যবহার করে। যে সময়ে আপনি একটি ফ্রেমে ডেটা রেকর্ড করেন সেই একই সময়ে প্লেব্যাকের সময় ডেটা ফেরত দেওয়া হবে। উদাহরণস্বরূপ, যদি আপনি 00:07:02 এ “A” মান সহ recordTrackData() কল করেন, ট্র্যাকটি প্লে ব্যাক হলে আপনি 00:07:02 চিহ্নে “A” ফিরে পাবেন।

একটি কাস্টম ডেটা ট্র্যাক রেকর্ড করতে, ডেটাটিকে ByteBuffer রূপান্তর করুন এবং recordTrackData() কল করুন৷

জাভা

// 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);
}

কোটলিন

// 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 দুটি উদাহরণ ফিরে পাবেন।

জাভা

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

কোটলিন

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

একবার TrackData একটি কন্টেইনার অবজেক্টে থাকলে, কাস্টম ডেটার বাইটগুলি বের করুন।

জাভা

// 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!
}

কোটলিন

// 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!
}

এরপর কি