Search in sources :

Example 6 with HighUsageTip

use of com.android.settings.fuelgauge.batterytip.tips.HighUsageTip in project android_packages_apps_Settings by omnirom.

the class BatteryTipDialogFragmentTest method setUp.

@Before
public void setUp() {
    MockitoAnnotations.initMocks(this);
    mContext = spy(RuntimeEnvironment.application);
    FakeFeatureFactory.setupForTest();
    ShadowUtils.setApplicationLabel(PACKAGE_NAME, DISPLAY_NAME);
    mPackageManager = Shadows.shadowOf(mContext.getPackageManager());
    final ApplicationInfo applicationInfo = new ApplicationInfo();
    applicationInfo.name = DISPLAY_NAME;
    applicationInfo.packageName = PACKAGE_NAME;
    final PackageInfo packageInfo = new PackageInfo();
    packageInfo.packageName = PACKAGE_NAME;
    packageInfo.applicationInfo = applicationInfo;
    mPackageManager.addPackage(packageInfo);
    mPackageManager.setApplicationIcon(PACKAGE_NAME, new ColorDrawable());
    List<AppInfo> highUsageTips = new ArrayList<>();
    mAppInfo = new AppInfo.Builder().setScreenOnTimeMs(SCREEN_TIME_MS).setPackageName(PACKAGE_NAME).build();
    highUsageTips.add(mAppInfo);
    mHighUsageTip = new HighUsageTip(SCREEN_TIME_MS, highUsageTips);
    final List<AppInfo> restrictApps = new ArrayList<>();
    restrictApps.add(mAppInfo);
    mRestrictedOneAppTip = new RestrictAppTip(BatteryTip.StateType.NEW, new ArrayList<>(restrictApps));
    restrictApps.add(mAppInfo);
    mRestrictTwoAppsTip = new RestrictAppTip(BatteryTip.StateType.NEW, new ArrayList<>(restrictApps));
    mUnrestrictAppTip = new UnrestrictAppTip(BatteryTip.StateType.NEW, mAppInfo);
    mSummaryTip = spy(new SummaryTip(BatteryTip.StateType.NEW, EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN));
    mDefenderTip = new BatteryDefenderTip(BatteryTip.StateType.NEW);
}
Also used : HighUsageTip(com.android.settings.fuelgauge.batterytip.tips.HighUsageTip) BatteryDefenderTip(com.android.settings.fuelgauge.batterytip.tips.BatteryDefenderTip) ColorDrawable(android.graphics.drawable.ColorDrawable) PackageInfo(android.content.pm.PackageInfo) RestrictAppTip(com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip) SummaryTip(com.android.settings.fuelgauge.batterytip.tips.SummaryTip) ApplicationInfo(android.content.pm.ApplicationInfo) ArrayList(java.util.ArrayList) UnrestrictAppTip(com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip) Before(org.junit.Before)

Example 7 with HighUsageTip

use of com.android.settings.fuelgauge.batterytip.tips.HighUsageTip in project android_packages_apps_Settings by omnirom.

the class HighUsageDetectorTest method testDetect_containsHighUsageApp_tipVisibleAndSorted.

@Test
public void testDetect_containsHighUsageApp_tipVisibleAndSorted() {
    doReturn(true).when(mDataParser).isDeviceHeavilyUsed();
    final HighUsageTip highUsageTip = (HighUsageTip) mHighUsageDetector.detect();
    assertThat(highUsageTip.isVisible()).isTrue();
    // Contain two appInfo and large one comes first
    final List<AppInfo> appInfos = highUsageTip.getHighUsageAppList();
    assertThat(appInfos).containsExactly(mLowAppInfo, mHighAppInfo);
    assertThat(appInfos.get(0)).isEqualTo(mHighAppInfo);
}
Also used : HighUsageTip(com.android.settings.fuelgauge.batterytip.tips.HighUsageTip) AppInfo(com.android.settings.fuelgauge.batterytip.AppInfo) Test(org.junit.Test)

