ওয়াই-ফাই লোকেশন: RTT-এর সাথে রেঞ্জিং

আপনি Wi-Fi RTT (রাউন্ড-ট্রিপ-টাইম) API দ্বারা প্রদান করা ওয়াই-ফাই লোকেশন ফাংশনালিটি ব্যবহার করে আশেপাশের RTT-উপযোগী ওয়াই-ফাই অ্যাক্সেস পয়েন্ট এবং পিয়ার Wi-Fi Aware ডিভাইসের দূরত্ব পরিমাপ করতে পারবেন।

আপনি যদি তিন বা তার বেশি অ্যাক্সেস পয়েন্টের দূরত্ব পরিমাপ করেন, তাহলে আপনি একটি মাল্টিলেটারেশন অ্যালগরিদম ব্যবহার করে ডিভাইসের অবস্থান অনুমান করতে পারেন যা সেই পরিমাপের সাথে সবচেয়ে উপযুক্ত। ফলাফল সাধারণত ১-২ মিটারের মধ্যে সঠিক হয়।

এই নির্ভুলতার সাহায্যে, আপনি ইনডোর নেভিগেশন, দ্ব্যর্থহীন ভয়েস কন্ট্রোল (যেমন, "এই আলোটি চালু করুন") এবং লোকেশন-ভিত্তিক তথ্য (যেমন, "এই প্রোডাক্টের জন্য কি বিশেষ অফার আছে?")-এর মতো সূক্ষ্ম লোকেশন-ভিত্তিক পরিষেবা ডেভেলপ করতে পারবেন।

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

ওয়াই-ফাই RTT এবং সংশ্লিষ্ট ফাইন-টাইম-মেজারমেন্ট (FTM) ক্ষমতা IEEE 802.11-2016 স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট করা হয়। Wi-Fi RTT-এর জন্য FTM দ্বারা প্রদত্ত সুনির্দিষ্ট সময় পরিমাপ প্রয়োজন কারণ এটি দুটি ডিভাইসের মধ্যে দূরত্ব গণনা করে ডিভাইসগুলির মধ্যে একটি প্যাকেট রাউন্ড ট্রিপ করতে যে সময় নেয় তা পরিমাপ করে এবং সেই সময়কে আলোর গতি দ্বারা গুণ করে।

Android 15 (API লেভেল 35) IEEE 802.11az নন-ট্রিগার ভিত্তিক (NTB) রেঞ্জিংয়ের জন্য সহায়তা চালু করেছে।

Android ভার্সনের উপর ভিত্তি করে প্রয়োগের ক্ষেত্রে পার্থক্য

Android 9 (API লেভেল ২৮)-এ Wi-Fi RTT প্রথম চালু করা হয়। Android 9-এ চলা ডিভাইসের সাথে মাল্টিলেটারেশন ব্যবহার করে ডিভাইসের অবস্থান নির্ধারণ করতে এই প্রোটোকল ব্যবহার করার সময়, আপনার অ্যাপে পূর্ব-নির্ধারিত অ্যাক্সেস পয়েন্ট (AP) লোকেশন ডেটাতে অ্যাক্সেস থাকতে হবে। এই ডেটা কীভাবে স্টোর এবং রিট্রিভ করবেন তা আপনার উপর নির্ভর করে।

Android 10 (API লেভেল ২৯) এবং তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে, AP লোকেশন ডেটা ResponderLocation অবজেক্ট হিসেবে দেখানো যেতে পারে, যার মধ্যে অক্ষাংশ, দ্রাঘিমাংশ এবং উচ্চতা অন্তর্ভুক্ত থাকে। যেসব ওয়াই-ফাই RTT AP-তে লোকেশন কনফিগারেশন তথ্য/লোকেশন সিভিক রিপোর্ট (LCI/LCR ডেটা) কাজ করে, সেগুলির ক্ষেত্রে রেঞ্জিং প্রসেস চলাকালীন প্রোটোকল একটি ResponderLocation অবজেক্ট রিটার্ন করবে।

