واجهة برمجة تطبيقات تشخيص الاتصال

تسمح واجهة برمجة تطبيقات تشخيص الاتصال للتطبيقات التي تمتلك شبكات أو تديرها، مثل تطبيقات الناقل وتطبيقات VPN وتطبيقات اقتراحات Wi-Fi، بتلقي معلومات اتصال الشبكة التشخيصية من إطار العمل. يمكن لهذه التطبيقات تسجيل عمليات الاسترجاعات وتلقي الإشعارات بمعلومات الاتصال بالشبكات التي تمتلكها أو تديرها. لن تتلقى التطبيقات إشعارات للشبكات التي لا يملكها التطبيق أو يديرها.

فيما يلي أمثلة للتطبيقات التي تدير الشبكات أو تمتلكها:

  • تطبيقات مشغل شبكة الجوال: إدارة الشبكات الخلوية التي يتمتع subId الفرعي بامتيازات مشغل شبكة الجوال لها
  • تطبيقات اقتراحات Wi-Fi: امتلك شبكات Wi-Fi التي يقترحونها على النظام
  • تطبيقات 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 . تتم مشاركة الشبكة والاتصال المبلغ عنه (سواء كان التطبيق يعتقد أن الشبكة توفر الاتصال أم لا).

تطبيق

لاستخدام Connectivity Diagnostics API، يجب أن يحصل التطبيق على مثيل ConnectivityDiagnosticsManager من النظام الأساسي. يجب استخدام هذا المثيل لتسجيل وإلغاء تسجيل تطبيقات ConnectivityDiagnosticsCallback . طرق رد الاتصال التي لم يتم تجاوزها هي طرق no-ops.

فيما يلي مثال لتطبيق 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);

تصديق

تم اختبار واجهة برمجة تطبيقات تشخيص الاتصال (CTS) بواسطة ConnectivityDiagnosticsManagerTest .