API การวินิจฉัยการเชื่อมต่อจะอนุญาตแอปที่เป็นเจ้าของหรือจัดการเครือข่าย เช่น เป็นแอปของผู้ให้บริการ แอป VPN และแอปแนะนำ Wi-Fi เพื่อรับการวินิจฉัย ข้อมูลการเชื่อมต่อเครือข่ายจากเฟรมเวิร์ก แอปเหล่านี้สามารถลงทะเบียน Callback และรับการแจ้งเตือนพร้อมข้อมูลการเชื่อมต่อสำหรับ เครือข่ายที่ตนเป็นเจ้าของหรือจัดการ แอปจะไม่ได้รับการแจ้งเตือนสำหรับเครือข่าย ที่แอปไม่ได้เป็นเจ้าของหรือจัดการ
ตัวอย่างแอปที่จัดการหรือเป็นเจ้าของเครือข่ายมีดังนี้
- แอปของผู้ให้บริการ: จัดการเครือข่ายมือถือที่
subId
มีสิทธิ์ของผู้ให้บริการสำหรับ - แอปแนะนำ Wi-Fi: เครือข่าย Wi-Fi ของตัวเองที่แอปแนะนำ ระบบ
- แอป VPN: จัดการเครือข่ายทั้งหมดที่ VPN ใช้ แต่เฉพาะเมื่อ เป็น VPN ที่ใช้งานอยู่
จะมีการเรียกใช้ Callback ในกรณีต่อไปนี้
การตรวจสอบเครือข่าย: ระบบประเมินเครือข่ายที่ระบุเสร็จแล้ว
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
การนำไปใช้งานจริง เมธอด Callback ที่ไม่ได้ลบล้างจะไม่ต้องดำเนินการ
ด้านล่างเป็นตัวอย่างของ
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
...
}
}
หากต้องการลงทะเบียน Callback และรับการแจ้งเตือน โปรดโทร
registerConnectivityDiagnosticsCallback
หากต้องการยกเลิกการลงทะเบียน Callback และหยุดรับการแจ้งเตือน โปรดโทร
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);
การตรวจสอบความถูกต้อง
Connectivity Analytics API ได้รับการทดสอบแบบ CTS โดย
ConnectivityDiagnosticsManagerTest