Example 8 with HighUsageTip

use of com.android.settings.fuelgauge.batterytip.tips.HighUsageTip in project android_packages_apps_Settings by omnirom.

the class BatteryTipDialogFragment method onCreateDialog.

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final Bundle bundle = getArguments();
    final Context context = getContext();
    mBatteryTip = bundle.getParcelable(ARG_BATTERY_TIP);
    mMetricsKey = bundle.getInt(ARG_METRICS_KEY);
    switch(mBatteryTip.getType()) {
        case BatteryTip.TipType.SUMMARY:
            return new AlertDialog.Builder(context).setMessage(R.string.battery_tip_dialog_summary_message).setPositiveButton(android.R.string.ok, null).create();
        case BatteryTip.TipType.HIGH_DEVICE_USAGE:
            final HighUsageTip highUsageTip = (HighUsageTip) mBatteryTip;
            final RecyclerView view = (RecyclerView) LayoutInflater.from(context).inflate(R.layout.recycler_view, null);
            view.setLayoutManager(new LinearLayoutManager(context));
            view.setAdapter(new HighUsageAdapter(context, highUsageTip.getHighUsageAppList()));
            return new AlertDialog.Builder(context).setMessage(getString(R.string.battery_tip_dialog_message, highUsageTip.getHighUsageAppList().size())).setView(view).setPositiveButton(android.R.string.ok, null).create();
        case BatteryTip.TipType.APP_RESTRICTION:
            final RestrictAppTip restrictAppTip = (RestrictAppTip) mBatteryTip;
            final List<AppInfo> restrictedAppList = restrictAppTip.getRestrictAppList();
            final int num = restrictedAppList.size();
            final CharSequence appLabel = Utils.getApplicationLabel(context, restrictedAppList.get(0).packageName);
            final AlertDialog.Builder builder = new AlertDialog.Builder(context).setTitle(context.getResources().getQuantityString(R.plurals.battery_tip_restrict_app_dialog_title, num, num)).setPositiveButton(R.string.battery_tip_restrict_app_dialog_ok, this).setNegativeButton(android.R.string.cancel, null);
            if (num == 1) {
                builder.setMessage(getString(R.string.battery_tip_restrict_app_dialog_message, appLabel));
            } else if (num <= 5) {
                builder.setMessage(getString(R.string.battery_tip_restrict_apps_less_than_5_dialog_message));
                final RecyclerView restrictionView = (RecyclerView) LayoutInflater.from(context).inflate(R.layout.recycler_view, null);
                restrictionView.setLayoutManager(new LinearLayoutManager(context));
                restrictionView.setAdapter(new HighUsageAdapter(context, restrictedAppList));
                builder.setView(restrictionView);
            } else {
                builder.setMessage(context.getString(R.string.battery_tip_restrict_apps_more_than_5_dialog_message, restrictAppTip.getRestrictAppsString(context)));
            }
            return builder.create();
        case BatteryTip.TipType.REMOVE_APP_RESTRICTION:
            final UnrestrictAppTip unrestrictAppTip = (UnrestrictAppTip) mBatteryTip;
            final CharSequence name = Utils.getApplicationLabel(context, unrestrictAppTip.getPackageName());
            return new AlertDialog.Builder(context).setTitle(getString(R.string.battery_tip_unrestrict_app_dialog_title)).setMessage(R.string.battery_tip_unrestrict_app_dialog_message).setPositiveButton(R.string.battery_tip_unrestrict_app_dialog_ok, this).setNegativeButton(R.string.battery_tip_unrestrict_app_dialog_cancel, null).create();
        case BatteryTip.TipType.BATTERY_DEFENDER:
            mMetricsFeatureProvider.action(context, SettingsEnums.ACTION_TIP_BATTERY_DEFENDER, mMetricsKey);
            final String percentage = NumberFormat.getPercentInstance().format(CHARGE_LIMIT_LEVEL);
            final String message = context.getString(R.string.battery_tip_limited_temporarily_dialog_msg, percentage);
            final boolean isPluggedIn = isPluggedIn();
            final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context).setTitle(R.string.battery_tip_limited_temporarily_title).setMessage(message);
            if (isPluggedIn) {
                dialogBuilder.setPositiveButton(R.string.battery_tip_limited_temporarily_dialog_resume_charge, this).setNegativeButton(R.string.okay, null);
            } else {
                dialogBuilder.setPositiveButton(R.string.okay, null);
            }
            return dialogBuilder.create();
        default:
            throw new IllegalArgumentException("unknown type " + mBatteryTip.getType());
    }
}
Also used : Context(android.content.Context) AlertDialog(androidx.appcompat.app.AlertDialog) Bundle(android.os.Bundle) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) HighUsageTip(com.android.settings.fuelgauge.batterytip.tips.HighUsageTip) RestrictAppTip(com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip) RecyclerView(androidx.recyclerview.widget.RecyclerView) UnrestrictAppTip(com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip)

