জিওস্পেশিয়াল এপিআই ভিপিএস এবং জিপিএস ডেটার সংমিশ্রণ ব্যবহার করে উচ্চ-নির্ভুলতার ভূ-স্থানিক ভঙ্গি তৈরি করতে। API যেকোন জায়গায় ব্যবহার করা যেতে পারে যেখানে ডিভাইসটি তার অবস্থান নির্ধারণ করতে সক্ষম হয়:
- কম জিপিএস নির্ভুলতা সহ এলাকায়, যেমন ইনডোর স্পেস এবং ঘন শহুরে পরিবেশ, API উচ্চ-নির্ভুলতার ভঙ্গি তৈরি করতে VPS কভারেজের উপর নির্ভর করবে।
- অল্প বা কোন ওভারহেড বাধা সহ বহিরঙ্গন পরিবেশে, জিওস্পেশিয়াল এপিআই উচ্চ নির্ভুলতার সাথে জিওস্পেশিয়াল পোজ তৈরি করতে উপলব্ধ GPS অবস্থান ডেটা ব্যবহার করতে সক্ষম হতে পারে।
আপনি AR অধিবেশন শুরু হওয়ার আগে একটি প্রদত্ত অনুভূমিক অবস্থানে VPS প্রাপ্যতা নির্ধারণ করতে পারেন এবং আরও নির্দিষ্ট অভিজ্ঞতা তৈরি করতে এটি ব্যবহার করতে পারেন — উদাহরণস্বরূপ, VPS উপলব্ধ থাকলেই একটি "এন্টার এআর" বোতাম উপস্থাপন করতে।
ARCore API সক্ষম করুন
VPS উপলব্ধতা পরীক্ষা করতে আপনার অ্যাপকে অবশ্যই ARCore API সক্ষম করতে হবে।
একবার ARCore API সক্ষম হয়ে গেলে, আপনি এ ছাড়া VPS উপলব্ধতা পরীক্ষা করতে পারেন:
- একটি বর্তমান চলমান
Session
(Session.resume()
কল করার আগে)। - একটি
GeospatialMode
সেট করা হচ্ছে।
আপনার অ্যাপে VPS উপলব্ধতা পরীক্ষা করুন
জিওস্প্যাশিয়াল এপিআই যে কোনো জায়গায় ব্যবহার করা যেতে পারে যেখানে ডিভাইসটি তার অবস্থান নির্ধারণ করতে সক্ষম। যদি আপনার AR অভিজ্ঞতা VPS কভারেজের উপর নির্ভর করে, তাহলে আপনি একটি VpsAvailabilityFuture
পেতে Session.checkVpsAvailabilityAsync()
ব্যবহার করতে পারেন, একটি অ্যাসিঙ্ক্রোনাস টাস্ক যা একটি প্রদত্ত অনুভূমিক অবস্থানে VPS উপলব্ধতা পরীক্ষা করে। একবার আপনার কাছে VpsAvailabilityFuture
হয়ে গেলে, আপনি পোলিং বা কলব্যাকের মাধ্যমে এর ফলাফল পেতে পারেন।
ফলাফল পোল
Future
অবস্থা পেতে Future.getState()
ব্যবহার করুন। তিনটি ভিন্ন রাষ্ট্র আছে:
-
PENDING
: অপারেশন এখনও সম্পূর্ণ হয়নি, তাই কোন ফলাফল জানা যায়নি. -
CANCELLED
:Future.cancel()
দ্বারা অপারেশনটি বাতিল করা হয়েছে। কোন নিবন্ধিত কলব্যাক কল করা হবে না. -
DONE
: অপারেশন সম্পূর্ণ। ফলাফল পেতেVpsAvailabilityFuture.getResult()
ব্যবহার করুন।
টাস্ক সম্পূর্ণ না হওয়া পর্যন্ত আপনি Future.getState()
চেক করা চালিয়ে যেতে পারেন।
জাভা
// Obtain a VpsAvailabilityFuture and store it somewhere. VpsAvailabilityFuture future = session.checkVpsAvailabilityAsync(latitude, longitude, null); // Poll VpsAvailabilityFuture later, for example, in a render loop. if (future.getState() == FutureState.DONE) { switch (future.getResult()) { case AVAILABLE: // VPS is available at this location. break; case UNAVAILABLE: // VPS is unavailable at this location. break; case ERROR_NETWORK_CONNECTION: // The external service could not be reached due to a network connection error. break; // Handle other error states, e.g. ERROR_RESOURCE_EXHAUSTED, ERROR_INTERNAL, ... } }
কোটলিন
// Obtain a VpsAvailabilityFuture and store it somewhere. val future = session.checkVpsAvailabilityAsync(latitude, longitude, null) // Poll VpsAvailabilityFuture later, for example, in a render loop. if (future.state == FutureState.DONE) { when (future.result) { VpsAvailability.AVAILABLE -> { // VPS is available at this location. } VpsAvailability.UNAVAILABLE -> { // VPS is unavailable at this location. } VpsAvailability.ERROR_NETWORK_CONNECTION -> { // The external service could not be reached due to a network connection error. } else -> { TODO("Handle other error states, e.g. ERROR_RESOURCE_EXHAUSTED, ERROR_INTERNAL, ...") } } }
একটি কলব্যাক মাধ্যমে ফলাফল প্রাপ্ত
আপনি একটি কলব্যাকের মাধ্যমে Future
ফলাফলও পেতে পারেন। Session.checkVpsAvailabilityAsync()
ব্যবহার করুন এবং একটি callback
সরবরাহ করুন। Future
DONE
হওয়ার পর শীঘ্রই মূল থ্রেডে এই callback
কল করা হবে।
জাভা
session.checkVpsAvailabilityAsync( latitude, longitude, result -> { // Callback is called on the Main thread. switch (result) { // Handle the VpsAvailability result as shown above. // For example, show UI that enables your AR view. } });
কোটলিন
session.checkVpsAvailabilityAsync(latitude, longitude) { result -> // Callback is called on the Main thread. // Handle the VpsAvailability result as shown above. // For example, show UI that enables your AR view. TODO("Handle VpsAvailability " + result) }
Future
বাতিল করুন
Future
বাতিল করার চেষ্টা করতে Future.cancel()
ব্যবহার করুন। থ্রেড সমান্তরালতার কারণে, এটি সম্ভব হতে পারে যে আপনার বাতিল প্রচেষ্টা আসলে সফল হয় না। এই প্রচেষ্টা সফল হলে Future.cancel()
true
এবং অন্যথায় false
ফেরত দেয়।
VPS কভারেজ ছাড়াই Geospatial API ব্যবহার করুন
জিওস্পেশিয়াল এপিআই এমন এলাকায়ও ব্যবহার করা যেতে পারে যেখানে ভিপিএস কভারেজ নেই। অল্প বা কোন ওভারহেড বাধা সহ বহিরঙ্গন পরিবেশে, উচ্চ নির্ভুলতার সাথে একটি ভঙ্গি তৈরি করার জন্য GPS যথেষ্ট হতে পারে।
এরপর কি
- বাস্তব জগতে ব্যবহারকারীর ডিভাইসের সঠিক অবস্থান নির্ধারণ করতে ডিভাইস ক্যামেরার ভূ-স্থানিক ভঙ্গি পান ।