আপনি Wi-Fi RTT (রাউন্ড-ট্রিপ-টাইম) API-এর মাধ্যমে প্রদান করা ওয়াই-ফাই লোকেশন ফাংশন ব্যবহার করে, কাছাকাছি RTT-উপযোগী ওয়াই-ফাই অ্যাক্সেস পয়েন্ট এবং পিয়ার Wi-Fi Aware ডিভাইসের দূরত্ব পরিমাপ করতে পারবেন।
আপনি যদি তিন বা তার বেশি অ্যাক্সেস পয়েন্টের দূরত্ব পরিমাপ করেন, তাহলে আপনি একটি মাল্টিলেটারেশন অ্যালগরিদম ব্যবহার করে ডিভাইসের অবস্থান অনুমান করতে পারেন যা সেই পরিমাপের সাথে সবচেয়ে উপযুক্ত। ফলাফল সাধারণত ১-২ মিটারের মধ্যে সঠিক হয়।
এই নির্ভুলতার সাহায্যে, আপনি ইনডোর নেভিগেশন, দ্ব্যর্থহীন ভয়েস কন্ট্রোল (যেমন, "এই আলোটি চালু করুন") এবং লোকেশন-ভিত্তিক তথ্য (যেমন, "এই প্রোডাক্টের জন্য কি বিশেষ অফার আছে?")-এর মতো সূক্ষ্ম লোকেশন-ভিত্তিক পরিষেবা ডেভেলপ করতে পারবেন।
অনুরোধকারী ডিভাইসকে ওয়াই-ফাই RTT-এর মাধ্যমে দূরত্ব পরিমাপ করার জন্য অ্যাক্সেস পয়েন্টের সাথে কানেক্ট করতে হয় না। গোপনীয়তা বজায় রাখতে, শুধুমাত্র অনুরোধকারী ডিভাইস অ্যাক্সেস পয়েন্টের দূরত্ব নির্ধারণ করতে পারে; অ্যাক্সেস পয়েন্টের কাছে এই তথ্য থাকে না। ফোরগ্রাউন্ড অ্যাপের জন্য ওয়াই-ফাই RTT অপারেশন আনলিমিটেড হলেও ব্যাকগ্রাউন্ড অ্যাপের জন্য থ্রটল করা হয়।
ওয়াই-ফাই RTT এবং সংশ্লিষ্ট ফাইন-টাইম-মেজারমেন্ট (FTM) ক্ষমতা IEEE 802.11-2016 স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট করা হয়। Wi-Fi RTT-এর জন্য FTM-এর মাধ্যমে প্রদান করা সঠিক সময় পরিমাপের প্রয়োজন হয় কারণ এটি দুটি ডিভাইসের মধ্যে রাউন্ড ট্রিপ করতে একটি প্যাকেটের যে সময় লাগে তা পরিমাপ করে এবং সেই সময়কে আলোর গতি দিয়ে গুণ করে দুটি ডিভাইসের মধ্যে দূরত্ব গণনা করে।
Android 15 (API লেভেল 35) IEEE 802.11az নন-ট্রিগার ভিত্তিক (NTB) রেঞ্জিংয়ের জন্য সহায়তা চালু করেছে।
Android ভার্সনের উপর ভিত্তি করে প্রয়োগের ক্ষেত্রে পার্থক্য
Android 9 (API লেভেল ২৮)-এ ওয়াই-ফাই RTT প্রথম চালু করা হয়। Android 9-এ রান করা ডিভাইসের সাথে মাল্টিলেটারেশন ব্যবহার করে কোনও ডিভাইসের পজিশন নির্ধারণ করতে এই প্রোটোকল ব্যবহার করার সময়, আপনার অ্যাপে আগে থেকে নির্ধারিত অ্যাক্সেস পয়েন্ট (AP) লোকেশন ডেটার অ্যাক্সেস থাকতে হবে। এই ডেটা কীভাবে স্টোর ও ফিরিয়ে আনবেন তা আপনিই ঠিক করবেন।
Android ১০ (API লেভেল ২৯) এবং তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে, AP লোকেশন ডেটা
ResponderLocation অবজেক্ট হিসেবে দেখানো যেতে পারে, যার মধ্যে অক্ষাংশ, দ্রাঘিমাংশ
এবং উচ্চতা অন্তর্ভুক্ত থাকে। ওয়াই-ফাই RTT AP-এর জন্য যা লোকেশন কনফিগারেশন তথ্য
বা লোকেশন সিভিক রিপোর্ট (LCI বা LCR ডেটা) সমর্থন করে, প্রোটোকল রেঞ্জিং প্রসেস চলাকালীন
ResponderLocation অবজেক্ট ফিরিয়ে দেবে।
অ্যাপগুলি আগে থেকে স্টোর করার পরিবর্তে সরাসরি তাদের অবস্থানের জন্য AP-কে কোয়েরি করতে পারে। আপনার অ্যাপ AP খুঁজে পেতে এবং তাদের অবস্থান নির্ধারণ করতে পারে, এমনকি সেগুলি আগে অজানা থাকলেও, যেমন, যখন কোনও ব্যবহারকারী নতুন বিল্ডিংয়ে প্রবেশ করেন।
Android 15 (API লেভেল ৩৫) ও তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে 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 লেভেল 35) ও তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে 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 প্রোটোকল ব্যবহার করে
সব রেঞ্জিং পারফর্ম করে।
একইভাবে, রেঞ্জিং অনুরোধ, addWifiAwarePeer(MacAddress peer)
এবং addWifiAwarePeer(PeerHandle peer) পদ্ধতি ব্যবহার করে, যথাক্রমে MAC
অ্যাড্রেস বা PeerHandle ব্যবহার করে 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 কলব্যাকের মধ্যে একটিতে ফেরত দেওয়া হয়:
- পুরো রেঞ্জিং অপারেশন ব্যর্থ হলে,
RangingResultCallback-এ বর্ণিত স্ট্যাটাস কোড সহonRangingFailureকলব্যাক ট্রিগার করা হয়। এই ধরনের ব্যর্থতা ঘটতে পারে যদি পরিষেবাটি সেই সময়ে একটি রেঞ্জিং অপারেশন চালাতে না পারে—উদাহরণস্বরূপ, কারণ ওয়াই-ফাই বন্ধ করা আছে, কারণ অ্যাপ্লিকেশনটি অনেকগুলি রেঞ্জিং অপারেশনের অনুরোধ করেছে এবং থ্রটল করা হয়েছে, বা অনুমতি সংক্রান্ত সমস্যার কারণে। - রেঞ্জিং অপারেশন সম্পূর্ণ হলে,
onRangingResultsকলব্যাক ফলাফলের তালিকা সহ ট্রিগার করা হয় যা অনুরোধের তালিকার সাথে মেলে—প্রতিটি অনুরোধের জন্য একটি ফলাফল। ফলাফলের ক্রম অনুরোধের ক্রমের সাথে ম্যাচ নাও করতে পারে। মনে রাখবেন, রেঞ্জিং অপারেশন সম্পূর্ণ হতে পারে, কিন্তু প্রতিটি ফলাফল এখনও সেই নির্দিষ্ট পরিমাপের ব্যর্থতা নির্দেশ করতে পারে।
রেঞ্জিং ফলাফল ব্যাখ্যা করো
onRangingResults কলব্যাকের মাধ্যমে পাওয়া প্রতিটি ফলাফল RangingResult অবজেক্টের মাধ্যমে
নির্দিষ্ট করা হয়। প্রতিটি অনুরোধের ক্ষেত্রে, নিম্নলিখিত কাজগুলি করুন।
১. অনুরোধ শনাক্ত করুন
RangingRequest তৈরি করার সময় দেওয়া তথ্যের ভিত্তিতে অনুরোধটি শনাক্ত করুন, বেশিরভাগ ক্ষেত্রে ScanResult-এ দেওয়া MAC অ্যাড্রেস
অ্যাক্সেস পয়েন্ট শনাক্ত করে। getMacAddress() পদ্ধতি ব্যবহার করে রেঞ্জিং ফলাফল থেকে
MAC অ্যাড্রেস পাওয়া যেতে পারে।
রেঞ্জিং ফলাফলের তালিকা রেঞ্জিং অনুরোধে নির্দিষ্ট করা পিয়ারের (অ্যাক্সেস পয়েন্ট) থেকে আলাদা ক্রমে থাকতে পারে, তাই পিয়ার শনাক্ত করতে MAC অ্যাড্রেস ব্যবহার করুন, ফলাফলের ক্রম নয়।
২. প্রতিটি পরিমাপ সফল হয়েছে কিনা তা নির্ধারণ করুন
পরিমাপ সফল হয়েছে কিনা তা নির্ধারণ করতে, getStatus()
পদ্ধতি ব্যবহার করুন। STATUS_SUCCESS ছাড়া অন্য কোনও ভ্যালু থাকলে বুঝতে হবে যে পেমেন্ট করা যায়নি। ব্যর্থতার
অর্থ হল এই ফলাফলের অন্যান্য সব ফিল্ড (আগের ধাপে অনুরোধ শনাক্তকরণ
ছাড়া) ভুল এবং সংশ্লিষ্ট get* পদ্ধতি IllegalStateException ব্যতিক্রমের
সাথে ব্যর্থ হয়।
৩. প্রতিটি সফল পরিমাপের জন্য ফলাফল পান
প্রতিটি সফল পরিমাপের (RangingResult) জন্য, আপনি সংশ্লিষ্ট get পদ্ধতির মাধ্যমে ফলাফলের মান
উদ্ধার করতে পারবেন:
মিলিমিটারে দূরত্ব এবং পরিমাপের স্ট্যান্ডার্ড ডিভিয়েশন:
পরিমাপের জন্য ব্যবহৃত প্যাকেটের RSSI:
মিলিসেকেন্ডে সময়, যখন পরিমাপ করা হয়েছিল (বুট করার পর থেকে সময় নির্দেশ করে):
কতবার পরিমাপ করার চেষ্টা করা হয়েছে এবং কতবার পরিমাপ করা সম্ভব হয়েছে (এবং যার উপর ভিত্তি করে দূরত্ব পরিমাপ করা হয়েছে):
11az NTB পরিমাপের মধ্যে ক্লায়েন্ট ডিভাইসকে ন্যূনতম ও সর্বাধিক কত সময় অপেক্ষা করতে হবে:
getMinTimeBetweenNtbMeasurementsMicros()এবংgetMaxTimeBetweenNtbMeasurementsMicros()সর্বনিম্ন এবং সর্বোচ্চ সময় দেখায়। ন্যূনতম সময় অতিবাহিত হওয়ার আগে পরবর্তী রেঞ্জিং পরিমাপের অনুরোধ করা হলে, API ক্যাশে করা রেঞ্জিং ফলাফল ফিরিয়ে দেয়। সর্বাধিক সময় পেরিয়ে যাওয়ার পরে পরবর্তী রেঞ্জিং পরিমাপের অনুরোধ করা হলে, API নন-ট্রিগার রেঞ্জিং সেশন বন্ধ করে দেয় এবং রেসপন্ডিং স্টেশনের সাথে নতুন রেঞ্জিং সেশন নিয়ে আলোচনা করে। নতুন রেঞ্জিং সেশনের অনুরোধ করা এড়িয়ে চলুন, কারণ এটি রেঞ্জিং পরিমাপের সময়কে বাড়িয়ে দেয়। 802.11az নন-ট্রিগার ভিত্তিক রেঞ্জিং দক্ষতার সম্পূর্ণ সুবিধা নিতে, আগেরRangingResultপরিমাপে নির্দিষ্ট করা ন্যূনতম এবং সর্বাধিক পরিমাপের সময়ের মধ্যে পরবর্তী রেঞ্জিং অনুরোধ ট্রিগার করুন।IEEE 802.11az NTB ফলাফলের জন্য প্রারম্ভিক নির্দেশাবলীতে রেসপন্ডার ও ইনিশিয়েটর স্টেশন ব্যবহার করেছে এমন লং ট্রেনিং ফিল্ড (LTF) রিপিটেশন:
IEEE 802.11az NTB ফলাফলের জন্য ইনিশিয়েটর স্টেশন ব্যবহার করেছে এমন ট্রান্সমিট ও রিসিভ স্পেশিয়াল টাইম স্ট্রিমের (STS) সংখ্যা:
Android ডিভাইস যাতে WiFi-RTT কাজ করে
নিচের সারণীতে কিছু ফোন, অ্যাক্সেস পয়েন্ট এবং রিটেল, ওয়্যারহাউস ও ডিস্ট্রিবিউশন সেন্টার ডিভাইস তালিকাভুক্ত করা হয়েছে যেগুলিতে 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 | ১০.০+ |