ডিভাইসের বর্তমান অবস্থানে VPS উপলব্ধতা পরীক্ষা করুন৷

জিওস্পেশিয়াল এপিআই ভিপিএস এবং জিপিএস ডেটার সংমিশ্রণ ব্যবহার করে উচ্চ-নির্ভুলতার ভূ-স্থানিক ভঙ্গি তৈরি করতে। API যেকোন জায়গায় ব্যবহার করা যেতে পারে যেখানে ডিভাইসটি তার অবস্থান নির্ধারণ করতে সক্ষম হয়:

  • কম জিপিএস নির্ভুলতা সহ এলাকায়, যেমন ইনডোর স্পেস এবং ঘন শহুরে পরিবেশ, API উচ্চ-নির্ভুলতার ভঙ্গি তৈরি করতে VPS কভারেজের উপর নির্ভর করবে।
  • অল্প বা কোন ওভারহেড বাধা সহ বহিরঙ্গন পরিবেশে, জিওস্পেশিয়াল এপিআই উচ্চ নির্ভুলতার সাথে জিওস্পেশিয়াল পোজ তৈরি করতে উপলব্ধ GPS অবস্থান ডেটা ব্যবহার করতে সক্ষম হতে পারে।

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

ARCore API সক্ষম করুন

VPS উপলব্ধতা পরীক্ষা করতে আপনার অ্যাপকে অবশ্যই ARCore API সক্ষম করতে হবে।

একবার ARCore API সক্ষম হয়ে গেলে, আপনি এ ছাড়া VPS উপলব্ধতা পরীক্ষা করতে পারেন:

আপনার অ্যাপে VPS উপলব্ধতা পরীক্ষা করুন

জিওস্প্যাশিয়াল এপিআই যে কোনো জায়গায় ব্যবহার করা যেতে পারে যেখানে ডিভাইসটি তার অবস্থান নির্ধারণ করতে সক্ষম। আপনার AR অভিজ্ঞতা যদি VPS কভারেজের উপর নির্ভর করে, তাহলে আপনি ArVpsAvailabilityFuture পেতে ArSession_checkVpsAvailabilityAsync() ব্যবহার করতে পারেন, একটি অ্যাসিঙ্ক্রোনাস টাস্ক যা একটি প্রদত্ত অনুভূমিক অবস্থানে VPS উপলব্ধতা পরীক্ষা করে। একবার আপনার কাছে ArVpsAvailabilityFuture হয়ে গেলে, আপনি পোলিং বা কলব্যাকের মাধ্যমে এর ফলাফল পেতে পারেন।

ফলাফল পোল

ArFuture_getState() ব্যবহার করুন ArFuture এর অবস্থা পেতে। তিনটি ভিন্ন রাষ্ট্র আছে:

  • AR_FUTURE_STATE_PENDING : অপারেশন এখনও সম্পূর্ণ হয়নি, তাই কোনো ফলাফল জানা যায়নি৷
  • AR_FUTURE_STATE_CANCELLED : অপারেশনটি ArFuture_cancel() দ্বারা বাতিল করা হয়েছে। কোন নিবন্ধিত কলব্যাক কল করা হবে না.
  • AR_FUTURE_STATE_DONE : অপারেশন সম্পূর্ণ হয়েছে৷ ফলাফল পেতে ArVpsAvailabilityFuture_getResult() ব্যবহার করুন।

টাস্ক সম্পূর্ণ না হওয়া পর্যন্ত আপনি ArFuture_getState() চেক করা চালিয়ে যেতে পারেন।

// Obtain a ArVpsAvailabilityFuture and store it somewhere.
ArVpsAvailabilityFuture* future = NULL;
CHECK(ArSession_checkVpsAvailabilityAsync(ar_session, latitude, longitude,
                                          NULL, NULL, &future) == AR_SUCCESS);

// Poll ArVpsAvailabilityFuture later, for example, in a render loop.
ArFutureState future_state = AR_FUTURE_STATE_PENDING;
ArFuture_getState(ar_session, (ArFuture*)future, &future_state);
if (future_state == AR_FUTURE_STATE_DONE) {
  ArVpsAvailability vps_availability = AR_VPS_AVAILABILITY_UNKNOWN;
  ArVpsAvailabilityFuture_getResult(ar_session, future, &vps_availability);
  switch (vps_availability) {
    case AR_VPS_AVAILABILITY_AVAILABLE:
      // VPS is available at this location.
      break;
    case AR_VPS_AVAILABILITY_UNAVAILABLE:
      // VPS is unavailable at this location.
      break;
    case AR_VPS_AVAILABILITY_ERROR_NETWORK_CONNECTION:
      // The external service could not be reached due to a network connection
      // error.
      break;

      // Handle other error states, e.g.
      // AR_VPS_AVAILABILITY_ERROR_RESOURCE_EXHAUSTED,
      // AR_VPS_AVAILABILITY_ERROR_INTERNAL, ...
  }
  ArFuture_release((ArFuture*)future);
}

একটি কলব্যাক মাধ্যমে ফলাফল প্রাপ্ত

আপনি একটি কলব্যাকের মাধ্যমে একটি ArFuture এর ফলাফলও পেতে পারেন। ArSession_checkVpsAvailabilityAsync() ব্যবহার করুন এবং একটি callback সরবরাহ করুন। ArFuture এর AR_FUTURE_STATE_DONE স্টেট হওয়ার পরেই এই callback মূল থ্রেডে কল করা হবে।

void vps_availability_callback(void* context, ArVpsAvailability availability) {
  // Callback is called on the Main thread.

  // Handle the ArVpsAvailability result as shown above.
  // For example, show UI that enables your AR view.

  // It is a best practice to free `context` memory at the end of the callback.
  free(context);
}

void check_availability_with_callback(ArSession* ar_session, double latitude,
                                      double longitude) {
  ArVpsAvailabilityFuture* future = NULL;
  void* context = NULL;
  CHECK(ArSession_checkVpsAvailabilityAsync(
      ar_session, latitude, longitude, context, vps_availability_callback,
      &future) == AR_SUCCESS);
}

ArFuture বাতিল করুন

ArFuture_cancel() ব্যবহার করে ArFuture বাতিল করার চেষ্টা করুন। থ্রেড সমান্তরালতার কারণে, এটি সম্ভব হতে পারে যে আপনার বাতিল প্রচেষ্টা আসলে সফল হয় না। ArFuture_cancel() এই প্রচেষ্টা সফল হলে 1 এবং অন্যথায় 0 প্রদান করে।

VPS কভারেজ ছাড়াই Geospatial API ব্যবহার করুন

জিওস্পেশিয়াল এপিআই এমন এলাকায়ও ব্যবহার করা যেতে পারে যেখানে ভিপিএস কভারেজ নেই। অল্প বা কোন ওভারহেড বাধা সহ বহিরঙ্গন পরিবেশে, উচ্চ নির্ভুলতার সাথে একটি ভঙ্গি তৈরি করার জন্য GPS যথেষ্ট হতে পারে।

এরপর কি