এই ফিচার অ্যাপকে AP-এর অবস্থান সরাসরি জিজ্ঞাসা করার জন্য কোয়েরি করার অনুমতি দেয়, যাতে এই তথ্য আগে থেকে স্টোর করার প্রয়োজন না হয়। তাই, আপনার অ্যাপ AP খুঁজে পেতে এবং তাদের অবস্থান নির্ধারণ করতে পারে, এমনকি AP আগে থেকে জানা না থাকলেও, যেমন কোনও ব্যবহারকারী নতুন বিল্ডিংয়ে প্রবেশ করলে।

Android 15 (API লেভেল 35) ও তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসে IEEE 802.11az NTB রেঞ্জিং সাপোর্ট উপলভ্য। এর অর্থ হল, ডিভাইসটি যদি IEEE 802.11az NTB ইনিশিয়েটর মোড (WifiRttManager.CHARACTERISTICS_KEY_BOOLEAN_NTB_INITIATOR দ্বারা নির্দেশিত) সাপোর্ট করে, তাহলে আপনার অ্যাপ একটি রেঞ্জ অনুরোধের মাধ্যমে IEEE 802.11mc এবং IEEE 802.11az উভয় সক্ষম AP খুঁজে পেতে পারে। RangingResult API-কে আরও উন্নত করা হয়েছে যাতে রেঞ্জিং পরিমাপের মধ্যে ব্যবধানের জন্য ব্যবহার করা যেতে পারে এমন ন্যূনতম এবং সর্বাধিক মান সম্পর্কে তথ্য প্রদান করা যায়, যার ফলে আপনার অ্যাপের নিয়ন্ত্রণে সঠিক ব্যবধান থাকে।

প্রয়োজনীয়তা

  • রেঞ্জিংয়ের অনুরোধ করা ডিভাইসের হার্ডওয়্যারকে অবশ্যই 802.11-2016 FTM স্ট্যান্ডার্ড বা 802.11az স্ট্যান্ডার্ড (নন-ট্রিগার ভিত্তিক রেঞ্জিং) প্রয়োগ করতে হবে।
  • যে ডিভাইস রেঞ্জিংয়ের অনুরোধ করছে, সেটিতে Android 9 (API লেভেল ২৮) বা তার পরবর্তী কোনও ভার্সন থাকতে হবে। Android 15 (API লেভেল ৩৫) এবং তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে IEEE 802.11az নন-ট্রিগার ভিত্তিক রেঞ্জিং চালু করা আছে।
  • যে ডিভাইস রেঞ্জিংয়ের অনুরোধ করছে সেটিতে লোকেশন পরিষেবা চালু থাকতে হবে এবং ওয়াই-ফাই স্ক্যানিং চালু থাকতে হবে (সেটিংস > লোকেশন বিকল্পের মধ্যে)।
  • যে অ্যাপ রেঞ্জিংয়ের অনুরোধ করছে সেটি যদি Android 13 (API লেভেল ৩৩) বা তার পরবর্তী কোনও ভার্সনকে টার্গেট করে, তাহলে সেটির কাছে অবশ্যই NEARBY_WIFI_DEVICES অনুমতি থাকতে হবে। এই ধরনের অ্যাপ Android-এর পুরনো ভার্সনকে টার্গেট করলে, সেটির কাছে অবশ্যই ACCESS_FINE_LOCATION অনুমতি থাকতে হবে।
  • অ্যাপটি দৃশ্যমান থাকাকালীন বা ফোরগ্রাউন্ড পরিষেবায় থাকাকালীন অ্যাপটিকে অবশ্যই অ্যাক্সেস পয়েন্টের রেঞ্জ কোয়েরি করতে হবে। অ্যাপটি ব্যাকগ্রাউন্ড থেকে লোকেশন সংক্রান্ত তথ্য অ্যাক্সেস করতে পারবে না।
  • অ্যাক্সেস পয়েন্টে IEEE 802.11-2016 FTM স্ট্যান্ডার্ড বা IEEE 802.11az স্ট্যান্ডার্ড (নন-ট্রিগার ভিত্তিক রেঞ্জিং) প্রয়োগ করতে হবে।

সেট-আপ করুন

Wi-Fi RTT ব্যবহার করার জন্য আপনার অ্যাপ সেট-আপ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন।

১. অনুমতির জন্য অনুরোধ করুন

আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিত অনুমতিগুলির জন্য অনুরোধ করুন:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- If your app targets Android 13 (API level 33)
     or higher, you must declare the NEARBY_WIFI_DEVICES permission. -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
                 <!-- If your app derives location information from Wi-Fi APIs,
                      don't include the "usesPermissionFlags" attribute. -->
                 android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
                 <!-- If any feature in your app relies on precise location
                      information, don't include the "maxSdkVersion"
                      attribute. -->
                 android:maxSdkVersion="32" />

NEARBY_WIFI_DEVICES এবং ACCESS_FINE_LOCATION অনুমতিগুলি বিপজ্জনক অনুমতি, তাই ব্যবহারকারী যখনই RTT স্ক্যান অপারেশন করতে চান, তখনই আপনাকে রানটাইমে তাদের অনুরোধ করতে হবে। ব্যবহারকারী আগে থেকে অনুমতি না দিয়ে থাকলে, আপনার অ্যাপকে অনুমতি চাইতে হবে। রানটাইম অনুমতি সম্পর্কে আরও তথ্যের জন্য, অ্যাপের অনুমতি সংক্রান্ত অনুরোধ দেখুন।

২. ডিভাইসে ওয়াই-ফাই RTT কাজ করে কিনা তা চেক করুন

ডিভাইসে ওয়াই-ফাই RTT কাজ করে কিনা তা চেক করতে, PackageManager API ব্যবহার করুন:

Kotlin

context.packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)

জাভা

context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT);

৩. ওয়াই-ফাই RTT উপলভ্য কিনা তা চেক করুন

ডিভাইসে ওয়াই-ফাই RTT থাকতে পারে, তবে ব্যবহারকারী ওয়াই-ফাই বন্ধ করে দিলে এটি উপলভ্য নাও হতে পারে। হার্ডওয়্যার ও ফার্মওয়্যার ক্ষমতার উপর নির্ভর করে, SoftAP বা টেথারিং ব্যবহার করা হলে, কিছু ডিভাইসে ওয়াই-ফাই RTT কাজ নাও করতে পারে। Wi-Fi RTT উপলভ্য আছে কিনা তা চেক করতে, isAvailable()-এ কল করুন।

ওয়াই-ফাই RTT-এর উপলভ্যতা যেকোনও সময় পরিবর্তন হতে পারে। আপনার অ্যাপকে ACTION_WIFI_RTT_STATE_CHANGED পেতে BroadcastReceiver রেজিস্টার করতে হবে, যা উপলভ্যতা পরিবর্তন হলে পাঠানো হয়। আপনার অ্যাপ ব্রডকাস্ট ইনটেন্ট পেলে, অ্যাপের উচিত উপলভ্যতার বর্তমান অবস্থা চেক করা এবং সেই অনুযায়ী নিজের আচরণ অ্যাডজাস্ট করা।

যেমন:

Kotlin

val filter = IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED)
val myReceiver = object: BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
        if (wifiRttManager.isAvailable) {
            …
        } else {
            …
        }
    }
}
context.registerReceiver(myReceiver, filter)

জাভা

IntentFilter filter =
    new IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED);
BroadcastReceiver myReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (wifiRttManager.isAvailable()) {
            …
        } else {
            …
        }
    }
};
context.registerReceiver(myReceiver, filter);

আরও তথ্যের জন্য, ব্রডকাস্ট দেখুন।

রেঞ্জিং সংক্রান্ত অনুরোধ তৈরি করা

রেঞ্জিং অনুরোধ (RangingRequest) তৈরি করা হয় AP বা Wi-Fi Aware পিয়ারের তালিকা নির্দিষ্ট করে, যার জন্য রেঞ্জ অনুরোধ করা হয়। একটি রেঞ্জিং অনুরোধে একাধিক অ্যাক্সেস পয়েন্ট বা Wi-Fi Aware পিয়ার নির্দিষ্ট করা যেতে পারে; সব ডিভাইসের দূরত্ব পরিমাপ করা হয় এবং দেখানো হয়।

যেমন, কোনও অনুরোধে addAccessPoint() পদ্ধতি ব্যবহার করে দূরত্ব পরিমাপ করার জন্য অ্যাক্সেস পয়েন্ট নির্দিষ্ট করা যেতে পারে:

Kotlin

