Wi-Fi অবস্থান: RTT সহ

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

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

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

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

ওয়াই-ফাই আরটিটি (Wi-Fi RTT) এবং এর সাথে সম্পর্কিত ফাইন-টাইম-মেজারমেন্ট (FTM) সক্ষমতা আইইইই ৮০২.১১-২০১৬ (IEEE 802.11-2016) স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট করা হয়েছে। ওয়াই-ফাই আরটিটি-র জন্য এফটিএম (FTM) দ্বারা প্রদত্ত নির্ভুল সময় পরিমাপের প্রয়োজন হয়, কারণ এটি দুটি ডিভাইসের মধ্যে একটি প্যাকেটের একবার ঘুরে আসতে যে সময় লাগে তা পরিমাপ করে এবং সেই সময়কে আলোর গতি দিয়ে গুণ করে ডিভাইস দুটির মধ্যকার দূরত্ব গণনা করে।

অ্যান্ড্রয়েড ১৫ (এপিআই লেভেল ৩৫)-এর মাধ্যমে আইইইই ৮০২.১১এজেড নন-ট্রিগার ভিত্তিক (এনটিবি) রেঞ্জিং-এর জন্য সমর্থন চালু করা হয়েছে।

অ্যান্ড্রয়েড সংস্করণের উপর ভিত্তি করে বাস্তবায়নের পার্থক্য

অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮)-এ ওয়াই-ফাই আরটিটি (Wi-Fi RTT) চালু করা হয়েছিল। অ্যান্ড্রয়েড ৯ চালিত ডিভাইসগুলিতে মাল্টিল্যাটারেশন ব্যবহার করে কোনো ডিভাইসের অবস্থান নির্ণয় করার জন্য এই প্রোটোকলটি ব্যবহার করার সময়, আপনার অ্যাপে আগে থেকে নির্ধারিত অ্যাক্সেস পয়েন্ট (AP)-এর অবস্থানের ডেটাতে অ্যাক্সেস থাকা প্রয়োজন। এই ডেটা কীভাবে সংরক্ষণ এবং পুনরুদ্ধার করবেন, সেই সিদ্ধান্ত আপনাকেই নিতে হবে।

অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) এবং এর চেয়ে উন্নত সংস্করণে চালিত ডিভাইসগুলিতে, এপি (AP) লোকেশন ডেটা ResponderLocation ) অবজেক্ট হিসাবে উপস্থাপন করা যেতে পারে, যার মধ্যে অক্ষাংশ, দ্রাঘিমাংশ এবং উচ্চতা অন্তর্ভুক্ত থাকে। যেসব ওয়াই-ফাই আরটিটি (Wi-Fi RTT) এপি লোকেশন কনফিগারেশন ইনফরমেশন/লোকেশন সিভিক রিপোর্ট (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 স্ট্যান্ডার্ড (নন-ট্রিগার ভিত্তিক রেঞ্জিং) বাস্তবায়ন করতে হবে।
  • যে ডিভাইসটি রেঞ্জিং অনুরোধ করছে, সেটিতে অবশ্যই অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) বা তার পরবর্তী সংস্করণ চলতে হবে। অ্যান্ড্রয়েড ১৫ (এপিআই লেভেল ৩৫) এবং তার পরবর্তী সংস্করণ চালিত ডিভাইসগুলিতে IEEE 802.11az নন-ট্রিগার ভিত্তিক রেঞ্জিং সক্রিয় করা থাকে।
  • যে ডিভাইসটি রেঞ্জিং অনুরোধ করছে, সেটিতে অবশ্যই লোকেশন সার্ভিস চালু থাকতে হবে এবং ওয়াই-ফাই স্ক্যানিং অন করা থাকতে হবে ( সেটিংস > লোকেশন-এর অধীনে)।
  • যে অ্যাপটি রেঞ্জিং রিকোয়েস্ট করছে, সেটি যদি অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) বা তার উচ্চতর সংস্করণকে টার্গেট করে, তবে সেটির অবশ্যই NEARBY_WIFI_DEVICES পারমিশন থাকতে হবে। আর যদি এই ধরনের কোনো অ্যাপ অ্যান্ড্রয়েডের পূর্ববর্তী কোনো সংস্করণকে টার্গেট করে, তবে তার পরিবর্তে সেটির 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 স্ক্যান অপারেশন করতে চাইবেন, তখন রানটাইমে এগুলোর জন্য অনুরোধ করতে হবে। যদি পারমিশনটি আগে থেকে দেওয়া না থাকে, তবে আপনার অ্যাপকে ব্যবহারকারীর অনুমতির জন্য অনুরোধ করতে হবে। রানটাইম পারমিশন সম্পর্কে আরও তথ্যের জন্য, “অ্যাপ পারমিশনের অনুরোধ” দেখুন।

