যেসব অ্যাপ নেটওয়ার্কের মালিকানা বা ম্যানেজ করে, যেমন ক্যারিয়ার অ্যাপ, VPN অ্যাপ এবং ওয়াই-ফাই সাজেশন অ্যাপ, সেগুলিকে কানেক্টিভিটি ডায়াগনস্টিক API ফ্রেমওয়ার্ক থেকে ডায়াগনস্টিক নেটওয়ার্ক কানেক্টিভিটি সংক্রান্ত তথ্য পেতে দেয়। এইসব অ্যাপ কলব্যাক রেজিস্টার করতে এবং সেইসব নেটওয়ার্কের কানেক্টিভিটি সংক্রান্ত তথ্য সহ বিজ্ঞপ্তি পেতে পারে যেগুলি তারা মালিকানাধীন বা ম্যানেজ করে। অ্যাপের মালিকানাধীন বা ম্যানেজ করা নয় এমন নেটওয়ার্কের জন্য অ্যাপ বিজ্ঞপ্তি পাবে না।
নেটওয়ার্ক ম্যানেজ বা মালিকানাধীন অ্যাপের উদাহরণ নিচে দেওয়া হল:
- পরিষেবা প্রদানকারী অ্যাপ: যে মোবাইল নেটওয়ার্কের জন্য
subIdপরিষেবা প্রদানকারীর বিশেষ সুবিধা আছে, সেটি ম্যানেজ করে - ওয়াই-ফাই সাজেশন অ্যাপ: নিজস্ব ওয়াই-ফাই নেটওয়ার্ক যা তারা সিস্টেমকে সাজেস্ট করে
- VPN অ্যাপ: VPN ব্যবহার করে এমন সব নেটওয়ার্ক ম্যানেজ করে, তবে শুধুমাত্র অ্যাক্টিভ VPN-এর ক্ষেত্রে
নিম্নলিখিত ক্ষেত্রে কলব্যাক ইনভোক করা হয়:
নেটওয়ার্ক যাচাইকরণ: সিস্টেম একটি নির্দিষ্ট নেটওয়ার্কের মূল্যায়ন সম্পূর্ণ করেছে।
ConnectivityReportক্লাসটি নেটওয়ার্কের বর্তমান অবস্থা এবং যাচাইকরণের অংশ হিসেবে সম্পন্ন হওয়া যেকোনও পরীক্ষা বা প্রসেডিউরের ফলাফল সম্পর্কে তথ্য প্রদান করে।public class ConnectivityReport { Network network; long reportTimestamp; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle additionalInfo; }ডেটা স্টল সন্দেহ করা হচ্ছে: ডেটা স্টল, এমন একটি পরিস্থিতি যেখানে IP প্যাকেট নেটওয়ার্কের মাধ্যমে সঠিকভাবে প্রবাহিত হচ্ছে না, সন্দেহ করা হচ্ছে।
DataStallReportক্লাস, সন্দেহজনক ডেটা স্টল সম্পর্কে তথ্য প্রদান করে।public class DataStallReport { Network network; long reportTimestamp; int detectionMethod; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle stallDetails; }কানেক্টিভিটি সংক্রান্ত রিপোর্ট: কোনও অ্যাপ
ConnectivityManager#reportNetworkConnectivity-এর মাধ্যমে সিস্টেমে কানেক্টিভিটি সংক্রান্ত রিপোর্ট করেছে। নেটওয়ার্ক এবং কানেক্টিভিটি সংক্রান্ত রিপোর্ট (অ্যাপের মতে নেটওয়ার্ক কানেক্টিভিটি প্রদান করে কিনা) শেয়ার করা হয়।
প্রয়োগ
কানেক্টিভিটি ডায়াগনস্টিকস API ব্যবহার করতে, কোনও অ্যাপকে অবশ্যই প্ল্যাটফর্ম থেকে
ConnectivityDiagnosticsManager
ইনস্ট্যান্স পেতে হবে। এই ইনস্ট্যান্সটি রেজিস্ট্রেশন ও
আনরেজিস্ট্রেশন
ConnectivityDiagnosticsCallback
ইমপ্লিমেন্টেশনের জন্য ব্যবহার করা উচিত। ওভাররাইড করা হয়নি এমন কলব্যাক পদ্ধতিগুলি নো-অপস।
ConnectivityDiagnosticsCallback
প্রয়োগের একটি উদাহরণ নিচে দেওয়া হল:
public class ExampleCallback extends ConnectivityDiagnosticsCallback {
@Override
public void onConnectivityReportAvailable(@NonNull ConnectivityReport report) {
...
// Log data, take action based on report result, etc
...
}
@Override
public void onDataStallSuspected(@NonNull DataStallReport report) {
...
// Log data, take action based on report result, etc
...
}
@Override
public void onNetworkConnectivityReported(
@NonNull Network network, boolean hasConnectivity) {
...
// Log data, take action based on report result, etc
...
}
}
কলব্যাক রেজিস্টার করতে এবং বিজ্ঞপ্তি পেতে, কল করুন
registerConnectivityDiagnosticsCallback।
কলব্যাক আনরেজিস্টার করতে এবং বিজ্ঞপ্তি পাওয়া বন্ধ করতে, unregisterConnectivityDiagnosticsCallback কল করুন।
নিচে রেজিস্টার ও আনরেজিস্টার করার
ConnectivityDiagnosticsCallback উদাহরণ দেওয়া হল:
NetworkRequest request =
new NetworkRequest.Builder()
.addTransportType(TRANSPORT_CELLULAR)
.build();
// Use an Executor that is appropriate for your use case
Executor executor = Executors.newSingleThreadExecutor();
ConnectivityDiagnosticsManager cdm =
context.getSystemService(ConnectivityDiagnosticsManager.class);
ExampleCallback callback = new ExampleCallback();
cdm.registerConnectivityDiagnosticsCallback(
request, executor, callback);
...
// Collect connectivity information on networks that match with request
...
cdm.unregisterConnectivityDiagnosticsCallback(callback);
যাচাইকরণ
কানেক্টিভিটি ডায়াগনস্টিকস API-এর CTS পরীক্ষা
ConnectivityDiagnosticsManagerTest করে।