Example 9 with HighUsageTip

use of com.android.settings.fuelgauge.batterytip.tips.HighUsageTip in project android_packages_apps_Settings by omnirom.

the class BatteryFixSliceTest method getSlice_unimportantSlice_shouldSkip.

@Test
public void getSlice_unimportantSlice_shouldSkip() {
    final List<BatteryTip> tips = new ArrayList<>();
    final List<AppInfo> appList = new ArrayList<>();
    appList.add(new AppInfo.Builder().setPackageName("com.android.settings").setScreenOnTimeMs(10000L).build());
    tips.add(new LowBatteryTip(BatteryTip.StateType.INVISIBLE, false));
    tips.add(new EarlyWarningTip(BatteryTip.StateType.HANDLED, false));
    tips.add(new HighUsageTip(1000L, appList));
    ShadowBatteryTipLoader.setBatteryTips(tips);
    BatteryFixSlice.refreshBatteryTips(mContext);
    final Slice slice = mSlice.getSlice();
    assertThat(SliceMetadata.from(mContext, slice).isErrorSlice()).isTrue();
}
Also used : EarlyWarningTip(com.android.settings.fuelgauge.batterytip.tips.EarlyWarningTip) HighUsageTip(com.android.settings.fuelgauge.batterytip.tips.HighUsageTip) Slice(androidx.slice.Slice) ArrayList(java.util.ArrayList) LowBatteryTip(com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip) BatteryTip(com.android.settings.fuelgauge.batterytip.tips.BatteryTip) LowBatteryTip(com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip) AppInfo(com.android.settings.fuelgauge.batterytip.AppInfo) Test(org.junit.Test)

Aggregations

HighUsageTip (com.android.settings.fuelgauge.batterytip.tips.HighUsageTip)9 RestrictAppTip (com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip)4 UnrestrictAppTip (com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip)4 ArrayList (java.util.ArrayList)4 AppInfo (com.android.settings.fuelgauge.batterytip.AppInfo)3 Test (org.junit.Test)3 Context (android.content.Context)2 Bundle (android.os.Bundle)2 AlertDialog (androidx.appcompat.app.AlertDialog)2 LinearLayoutManager (androidx.recyclerview.widget.LinearLayoutManager)2 RecyclerView (androidx.recyclerview.widget.RecyclerView)2 SummaryTip (com.android.settings.fuelgauge.batterytip.tips.SummaryTip)2 Before (org.junit.Before)2 ApplicationInfo (android.content.pm.ApplicationInfo)1 PackageInfo (android.content.pm.PackageInfo)1 ColorDrawable (android.graphics.drawable.ColorDrawable)1 BatteryStats (android.os.BatteryStats)1 UidBatteryConsumer (android.os.UidBatteryConsumer)1 Slice (androidx.slice.Slice)1 BatterySipper (com.android.internal.os.BatterySipper)1