২. ডিভাইসটি Wi-Fi RTT সমর্থন করে কিনা তা পরীক্ষা করুন।

ডিভাইসটি Wi-Fi RTT সমর্থন করে কিনা তা পরীক্ষা করতে, PackageManager API ব্যবহার করুন:

কোটলিন

context.packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)

জাভা

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

৩. ওয়াই-ফাই আরটিটি (Wi-Fi RTT) উপলব্ধ আছে কিনা তা যাচাই করুন।

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

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

উদাহরণস্বরূপ:

কোটলিন

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);

আরও তথ্যের জন্য, সম্প্রচার দেখুন।

একটি রেঞ্জিং অনুরোধ তৈরি করুন

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

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

কোটলিন

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 প্রোটোকল ব্যবহার করে সমস্ত রেঞ্জিং সম্পাদন করে।

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

অনুরোধের পরিসর

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

উদাহরণস্বরূপ:

কোটলিন

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 কলব্যাকটি ট্রিগার হয়। এই ধরনের ব্যর্থতা ঘটতে পারে যদি সার্ভিসটি সেই মুহূর্তে কোনো রেঞ্জিং অপারেশন সম্পাদন করতে না পারে—উদাহরণস্বরূপ, ওয়াই-ফাই নিষ্ক্রিয় থাকার কারণে, অ্যাপ্লিকেশনটি অনেক বেশি রেঞ্জিং অপারেশনের অনুরোধ করার ফলে থ্রটলড (throttled) হওয়ার কারণে, অথবা কোনো পারমিশন সংক্রান্ত সমস্যার কারণে।
  • যখন রেঞ্জিং অপারেশনটি সম্পন্ন হয়, তখন onRangingResults কলব্যাকটি ট্রিগার হয় এবং অনুরোধের তালিকার সাথে মিলে যাওয়া ফলাফলের একটি তালিকা প্রদান করে—প্রতিটি অনুরোধের জন্য একটি করে ফলাফল। ফলাফলের ক্রমটি অনুরোধের ক্রমের সাথে হুবহু নাও মিলতে পারে। উল্লেখ্য যে, রেঞ্জিং অপারেশনটি সম্পন্ন হলেও প্রতিটি ফলাফল সেই নির্দিষ্ট পরিমাপের ব্যর্থতা নির্দেশ করতে পারে।

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

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

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

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

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

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

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

৩. প্রতিটি সফল পরিমাপের ফলাফল সংগ্রহ করুন।

প্রতিটি সফল পরিমাপের ( RangingResult ) জন্য, আপনি সংশ্লিষ্ট get মেথডগুলো ব্যবহার করে ফলাফলের মানগুলো পুনরুদ্ধার করতে পারেন:

  • দূরত্ব, মিলিমিটারে, এবং পরিমাপের আদর্শ বিচ্যুতি:

    getDistanceMm()

    getDistanceStdDevMm()

  • পরিমাপের জন্য ব্যবহৃত প্যাকেটগুলির আরএসএসআই:

    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 সমর্থন করে। এই তালিকাটি সম্পূর্ণ নয়। আপনার RTT-সক্ষম পণ্যগুলি এখানে তালিকাভুক্ত করার জন্য আমাদের সাথে যোগাযোগ করতে আমরা আপনাকে উৎসাহিত করছি।