val req: RangingRequest = RangingRequest.Builder().run {
    addAccessPoint(ap1ScanResult)
    addAccessPoint(ap2ScanResult)
    build()
}

জাভা

RangingRequest.Builder builder = new RangingRequest.Builder();
builder.addAccessPoint(ap1ScanResult);
builder.addAccessPoint(ap2ScanResult);

RangingRequest req = builder.build();

অ্যাক্সেস পয়েন্টকে তার ScanResult অবজেক্টের মাধ্যমে শনাক্ত করা হয়, যা WifiManager.getScanResults()-এ কল করে পাওয়া যেতে পারে। আপনি addAccessPoints(List<ScanResult>) ব্যবহার করে ব্যাচে একাধিক অ্যাক্সেস পয়েন্ট যোগ করতে পারবেন।

ScanResult অবজেক্টে IEEE 802.11mc (is80211mcResponder()) এবং IEEE 802.11az নন-ট্রিগার ভিত্তিক রেঞ্জিং (is80211azNtbResponder()) কাজ করে এমন AP থাকতে পারে। IEEE 802.11az NTB রেঞ্জিং কাজ করে এমন ডিভাইস AP-এর ক্ষমতার উপর নির্ভর করে 802.11mc বা 802.11az রেঞ্জিং পারফর্ম করে, AP দুটিতেই কাজ করলে ডিফল্ট হিসেবে 802.11az-এ সেট হয়ে যায়। IEEE 802.11az কাজ করে না এমন ডিভাইস IEEE 802.11mc প্রোটোকল ব্যবহার করে সব রেঞ্জিং পারফর্ম করে।

একইভাবে, রেঞ্জিং অনুরোধ, MAC অ্যাড্রেস বা PeerHandle ব্যবহার করে, যথাক্রমে addWifiAwarePeer(MacAddress peer) এবং addWifiAwarePeer(PeerHandle peer) পদ্ধতি ব্যবহার করে, Wi-Fi Aware পিয়ার যোগ করতে পারে। Wi-Fi Aware পিয়ার খোঁজা সম্পর্কে আরও তথ্য পেতে, Wi-Fi Aware ডকুমেন্টেশন দেখুন।

অনুরোধের রেঞ্জ

একটি অ্যাপ WifiRttManager.startRanging() পদ্ধতি ব্যবহার করে রেঞ্জিং অনুরোধ ইস্যু করে এবং নিম্নলিখিতগুলি প্রদান করে: অপারেশন নির্দিষ্ট করার জন্য একটি RangingRequest, কলব্যাক প্রসঙ্গ নির্দিষ্ট করার জন্য একটি Executor এবং ফলাফল পাওয়ার জন্য একটি RangingResultCallback।

যেমন:

Kotlin

val mgr = context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE) as WifiRttManager
val request: RangingRequest = myRequest
mgr.startRanging(request, executor, object : RangingResultCallback() {

    override fun onRangingResults(results: List<RangingResult>) { … }

    override fun onRangingFailure(code: Int) { … }
})

জাভা

WifiRttManager mgr =
      (WifiRttManager) Context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE);

RangingRequest request ...;
mgr.startRanging(request, executor, new RangingResultCallback() {

  @Override
  public void onRangingFailure(int code) { … }

  @Override
  public void onRangingResults(List<RangingResult> results) { … }
});

রেঞ্জিং অপারেশন অ্যাসিঙ্ক্রোনাসভাবে করা হয় এবং রেঞ্জিং ফলাফল RangingResultCallback-এর কলব্যাকগুলির মধ্যে একটিতে ফেরত দেওয়া হয়:

  • পুরো রেঞ্জিং অপারেশন ব্যর্থ হলে, onRangingFailure কলব্যাক, RangingResultCallback-এ বর্ণিত স্ট্যাটাস কোডের সাথে ট্রিগার করা হয়। পরিষেবাটি সেই সময়ে রেঞ্জিং অপারেশন চালাতে না পারলে এই ধরনের ব্যর্থতা ঘটতে পারে-- উদাহরণস্বরূপ, ওয়াই-ফাই বন্ধ থাকার কারণে, অ্যাপ্লিকেশনটি অনেক বেশি রেঞ্জিং অপারেশনের অনুরোধ করেছে এবং থ্রটল করা হয়েছে বা অনুমতি সংক্রান্ত সমস্যার কারণে।
  • রেঞ্জিং অপারেশন সম্পূর্ণ হলে, onRangingResults কলব্যাক ফলাফলের একটি তালিকা সহ ট্রিগার করা হয় যা অনুরোধের তালিকার সাথে মেলে—প্রতিটি অনুরোধের জন্য একটি ফলাফল। ফলাফলের ক্রম অনুরোধের ক্রমের সাথে ম্যাচ নাও করতে পারে। মনে রাখবেন যে রেঞ্জিং অপারেশন সম্পূর্ণ হতে পারে, তবে প্রতিটি ফলাফল এখনও সেই নির্দিষ্ট পরিমাপের ব্যর্থতা নির্দেশ করতে পারে।

