2828import android .app .usage .NetworkStatsManager ;
2929import android .content .Context ;
3030import android .net .ConnectivityManager ;
31- import android .net .INetworkStatsService ;
32- import android .net .INetworkStatsSession ;
3331import android .net .NetworkPolicy ;
3432import android .net .NetworkPolicyManager ;
3533import android .net .NetworkTemplate ;
34+ import android .net .wifi .WifiInfo ;
35+ import android .net .wifi .WifiManager ;
3636import android .os .RemoteException ;
37- import android .os .ServiceManager ;
3837import android .telephony .SubscriptionManager ;
3938import android .telephony .TelephonyManager ;
4039import android .text .format .DateUtils ;
@@ -60,22 +59,20 @@ public class DataUsageController {
6059
6160 private final Context mContext ;
6261 private final ConnectivityManager mConnectivityManager ;
63- private final INetworkStatsService mStatsService ;
6462 private final NetworkPolicyManager mPolicyManager ;
6563 private final NetworkStatsManager mNetworkStatsManager ;
64+ private final WifiManager mWifiManager ;
6665
67- private INetworkStatsSession mSession ;
6866 private Callback mCallback ;
6967 private NetworkNameProvider mNetworkController ;
7068 private int mSubscriptionId ;
7169
7270 public DataUsageController (Context context ) {
7371 mContext = context ;
7472 mConnectivityManager = ConnectivityManager .from (context );
75- mStatsService = INetworkStatsService .Stub .asInterface (
76- ServiceManager .getService (Context .NETWORK_STATS_SERVICE ));
7773 mPolicyManager = NetworkPolicyManager .from (mContext );
7874 mNetworkStatsManager = context .getSystemService (NetworkStatsManager .class );
75+ mWifiManager = (WifiManager ) context .getSystemService (Context .WIFI_SERVICE );
7976 mSubscriptionId = SubscriptionManager .INVALID_SUBSCRIPTION_ID ;
8077 }
8178
@@ -111,19 +108,28 @@ private DataUsageInfo warn(String msg) {
111108
112109 public DataUsageInfo getDataUsageInfo () {
113110 NetworkTemplate template = DataUsageUtils .getMobileTemplate (mContext , mSubscriptionId );
114-
115111 return getDataUsageInfo (template );
116112 }
117113
118114 public DataUsageInfo getDailyDataUsageInfo () {
119115 NetworkTemplate template = DataUsageUtils .getMobileTemplate (mContext , mSubscriptionId );
120-
121116 return getDailyDataUsageInfo (template );
122117 }
123118
124119 public DataUsageInfo getWifiDataUsageInfo () {
125- NetworkTemplate template = NetworkTemplate .buildTemplateWifiWildcard ();
126- return getDataUsageInfo (template );
120+ return getDataUsageInfo (getWifiNetworkTemplate ());
121+ }
122+
123+ public DataUsageInfo getWifiDailyDataUsageInfo () {
124+ return getDailyDataUsageInfo (getWifiNetworkTemplate ());
125+ }
126+
127+ public NetworkTemplate getWifiNetworkTemplate () {
128+ final WifiInfo wifiInfo = mWifiManager .getConnectionInfo ();
129+ if (wifiInfo .getHiddenSSID () || wifiInfo .getSSID ().equals (WifiManager .UNKNOWN_SSID )) {
130+ return NetworkTemplate .buildTemplateWifiWildcard ();
131+ }
132+ return NetworkTemplate .buildTemplateWifi (wifiInfo .getSSID ());
127133 }
128134
129135 public DataUsageInfo getDataUsageInfo (NetworkTemplate template ) {
@@ -193,6 +199,7 @@ public DataUsageInfo getDailyDataUsageInfo(NetworkTemplate template) {
193199
194200 /**
195201 * Get the total usage level recorded in the network history
202+ *
196203 * @param template the network template to retrieve the network history
197204 * @return the total usage level recorded in the network history or -1L if there is error
198205 * retrieving the data.
@@ -219,8 +226,7 @@ private NetworkPolicy findNetworkPolicy(NetworkTemplate template) {
219226 final NetworkPolicy [] policies = mPolicyManager .getNetworkPolicies ();
220227 if (policies == null ) return null ;
221228 final int N = policies .length ;
222- for (int i = 0 ; i < N ; i ++) {
223- final NetworkPolicy policy = policies [i ];
229+ for (final NetworkPolicy policy : policies ) {
224230 if (policy != null && template .equals (policy .template )) {
225231 return policy ;
226232 }
@@ -229,14 +235,14 @@ private NetworkPolicy findNetworkPolicy(NetworkTemplate template) {
229235 }
230236
231237 private static String statsBucketToString (Bucket bucket ) {
232- return bucket == null ? null : new StringBuilder ( "Entry[" )
233- . append ( "bucketDuration=" ). append (bucket .getEndTimeStamp () - bucket .getStartTimeStamp ())
234- . append ( ",bucketStart=" ). append ( bucket .getStartTimeStamp ())
235- . append ( ",rxBytes=" ). append ( bucket .getRxBytes ())
236- . append ( ",rxPackets=" ). append ( bucket .getRxPackets ())
237- . append ( ",txBytes=" ). append ( bucket .getTxBytes ())
238- . append ( ",txPackets=" ). append ( bucket .getTxPackets ())
239- . append ( ']' ). toString () ;
238+ return bucket == null ? null : "Entry[" +
239+ "bucketDuration=" + (bucket .getEndTimeStamp () - bucket .getStartTimeStamp ()) +
240+ ",bucketStart=" + bucket .getStartTimeStamp () +
241+ ",rxBytes=" + bucket .getRxBytes () +
242+ ",rxPackets=" + bucket .getRxPackets () +
243+ ",txBytes=" + bucket .getTxBytes () +
244+ ",txPackets=" + bucket .getTxPackets () +
245+ ']' ;
240246 }
241247
242248 @ VisibleForTesting
@@ -284,22 +290,20 @@ static int getNetworkType(NetworkTemplate networkTemplate) {
284290 }
285291 final int matchRule = networkTemplate .getMatchRule ();
286292 switch (matchRule ) {
287- case NetworkTemplate .MATCH_MOBILE :
288- case NetworkTemplate .MATCH_MOBILE_WILDCARD :
289- return ConnectivityManager .TYPE_MOBILE ;
290293 case NetworkTemplate .MATCH_WIFI :
291294 case NetworkTemplate .MATCH_WIFI_WILDCARD :
292- return ConnectivityManager .TYPE_WIFI ;
295+ return ConnectivityManager .TYPE_WIFI ;
293296 case NetworkTemplate .MATCH_ETHERNET :
294- return ConnectivityManager .TYPE_ETHERNET ;
297+ return ConnectivityManager .TYPE_ETHERNET ;
298+ case NetworkTemplate .MATCH_MOBILE :
299+ case NetworkTemplate .MATCH_MOBILE_WILDCARD :
295300 default :
296301 return ConnectivityManager .TYPE_MOBILE ;
297302 }
298303 }
299304
300305 private String getActiveSubscriberId () {
301- final String actualSubscriberId = getTelephonyManager ().getSubscriberId ();
302- return actualSubscriberId ;
306+ return getTelephonyManager ().getSubscriberId ();
303307 }
304308
305309 private String formatDateRange (long start , long end ) {
0 commit comments