ঘড়ির ছোট, এক ঝলকে দেখে নেওয়ার মতো ফর্ম ফ্যাক্টর Wear OS-কে এমন অ্যাপের জন্য আদর্শ প্ল্যাটফর্ম করে তোলে যা ব্যবহারকারীর লোকেশন রেকর্ড, রিপোর্ট ও উত্তর দেয়। যেমন, আপনি এমন অ্যাপ তৈরি করতে পারেন যা ব্যবহারকারীদের দূরত্ব, গতি ও দিকনির্দেশ সম্পর্কে রিয়েল-টাইম আপডেট দেয়, অথবা ব্যবহারকারীর আশেপাশের পরিবেশ সম্পর্কে চোখের পলকে দেখে নেওয়া যায় এমন সূত্র প্রদান করে।
আরও তথ্যের জন্য, লোকেশন-অ্যাওয়ার অ্যাপ তৈরি করা দেখুন।
কিছু ওয়াচে বিল্ট-ইন জিপিএস সেন্সর থাকে যা কানেক্ট করা ফোন ছাড়াই লোকেশন ডেটা পায়। আপনি ওয়াচ অ্যাপে লোকেশন ডেটা চাইলে, সিস্টেম সবচেয়ে কম শক্তি খরচ করে ফোন বা ওয়াচ থেকে লোকেশন রিট্রিভ করে। তাই, ওয়াচে জিপিএস সেন্সর না থাকলেও, আপনি লোকেশন সংক্রান্ত তথ্য পেতে পারবেন।
ব্যাটারির আয়ুর উপর লোকেশন ডেটা পাওয়ার প্রভাব কমাতে, PRIORITY_BALANCED_POWER_ACCURACY ভ্যালু সহ call
setPriority() করুন।
আলাদা আলাদা অগ্রাধিকার সেটিংস চিপকে আলাদাভাবে অপ্টিমাইজ করতে পারে।
সম্ভব হলে, setInterval() ব্যবহার করে প্রতি
মিনিটে একবারের বেশি লোকেশন জিজ্ঞাসা না করে ব্যাটারি বাঁচান।
পরবর্তী বিভাগে যেভাবে বর্ণনা করা হয়েছে, সেন্সর নেই এমন কোনও ওয়াচ ফোন থেকে ডিসকানেক্ট হয়ে গেলে, আপনার অ্যাপকে লোকেশন ডেটা না পাওয়ার বিষয়টি ম্যানেজ করতে হবে।
আপনার পদ্ধতি বেছে নিন
Wear OS অ্যাপকে লোকেশন ডেটা প্রদান করার দুটি উপায় আছে। আপনি ফিউজড লোকেশন প্রোভাইডার (FLP) বা Wear Health Services (WHS) ব্যবহার করতে পারেন। FLP হল একটি Google Play পরিষেবা API.
নিম্নলিখিত পরিস্থিতিতে FLP ব্যবহার করুন:
- আপনি কোনও নির্দিষ্ট মুহূর্তে লোকেশন ডেটা চান, কিন্তু তা একটানা নয়, যেমন পার্ক করা গাড়ির লোকেশন মার্ক করা।
- আপনি ক্রমাগত লোকেশন চান কিন্তু লোকেশন ইতিহাস চান না।
নিম্নলিখিত পরিস্থিতিতে WHS ব্যবহার করুন:
- আপনি অন্য সেন্সর থেকে ডেটা চান অথবা ভবিষ্যতে অন্য সেন্সর থেকে ডেটা চাওয়ার সম্ভাবনা আছে।
- আপনার অ্যাপ হল একটি ওয়ার্ক-আউট বা এক্সারসাইজ অ্যাপ যা একটি নির্দিষ্ট সময়সীমা ধরে লোকেশন ডেটা ট্র্যাক করে।
ফিউজড লোকেশন প্রোভাইডার ব্যবহার করা
ওয়াচে, FusedLocationProviderClient ব্যবহার করে লোকেশন ডেটা পান। FLP
ফোনের লোকেশন ডেটা ব্যবহার করতে পারে। আরও তথ্যের জন্য, লোকেশন পরিষেবা ক্লায়েন্ট
তৈরি করুন দেখুন।
লোকেশন আপডেট করার অনুরোধ করা এবং কোনও ব্যবহারকারীর লোকেশন ক্রমাগত ট্র্যাক করা সম্পর্কিত তথ্যের জন্য, লোকেশন আপডেট করার অনুরোধ করুন দেখুন।
অন-বোর্ড জিপিএস শনাক্ত করা
কোনও ব্যবহারকারী যদি বিল্ট-ইন জিপিএস সেন্সর নেই এমন কোনও ওয়াচ নিয়ে জগিং করতে যান এবং পেয়ার করা ফোনটি সাথে না নিয়ে যান, তাহলে কানেক্ট করা ডিভাইসের মাধ্যমে আপনার ওয়াচ অ্যাপ লোকেশন ডেটা পাবে না। আপনার অ্যাপে এই পরিস্থিতি শনাক্ত করুন এবং ব্যবহারকারীকে সতর্ক করুন যে লোকেশন সংক্রান্ত সুবিধা উপলভ্য নেই।
কোনও ওয়াচে বিল্ট-ইন জিপিএস সেন্সর আছে কিনা তা নির্ধারণ করতে, PackageManager.FEATURE_LOCATION_GPS-এর সাথে
hasSystemFeature() মেথড কল করুন। আপনি কোনও অ্যাক্টিভিটি শুরু করলে, নিম্নলিখিত কোডটি শনাক্ত করে যে
ওয়াচে বিল্ট-ইন জিপিএস সেন্সর আছে কিনা:
class LocationActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... } fun hasGps(): Boolean = packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS) }
ডিসকানেকশন ইভেন্ট ম্যানেজ করা
কোনও ওয়াচে বিল্ট-ইন জিপিএস সেন্সর না থাকলে এবং সেটি ফোনের সাথে কানেকশন হারিয়ে ফেললে, ওয়াচটি তার লোকেশন ডেটা স্ট্রিম হারায়। আপনার অ্যাপ যদি ডেটার একটি অবিরাম স্ট্রিম আশা করে, আপনার অ্যাপকে অবশ্যই কানেকশন বিচ্ছিন্ন হওয়া শনাক্ত করতে হবে, ব্যবহারকারীকে সতর্ক করতে হবে এবং ফাংশনালিটি ধীরে ধীরে কমিয়ে দিতে হবে।
মোবাইল ডিভাইসের মতো, আপনি যখন
FusedLocationProviderClient.requestLocationUpdates() ব্যবহার করে লোকেশন আপডেট করার অনুরোধ করেন, তখন আপনি
LocationCallback বা PendingIntent পাস করেন। এই দু'টিতেই
লোকেশন সংক্রান্ত তথ্য ও LocationAvailability স্ট্যাটাস অন্তর্ভুক্ত থাকে।
LocationCallback বিকল্প ব্যবহার করার সময়, লোকেশন
উপলভ্যতার স্ট্যাটাস সংক্রান্ত আপডেট পেতে, ওভাররাইড
onLocationAvailability() করুন।
PendingIntent বিকল্প ব্যবহার করার সময় কোনও Intent রিটার্ন করা হলে, LocationAvailability.extractLocationAvailability(Intent) পদ্ধতি ব্যবহার করে Intent থেকে
লোকেশন উপলভ্যতার স্ট্যাটাস এক্সট্র্যাক্ট করুন।
হ্যান্ডেলের লোকেশন পাওয়া যায়নি
জিপিএস সিগন্যাল হারিয়ে গেলে, আপনি ব্যবহারকারীর ওয়াচের শেষবার জানা লোকেশন ফিরিয়ে আনতে পারবেন। শেষ জানা লোকেশন রিট্রিভ করা তখন সহায়ক হয় যখন আপনি জিপিএস ফিক্স পান না এবং ওয়াচে বিল্ট-ইন জিপিএস না থাকলে এবং সেটি ফোনের সাথে কানেকশন হারিয়ে ফেললে। আরও তথ্যের জন্য, শেষবার কোথায় কানেক্ট ছিল তার লোকেশন পাওয়া দেখুন।
ব্যাচ করা কলের মাধ্যমে লোকেশন ফ্ল্যাশ করা
আপনি ব্যাচ করা কল ব্যবহার করলে, স্ক্রিন
আবার চালু হলে বা অ্যাম্বিয়েন্ট মোড থেকে ফিরে এলে, flushLocations()-এ কল করুন, যাতে ব্যাচ করা
লোকেশন অবিলম্বে সব রেজিস্টার করা LocationListeners, LocationCallbacks ও
Pending Intents-এ পাঠানো যায়।
পরীক্ষা সংক্রান্ত বিবেচনা
Wear OS ইমুলেটরের এক্সটেন্ডেড কন্ট্রোল ব্যবহার করে লোকেশন ও অন্যান্য সেন্সর ডেটা সিমুলেট করুন। আরও তথ্যের জন্য, সেন্সর সিমুলেট করা দেখুন।