রেঞ্জিং ফলাফল ব্যাখ্যা করো

onRangingResults কলব্যাক থেকে পাওয়া প্রতিটি ফলাফল RangingResult অবজেক্টের মাধ্যমে নির্দিষ্ট করা হয়। প্রতিটি অনুরোধের ক্ষেত্রে, নিম্নলিখিত কাজগুলি করুন।

১. অনুরোধ শনাক্ত করুন

RangingRequest তৈরি করার সময় দেওয়া তথ্যের ভিত্তিতে অনুরোধ শনাক্ত করুন: বেশিরভাগ ক্ষেত্রে ScanResult-এ MAC অ্যাড্রেস দেওয়া হয় যা অ্যাক্সেস পয়েন্ট শনাক্ত করে। getMacAddress() পদ্ধতি ব্যবহার করে রেঞ্জিং ফলাফল থেকে MAC অ্যাড্রেস পাওয়া যেতে পারে।

রেঞ্জিং ফলাফলের তালিকা রেঞ্জিং অনুরোধে উল্লেখ করা পিয়ারের (অ্যাক্সেস পয়েন্ট) থেকে আলাদা ক্রমে থাকতে পারে, তাই পিয়ার শনাক্ত করার জন্য আপনার MAC অ্যাড্রেস ব্যবহার করা উচিত, ফলাফলের ক্রম নয়।

২. প্রতিটি পরিমাপ সফল হয়েছে কিনা তা নির্ধারণ করুন

পরিমাপ সফল হয়েছে কিনা তা নির্ধারণ করতে, getStatus() পদ্ধতি ব্যবহার করুন। STATUS_SUCCESS ছাড়া অন্য কোনও ভ্যালু থাকলে, তা ব্যর্থতা নির্দেশ করে। ব্যর্থ হওয়ার অর্থ হল এই ফলাফলের অন্যান্য সব ফিল্ড (উপরে উল্লেখ করা অনুরোধ শনাক্তকরণ ছাড়া) ভুল এবং সংশ্লিষ্ট get* পদ্ধতি IllegalStateException ব্যতিক্রমের সাথে ব্যর্থ হবে।

৩. প্রতিটি সফল পরিমাপের জন্য ফলাফল পান