প্রবেশ বিন্দু

প্রস্তুতকারক এবং মডেল সমর্থনের তারিখ প্রোটোকল
নেস্ট ওয়াইফাই প্রো (ওয়াই-ফাই ৬ই) সমর্থিত এমসি
কম্পুলাব ওয়াইল্ড এপি সমর্থিত এমসি
গুগল ওয়াই-ফাই সমর্থিত এমসি
গুগল নেস্ট ওয়াই-ফাই রাউটার সমর্থিত এমসি
গুগল নেস্ট ওয়াই-ফাই পয়েন্ট সমর্থিত এমসি
আরুবা AP-635 সমর্থিত এমসি
সিসকো ৯১৩০ সমর্থিত এমসি
সিসকো ৯১৩৬ সমর্থিত এমসি
সিসকো ৯১৬৬ সমর্থিত এমসি
সিসকো ৯১৬৪ সমর্থিত এমসি
সিসকো CW9172I সমর্থিত mc/az
সিসকো CW9172H সমর্থিত mc/az
সিসকো CW9176I সমর্থিত mc/az
সিসকো CW9178I সমর্থিত mc/az
আরুবা AP-505 সমর্থিত এমসি
আরুবা AP-515 সমর্থিত এমসি
আরুবা AP-575 সমর্থিত এমসি
আরুবা AP-518 সমর্থিত এমসি
আরুবা এপি-৫০৫এইচ সমর্থিত এমসি
আরুবা AP-565 সমর্থিত এমসি
আরুবা AP-535 সমর্থিত এমসি
আরুবা এপি৫৬৭ সমর্থিত এমসি
আরুবা এপি৫৭৭ সমর্থিত এমসি
আরুবা AP555 সমর্থিত এমসি
আরুবা এপি৬৩৫ সমর্থিত এমসি
আরুবা AP655 সমর্থিত এমসি
আরুবা AP615 সমর্থিত এমসি
আরুবা এপি৭৩৪ সমর্থিত mc/az
আরুবা এপি৭৩৫ সমর্থিত mc/az
আরুবা AP754 সমর্থিত mc/az
আরুবা AP755 সমর্থিত mc/az

ফোন

