Merge "Show data restricted apps, unify strings."
This commit is contained in:
@@ -45,17 +45,6 @@
|
||||
android:paddingRight="@*android:dimen/preference_item_padding_side"
|
||||
android:paddingTop="8dip"
|
||||
android:paddingBottom="8dip"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@*android:dimen/preference_item_padding_side"
|
||||
android:paddingRight="@*android:dimen/preference_item_padding_side"
|
||||
android:paddingBottom="8dip"
|
||||
android:text="@string/data_usage_disclaimer"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<TextView
|
||||
|
||||
@@ -3626,10 +3626,8 @@
|
||||
<!-- Label for data usage occuring while application in background. [CHAR LIMIT=48] -->
|
||||
<string name="data_usage_label_background">Background</string>
|
||||
|
||||
<!-- Disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
|
||||
<string name="data_usage_disclaimer" product="tablet">Measured by your tablet. Your carrier\'s data usage accounting may differ.</string>
|
||||
<!-- Disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
|
||||
<string name="data_usage_disclaimer" product="default">Measured by your phone. Your carrier\'s data usage accounting may differ.</string>
|
||||
<!-- Label for application which has its data usage restricted. [CHAR LIMIT=16] -->
|
||||
<string name="data_usage_app_restricted">restricted</string>
|
||||
|
||||
<!-- Body of dialog shown to request confirmation that mobile data will be disabled. [CHAR LIMIT=NONE] -->
|
||||
<string name="data_usage_disable_mobile">Disable mobile data?</string>
|
||||
@@ -3695,9 +3693,9 @@
|
||||
<!-- Title of dialog shown before user limits data usage. [CHAR LIMIT=48] -->
|
||||
<string name="data_usage_limit_dialog_title">Limiting data usage</string>
|
||||
<!-- Body of dialog shown before user limits mobile data usage. [CHAR LIMIT=NONE] -->
|
||||
<string name="data_usage_limit_dialog" product="tablet">Your <xliff:g id="networks" example="mobile">%1$s</xliff:g> data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your tablet, and your carrier may account for usage differently, consider using a conservative limit.</string>
|
||||
<string name="data_usage_limit_dialog_mobile" product="tablet">Your mobile data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your tablet, and your carrier may account for usage differently, consider using a conservative limit.</string>
|
||||
<!-- Body of dialog shown before user limits mobile data usage. [CHAR LIMIT=NONE] -->
|
||||
<string name="data_usage_limit_dialog" product="default">Your <xliff:g id="networks" example="mobile">%1$s</xliff:g> data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your phone, and your carrier may account for usage differently, consider using a conservative limit.</string>
|
||||
<string name="data_usage_limit_dialog_mobile" product="default">Your mobile data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your phone, and your carrier may account for usage differently, consider using a conservative limit.</string>
|
||||
|
||||
<!-- Title of dialog shown before user restricts background data usage. [CHAR LIMIT=48] -->
|
||||
<string name="data_usage_restrict_background_title">Restrict background data?</string>
|
||||
@@ -3714,7 +3712,12 @@
|
||||
<!-- Combination of total network bytes sent and received by an application. [CHAR LIMIT=NONE] -->
|
||||
<string name="data_usage_received_sent"><xliff:g id="received" example="128KB">%1$s</xliff:g> received, <xliff:g id="sent" example="1.3GB">%2$s</xliff:g> sent</string>
|
||||
<!-- Label displaying total network data transferred during a specific time period. [CHAR LIMIT=64] -->
|
||||
<string name="data_usage_total_during_range"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used</string>
|
||||
<string name="data_usage_total_during_range"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used.</string>
|
||||
|
||||
<!-- Label displaying total network data transferred during a specific time period, including a disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
|
||||
<string name="data_usage_total_during_range_mobile" product="tablet"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used, as measured by your tablet. Your carrier\'s data usage accounting may differ.</string>
|
||||
<!-- Label displaying total network data transferred during a specific time period, including a disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
|
||||
<string name="data_usage_total_during_range_mobile" product="default"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used, as measured by your phone. Your carrier\'s data usage accounting may differ.</string>
|
||||
|
||||
<!-- Dialog title for selecting paid networks. [CHAR LIMIT=25] -->
|
||||
<string name="data_usage_metered_title">Expensive networks</string>
|
||||
|
||||
@@ -1147,8 +1147,15 @@ public class DataUsageSummary extends Fragment {
|
||||
final String totalPhrase = Formatter.formatFileSize(context, totalBytes);
|
||||
final String rangePhrase = formatDateRange(context, start, end);
|
||||
|
||||
mUsageSummary.setText(
|
||||
getString(R.string.data_usage_total_during_range, totalPhrase, rangePhrase));
|
||||
final int summaryRes;
|
||||
if (TAB_MOBILE.equals(mCurrentTab) || TAB_3G.equals(mCurrentApp)
|
||||
|| TAB_4G.equals(mCurrentApp)) {
|
||||
summaryRes = R.string.data_usage_total_during_range_mobile;
|
||||
} else {
|
||||
summaryRes = R.string.data_usage_total_during_range;
|
||||
}
|
||||
|
||||
mUsageSummary.setText(getString(summaryRes, totalPhrase, rangePhrase));
|
||||
}
|
||||
|
||||
private final LoaderCallbacks<ChartData> mChartDataCallbacks = new LoaderCallbacks<
|
||||
@@ -1191,13 +1198,15 @@ public class DataUsageSummary extends Fragment {
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<NetworkStats> loader, NetworkStats data) {
|
||||
mAdapter.bindStats(data);
|
||||
final int[] restrictedAppIds = mPolicyManager.getAppsWithPolicy(
|
||||
POLICY_REJECT_METERED_BACKGROUND);
|
||||
mAdapter.bindStats(data, restrictedAppIds);
|
||||
updateEmptyVisible();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<NetworkStats> loader) {
|
||||
mAdapter.bindStats(null);
|
||||
mAdapter.bindStats(null, new int[0]);
|
||||
updateEmptyVisible();
|
||||
}
|
||||
|
||||
@@ -1374,6 +1383,7 @@ public class DataUsageSummary extends Fragment {
|
||||
|
||||
public static class AppItem implements Comparable<AppItem>, Parcelable {
|
||||
public final int appId;
|
||||
public boolean restricted;
|
||||
public SparseBooleanArray uids = new SparseBooleanArray();
|
||||
public long total;
|
||||
|
||||
@@ -1439,7 +1449,7 @@ public class DataUsageSummary extends Fragment {
|
||||
/**
|
||||
* Bind the given {@link NetworkStats}, or {@code null} to clear list.
|
||||
*/
|
||||
public void bindStats(NetworkStats stats) {
|
||||
public void bindStats(NetworkStats stats, int[] restrictedAppIds) {
|
||||
mItems.clear();
|
||||
|
||||
final AppItem systemItem = new AppItem(android.os.Process.SYSTEM_UID);
|
||||
@@ -1468,6 +1478,16 @@ public class DataUsageSummary extends Fragment {
|
||||
}
|
||||
}
|
||||
|
||||
for (int appId : restrictedAppIds) {
|
||||
AppItem item = knownUids.get(appId);
|
||||
if (item == null) {
|
||||
item = new AppItem(appId);
|
||||
item.total = -1;
|
||||
mItems.add(item);
|
||||
}
|
||||
item.restricted = true;
|
||||
}
|
||||
|
||||
if (systemItem.total > 0) {
|
||||
mItems.add(systemItem);
|
||||
}
|
||||
@@ -1513,7 +1533,13 @@ public class DataUsageSummary extends Fragment {
|
||||
final AppItem item = mItems.get(position);
|
||||
UidDetailTask.bindView(mProvider, item, convertView);
|
||||
|
||||
text1.setText(Formatter.formatFileSize(context, item.total));
|
||||
if (item.restricted && item.total <= 0) {
|
||||
text1.setText(R.string.data_usage_app_restricted);
|
||||
progress.setVisibility(View.GONE);
|
||||
} else {
|
||||
text1.setText(Formatter.formatFileSize(context, item.total));
|
||||
progress.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
final int percentTotal = mLargest != 0 ? (int) (item.total * 100 / mLargest) : 0;
|
||||
progress.setProgress(percentTotal);
|
||||
@@ -1580,16 +1606,13 @@ public class DataUsageSummary extends Fragment {
|
||||
// TODO: customize default limits based on network template
|
||||
final String currentTab = parent.mCurrentTab;
|
||||
if (TAB_3G.equals(currentTab)) {
|
||||
message = buildDialogMessage(res, R.string.data_usage_tab_3g);
|
||||
message = res.getString(R.string.data_usage_limit_dialog_mobile);
|
||||
limitBytes = 5 * GB_IN_BYTES;
|
||||
} else if (TAB_4G.equals(currentTab)) {
|
||||
message = buildDialogMessage(res, R.string.data_usage_tab_4g);
|
||||
message = res.getString(R.string.data_usage_limit_dialog_mobile);
|
||||
limitBytes = 5 * GB_IN_BYTES;
|
||||
} else if (TAB_MOBILE.equals(currentTab)) {
|
||||
message = buildDialogMessage(res, R.string.data_usage_list_mobile);
|
||||
limitBytes = 5 * GB_IN_BYTES;
|
||||
} else if (TAB_WIFI.equals(currentTab)) {
|
||||
message = buildDialogMessage(res, R.string.data_usage_tab_wifi);
|
||||
message = res.getString(R.string.data_usage_limit_dialog_mobile);
|
||||
limitBytes = 5 * GB_IN_BYTES;
|
||||
} else {
|
||||
throw new IllegalArgumentException("unknown current tab: " + currentTab);
|
||||
@@ -1605,10 +1628,6 @@ public class DataUsageSummary extends Fragment {
|
||||
dialog.show(parent.getFragmentManager(), TAG_CONFIRM_LIMIT);
|
||||
}
|
||||
|
||||
private static CharSequence buildDialogMessage(Resources res, int networkResId) {
|
||||
return res.getString(R.string.data_usage_limit_dialog, res.getString(networkResId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
final Context context = getActivity();
|
||||
|
||||
@@ -21,6 +21,7 @@ import static android.net.NetworkStats.SET_FOREGROUND;
|
||||
import static android.net.NetworkStats.TAG_NONE;
|
||||
import static android.net.NetworkStatsHistory.FIELD_RX_BYTES;
|
||||
import static android.net.NetworkStatsHistory.FIELD_TX_BYTES;
|
||||
import static android.text.format.DateUtils.HOUR_IN_MILLIS;
|
||||
|
||||
import android.content.AsyncTaskLoader;
|
||||
import android.content.Context;
|
||||
@@ -88,9 +89,6 @@ public class ChartDataLoader extends AsyncTaskLoader<ChartData> {
|
||||
data.network = mSession.getHistoryForNetwork(template, fields);
|
||||
|
||||
if (app != null) {
|
||||
data.detailDefault = null;
|
||||
data.detailForeground = null;
|
||||
|
||||
// load stats for current uid and template
|
||||
final int size = app.uids.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
@@ -101,9 +99,15 @@ public class ChartDataLoader extends AsyncTaskLoader<ChartData> {
|
||||
template, uid, SET_FOREGROUND, data.detailForeground);
|
||||
}
|
||||
|
||||
data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration());
|
||||
data.detail.recordEntireHistory(data.detailDefault);
|
||||
data.detail.recordEntireHistory(data.detailForeground);
|
||||
if (size > 0) {
|
||||
data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration());
|
||||
data.detail.recordEntireHistory(data.detailDefault);
|
||||
data.detail.recordEntireHistory(data.detailForeground);
|
||||
} else {
|
||||
data.detailDefault = new NetworkStatsHistory(HOUR_IN_MILLIS);
|
||||
data.detailForeground = new NetworkStatsHistory(HOUR_IN_MILLIS);
|
||||
data.detail = new NetworkStatsHistory(HOUR_IN_MILLIS);
|
||||
}
|
||||
}
|
||||
|
||||
return data;
|
||||
|
||||
Reference in New Issue
Block a user