প্রতিটি সফল পরিমাপের (RangingResult) জন্য, আপনি সংশ্লিষ্ট get পদ্ধতির মাধ্যমে ফলাফলের মান উদ্ধার করতে পারেন:

  • মিলিমিটারে দূরত্ব এবং পরিমাপের স্ট্যান্ডার্ড ডিভিয়েশন:

    getDistanceMm()

    getDistanceStdDevMm()

  • পরিমাপের জন্য ব্যবহৃত প্যাকেটের RSSI:

    getRssi()

  • মিলিসেকেন্ডে সময়, যে সময়ে পরিমাপ করা হয়েছে (বুট করার পর থেকে সময় নির্দেশ করে):

    getRangingTimestampMillis()

  • কতবার পরিমাপ করার চেষ্টা করা হয়েছে এবং কতবার পরিমাপ করা সম্ভব হয়েছে (এবং যার উপর ভিত্তি করে দূরত্ব পরিমাপ করা হয়েছে):

    getNumAttemptedMeasurements()

    getNumSuccessfulMeasurements()

  • 11az NTB পরিমাপের মধ্যে ক্লায়েন্ট ডিভাইসকে ন্যূনতম ও সর্বাধিক কত সময় অপেক্ষা করতে হবে:

    getMinTimeBetweenNtbMeasurementsMicros() এবং getMaxTimeBetweenNtbMeasurementsMicros() সর্বনিম্ন এবং সর্বাধিক সময় রিটার্ন করে। ন্যূনতম সময় অতিবাহিত হওয়ার আগে পরবর্তী রেঞ্জিং পরিমাপের অনুরোধ করা হলে, API ক্যাশে করা রেঞ্জিং ফলাফল রিটার্ন করে। সর্বাধিক সময় পেরিয়ে যাওয়ার পরে পরবর্তী রেঞ্জিং পরিমাপের অনুরোধ করা হলে, API নন-ট্রিগার রেঞ্জিং সেশন বন্ধ করে দেয় এবং উত্তর দেওয়া স্টেশনের সাথে নতুন রেঞ্জিং সেশন নিয়ে আলোচনা করে। নতুন রেঞ্জিং সেশনের অনুরোধ করা এড়িয়ে চলুন, কারণ এটি রেঞ্জিং পরিমাপের সময় বাড়িয়ে দেয়। 802.11az নন-ট্রিগার ভিত্তিক রেঞ্জিং দক্ষতার সম্পূর্ণ সুবিধা নিতে, পূর্ববর্তী RangingResult পরিমাপে নির্দিষ্ট করা ন্যূনতম এবং সর্বাধিক পরিমাপ সময়ের মধ্যে পরবর্তী রেঞ্জিং অনুরোধ ট্রিগার করুন।

  • IEEE 802.11az NTB ফলাফলের জন্য প্রারম্ভিক নির্দেশাবলীতে রেসপন্ডার ও ইনিশিয়েটর স্টেশন ব্যবহার করেছে এমন লং ট্রেনিং ফিল্ড (LTF) রিপিটেশন:

    get80211azResponderTxLtfRepetitionsCount()

    get80211azInitiatorTxLtfRepetitionsCount()

  • IEEE 802.11az NTB ফলাফলের জন্য ইনিশিয়েটর স্টেশন ব্যবহার করেছে এমন ট্রান্সমিট ও রিসিভ স্পেশিয়াল টাইম স্ট্রিমের (STS) সংখ্যা:

    get80211azNumberOfTxSpatialStreams()

    get80211azNumberOfRxSpatialStreams()

WiFi-RTT কাজ করে এমন Android ডিভাইস

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

অ্যাক্সেস পয়েন্ট

প্রস্তুতকারক ও মডেল সহায়তার তারিখ প্রোটোকল
Nest Wifi Pro (Wi-Fi 6E) কাজ করে mc
Compulab WILD AP কাজ করে mc
Google Wi-Fi কাজ করে mc
Google Nest ওয়াই-ফাই রাউটার কাজ করে mc
Google Nest Wi-Fi পয়েন্ট কাজ করে mc
Aruba AP-635 কাজ করে mc
Cisco 9130 কাজ করে mc
Cisco 9136 কাজ করে mc
Cisco 9166 কাজ করে mc
Cisco 9164 কাজ করে mc
Cisco CW9172I কাজ করে mc/az
Cisco CW9172H কাজ করে mc/az
Cisco CW9176I কাজ করে mc/az
Cisco CW9178I কাজ করে mc/az
Aruba AP-505 কাজ করে mc
Aruba AP-515 কাজ করে mc
Aruba AP-575 কাজ করে mc
Aruba AP-518 কাজ করে mc
Aruba AP-505H কাজ করে mc
Aruba AP-565 কাজ করে mc
Aruba AP-535 কাজ করে mc
Aruba AP567 কাজ করে mc
Aruba AP577 কাজ করে mc
Aruba AP555 কাজ করে mc
Aruba AP635 কাজ করে mc
Aruba AP655 কাজ করে mc
Aruba AP615 কাজ করে mc
Aruba AP734 কাজ করে mc/az
Aruba AP735 কাজ করে mc/az
Aruba AP754 কাজ করে mc/az
Aruba AP755 কাজ করে mc/az

ফোন