প্রস্তুতকারক এবং মডেল অ্যান্ড্রয়েড সংস্করণ
গুগল পিক্সেল ৯ প্রো এক্সএল ১৪+
গুগল পিক্সেল ৯ ১৪+
গুগল পিক্সেল ৯ প্রো ১৪+
গুগল পিক্সেল ৯ প্রো এক্সএল ১৪+
গুগল পিক্সেল 7a ১৪+
গুগল পিক্সেল ৭ ১৪+
গুগল পিক্সেল ৮ ১৪+
গুগল পিক্সেল ৮ প্রো ১৪+
গুগল পিক্সেল ৮এ ১৪+
স্যামসাং এসএম-এস৯১৮বি ১৪+
স্যামসাং SM-A515F ১৪+
গুগল পিক্সেল ৯ প্রো ১৪+
স্যামসাং SM-A546E ১৪+
স্যামসাং এসএম-এস৯২৮বি ১৪+
স্যামসাং SM-A217F ১৪+
স্যামসাং SM-A715F ১৪+
স্যামসাং SM-A528B ১৪+
স্যামসাং SM-A135F ১৪+
স্যামসাং এসএম-এস৯১১বি ১৪+
শাওমি 21091116AI ১৪+
গুগল পিক্সেল ৯ ১৪+
স্যামসাং SM-A127F ১৪+
গুগল পিক্সেল ৭ প্রো ১৪+
স্যামসাং SM-A556E ১৪+
পিক্সেল ৬ ৯.০+
পিক্সেল ৬ প্রো ৯.০+
পিক্সেল ৫ ৯.০+
পিক্সেল 5a ৯.০+
পিক্সেল 5a 5G ৯.০+
শাওমি মি ১০ প্রো ৯.০+
শাওমি মি ১০ ৯.০+
শাওমি রেডমি মি ৯টি প্রো ৯.০+
শাওমি মি ৯টি ৯.০+
শাওমি মি ৯ ৯.০+
শাওমি মি নোট ১০ ৯.০+
শাওমি মি নোট ১০ লাইট ৯.০+
শাওমি রেডমি নোট ৯এস ৯.০+
শাওমি রেডমি নোট ৯ প্রো ৯.০+
শাওমি রেডমি নোট ৮টি ৯.০+
শাওমি রেডমি নোট ৮ ৯.০+
শাওমি রেডমি কে৩০ প্রো ৯.০+
শাওমি রেডমি কে২০ প্রো ৯.০+
শাওমি রেডমি কে২০ ৯.০+
শাওমি রেডমি নোট ৫ প্রো ৯.০+
শাওমি মি সিসি৯ প্রো ৯.০+
এলজি জি৮এক্স থিনকিউ ৯.০+
এলজি ভি৫০এস থিনকিউ ৯.০+
এলজি ভি৬০ থিনকিউ ৯.০+
এলজি ভি৩০ ৯.০+
স্যামসাং গ্যালাক্সি নোট ১০+ ৫জি ৯.০+
স্যামসাং গ্যালাক্সি এস২০+ ৫জি ৯.০+
স্যামসাং গ্যালাক্সি এস২০+ ৯.০+
স্যামসাং গ্যালাক্সি এস২০ ৫জি ৯.০+
স্যামসাং গ্যালাক্সি এস২০ আল্ট্রা ৫জি ৯.০+
স্যামসাং গ্যালাক্সি এস২০ ৯.০+
স্যামসাং গ্যালাক্সি নোট ১০+ ৯.০+
স্যামসাং গ্যালাক্সি নোট ১০ ৫জি ৯.০+
স্যামসাং গ্যালাক্সি নোট ১০ ৯.০+
স্যামসাং এ৯ প্রো ৯.০+
গুগল পিক্সেল ৪ এক্সএল ৯.০+
গুগল পিক্সেল ৪ ৯.০+
গুগল পিক্সেল 4a ৯.০+
গুগল পিক্সেল ৩ এক্সএল ৯.০+
গুগল পিক্সেল ৩ ৯.০+
গুগল পিক্সেল 3a এক্সএল ৯.০+
গুগল পিক্সেল 3a ৯.০+
গুগল পিক্সেল ২ এক্সএল ৯.০+
গুগল পিক্সেল ২ ৯.০+
গুগল পিক্সেল ১ এক্সএল ৯.০+
গুগল পিক্সেল ১ ৯.০+
পোকো এক্স২ ৯.০+
শার্প অ্যাকুয়াস আর৩ এসএইচ-০৪এল ৯.০+

খুচরা, গুদামজাতকরণ এবং বিতরণ কেন্দ্রের ডিভাইস

প্রস্তুতকারক এবং মডেল অ্যান্ড্রয়েড সংস্করণ
জেব্রা পিএস২০ ১০.০+
জেব্রা টিসি৫২/টিসি৫২এইচসি ১০.০+
জেব্রা টিসি৫৭ ১০.০+
জেব্রা টিসি৭২ ১০.০+
জেব্রা টিসি৭৭ ১০.০+
জেব্রা এমসি৯৩ ১০.০+
জেব্রা টিসি৮৩০০ ১০.০+
জেব্রা ভিসি৮৩০০ ১০.০+
জেব্রা EC30 ১০.০+
জেব্রা ইটি৫১ ১০.০+
জেব্রা ET56 ১০.০+
জেব্রা এল১০ ১০.০+
জেব্রা সিসি৬০০/সিসি৬০০০ ১০.০+
জেব্রা এমসি৩৩০০এক্স ১০.০+
জেব্রা এমসি৩৩০এক্স ১০.০+
জেব্রা টিসি৫২এক্স ১০.০+
জেব্রা টিসি৫৭এক্স ১০.০+
জেব্রা EC50 (ল্যান এবং HC) ১০.০+
জেব্রা EC55 (WAN) ১০.০+
জেব্রা WT6300 ১০.০+
স্করপিও এক্স৫ ১০.০+