[SP03] support registerNetworkStatsProvider API
am: b3f085c5a8
Change-Id: Id3a21676b6063048124c54035207a1c070df7a8c
This commit is contained in:
@@ -16,7 +16,10 @@
|
||||
|
||||
package android.app.usage;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.RequiresPermission;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.SystemService;
|
||||
import android.annotation.TestApi;
|
||||
import android.app.usage.NetworkStats.Bucket;
|
||||
@@ -27,6 +30,9 @@ import android.net.DataUsageRequest;
|
||||
import android.net.INetworkStatsService;
|
||||
import android.net.NetworkIdentity;
|
||||
import android.net.NetworkTemplate;
|
||||
import android.net.netstats.provider.AbstractNetworkStatsProvider;
|
||||
import android.net.netstats.provider.NetworkStatsProviderCallback;
|
||||
import android.net.netstats.provider.NetworkStatsProviderWrapper;
|
||||
import android.os.Binder;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@@ -519,6 +525,34 @@ public class NetworkStatsManager {
|
||||
private DataUsageRequest request;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a custom provider of {@link android.net.NetworkStats} to combine the network
|
||||
* statistics that cannot be seen by the kernel to system. To unregister, invoke
|
||||
* {@link NetworkStatsProviderCallback#unregister()}.
|
||||
*
|
||||
* @param tag a human readable identifier of the custom network stats provider.
|
||||
* @param provider a custom implementation of {@link AbstractNetworkStatsProvider} that needs to
|
||||
* be registered to the system.
|
||||
* @return a {@link NetworkStatsProviderCallback}, which can be used to report events to the
|
||||
* system.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
|
||||
@NonNull public NetworkStatsProviderCallback registerNetworkStatsProvider(
|
||||
@NonNull String tag,
|
||||
@NonNull AbstractNetworkStatsProvider provider) {
|
||||
try {
|
||||
final NetworkStatsProviderWrapper wrapper = new NetworkStatsProviderWrapper(provider);
|
||||
return new NetworkStatsProviderCallback(
|
||||
mService.registerNetworkStatsProvider(tag, wrapper));
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowAsRuntimeException();
|
||||
}
|
||||
// Unreachable code, but compiler doesn't know about it.
|
||||
return null;
|
||||
}
|
||||
|
||||
private static NetworkTemplate createTemplate(int networkType, String subscriberId) {
|
||||
final NetworkTemplate template;
|
||||
switch (networkType) {
|
||||
|
||||
@@ -23,6 +23,8 @@ import android.net.NetworkState;
|
||||
import android.net.NetworkStats;
|
||||
import android.net.NetworkStatsHistory;
|
||||
import android.net.NetworkTemplate;
|
||||
import android.net.netstats.provider.INetworkStatsProvider;
|
||||
import android.net.netstats.provider.INetworkStatsProviderCallback;
|
||||
import android.os.IBinder;
|
||||
import android.os.Messenger;
|
||||
import com.android.internal.net.VpnInfo;
|
||||
@@ -89,4 +91,7 @@ interface INetworkStatsService {
|
||||
/** Get the total network stats information since boot */
|
||||
long getTotalStats(int type);
|
||||
|
||||
/** Registers a network stats provider */
|
||||
INetworkStatsProviderCallback registerNetworkStatsProvider(String tag,
|
||||
in INetworkStatsProvider provider);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user