প্রস্তুতকারক ও মডেল Android ভার্সন
Google Pixel 9 Pro XL 14+
Google Pixel 9 14+
Google Pixel 9 Pro 14+
Google Pixel 9 Pro XL 14+
Google Pixel 7a 14+
Google Pixel 7 14+
Google Pixel 8 14+
Google Pixel 8 Pro 14+
Google Pixel 8a 14+
Samsung SM-S918B 14+
Samsung SM-A515F 14+
Google Pixel 9 Pro 14+
Samsung SM-A546E 14+
Samsung SM-S928B 14+
Samsung SM-A217F 14+
Samsung SM-A715F 14+
Samsung SM-A528B 14+
Samsung SM-A135F 14+
Samsung SM-S911B 14+
Xiaomi 21091116AI 14+
Google Pixel 9 14+
Samsung SM-A127F 14+
Google Pixel 7 Pro 14+
Samsung SM-A556E 14+
Pixel 6 ৯.০+
Pixel 6 Pro ৯.০+
Pixel 5 ৯.০+
Pixel 5a ৯.০+
Pixel 5a 5G ৯.০+
Xiaomi Mi 10 Pro ৯.০+
Xiaomi Mi 10 ৯.০+
Xiaomi Redmi Mi 9T Pro ৯.০+
Xiaomi Mi 9T ৯.০+
Xiaomi Mi 9 ৯.০+
Xiaomi Mi Note 10 ৯.০+
Xiaomi Mi Note 10 Lite ৯.০+
Xiaomi Redmi Note 9S ৯.০+
Xiaomi Redmi Note 9 Pro ৯.০+
Xiaomi Redmi Note 8T ৯.০+
Xiaomi Redmi Note 8 ৯.০+
Xiaomi Redmi K30 Pro ৯.০+
Xiaomi Redmi K20 Pro ৯.০+
Xiaomi Redmi K20 ৯.০+
Xiaomi Redmi Note 5 Pro ৯.০+
Xiaomi Mi CC9 Pro ৯.০+
LG G8X ThinQ ৯.০+
LG V50S ThinQ ৯.০+
LG V60 ThinQ ৯.০+
LG V30 ৯.০+
Samsung Galaxy Note 10+ 5G ৯.০+
Samsung Galaxy S20+ 5G ৯.০+
Samsung Galaxy S20+ ৯.০+
Samsung Galaxy S20 5G ৯.০+
Samsung Galaxy S20 Ultra 5G ৯.০+
Samsung Galaxy S20 ৯.০+
Samsung Galaxy Note 10+ ৯.০+
Samsung Galaxy Note 10 5G ৯.০+
Samsung Galaxy Note 10 ৯.০+
Samsung A9 Pro ৯.০+
Google Pixel 4 XL ৯.০+
Google Pixel 4 ৯.০+
Google Pixel 4a ৯.০+
Google Pixel 3 XL ৯.০+
Google Pixel 3 ৯.০+
Google Pixel 3a XL ৯.০+
Google Pixel 3a ৯.০+
Google Pixel 2 XL ৯.০+
Google Pixel 2 ৯.০+
Google Pixel 1 XL ৯.০+
Google Pixel 1 ৯.০+
Poco X2 ৯.০+
Sharp Aquos R3 SH-04L ৯.০+

রিটেল, ওয়্যারহাউস ও ডিস্ট্রিবিউশন সেন্টার ডিভাইস

প্রস্তুতকারক ও মডেল Android ভার্সন
Zebra PS20 ১০.০+
Zebra TC52/TC52HC ১০.০+
Zebra TC57 ১০.০+
Zebra TC72 ১০.০+
Zebra TC77 ১০.০+
Zebra MC93 ১০.০+
Zebra TC8300 ১০.০+
Zebra VC8300 ১০.০+
Zebra EC30 ১০.০+
Zebra ET51 ১০.০+
Zebra ET56 ১০.০+
Zebra L10 ১০.০+
Zebra CC600/CC6000 ১০.০+
Zebra MC3300x ১০.০+
Zebra MC330x ১০.০+
Zebra TC52x ১০.০+
Zebra TC57x ১০.০+
Zebra EC50 (LAN এবং HC) ১০.০+
Zebra EC55 (WAN) ১০.০+
Zebra WT6300 ১০.০+
Skorpio X5 ১০.০+