OSDN Git Service

Remove PowerUsageDetail.java
authorjackqdyulei <jackqdyulei@google.com>
Wed, 5 Apr 2017 21:20:06 +0000 (14:20 -0700)
committerjackqdyulei <jackqdyulei@google.com>
Wed, 5 Apr 2017 21:20:06 +0000 (14:20 -0700)
Now we use AdvancedPowerUsageDetail instead.

This cl also:
1. Remove PowerUsageDetail in SearchIndexableResources since we
don't want to index PowerUsageDetail
2. Add AdvancedPowerUsageDetail in SettingsGateway

Bug: 36992358
Test: Build
Change-Id: I598bb159aa2b5a4889071ae9a17d29554e6afe11

src/com/android/settings/applications/InstalledAppDetails.java
src/com/android/settings/core/gateway/SettingsGateway.java
src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
src/com/android/settings/fuelgauge/PowerUsageDetail.java [deleted file]
src/com/android/settings/search/SearchIndexableResources.java

index 5dc73a9..d25a032 100755 (executable)
@@ -90,7 +90,6 @@ import com.android.settings.datausage.DataUsageList;
 import com.android.settings.datausage.DataUsageSummary;
 import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
 import com.android.settings.fuelgauge.BatteryEntry;
-import com.android.settings.fuelgauge.PowerUsageDetail;
 import com.android.settings.notification.AppNotificationSettings;
 import com.android.settings.notification.NotificationBackend;
 import com.android.settings.notification.NotificationBackend.AppRow;
index d1bb9d6..caac95f 100644 (file)
@@ -76,8 +76,8 @@ import com.android.settings.deviceinfo.StorageDashboardFragment;
 import com.android.settings.deviceinfo.StorageSettings;
 import com.android.settings.display.NightDisplaySettings;
 import com.android.settings.enterprise.EnterprisePrivacySettings;
+import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
 import com.android.settings.fuelgauge.BatterySaverSettings;
-import com.android.settings.fuelgauge.PowerUsageDetail;
 import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.gestures.AssistGestureSettings;
 import com.android.settings.gestures.DoubleTapPowerSettings;
@@ -210,7 +210,7 @@ public class SettingsGateway {
             ZenModeEventRuleSettings.class.getName(),
             ZenModeVisualInterruptionSettings.class.getName(),
             ProcessStatsUi.class.getName(),
-            PowerUsageDetail.class.getName(),
+            AdvancedPowerUsageDetail.class.getName(),
             ProcessStatsSummary.class.getName(),
             DrawOverlayDetails.class.getName(),
             WriteSettingsDetails.class.getName(),
index 8be3b14..39b72cc 100644 (file)
@@ -58,7 +58,6 @@ import java.util.List;
  * 1. Detail battery usage information for app(i.e. usage time, usage amount)
  * 2. Battery related controls for app(i.e uninstall, force stop)
  *
- * This fragment will replace {@link PowerUsageDetail}
  */
 public class AdvancedPowerUsageDetail extends PowerUsageBase implements
         ButtonActionDialogFragment.AppButtonsDialogListener {
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
deleted file mode 100644 (file)
index f0d0a10..0000000
+++ /dev/null
@@ -1,826 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.fuelgauge;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.ApplicationErrorReport;
-import android.app.admin.DevicePolicyManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.BatteryStats;
-import android.os.Bundle;
-import android.os.Process;
-import android.os.UserHandle;
-import android.support.v14.preference.PreferenceFragment;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.Preference.OnPreferenceClickListener;
-import android.support.v7.preference.PreferenceCategory;
-import android.support.v7.preference.PreferenceScreen;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.internal.os.BatterySipper;
-import com.android.internal.os.BatterySipper.DrainType;
-import com.android.internal.os.BatteryStatsHelper;
-import com.android.internal.util.FastPrintWriter;
-import com.android.settings.AppHeader;
-import com.android.settings.DisplaySettings;
-import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.Utils;
-import com.android.settings.applications.AppHeaderController;
-import com.android.settings.applications.InstalledAppDetails;
-import com.android.settings.applications.LayoutPreference;
-import com.android.settings.bluetooth.BluetoothSettings;
-import com.android.settings.core.PreferenceController;
-import com.android.settings.location.LocationSettings;
-import com.android.settings.network.NetworkDashboardFragment;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.wifi.WifiSettings;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.List;
-
-// TODO(b/35810915): Delete this page once ag/1971493 is done.
-public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickListener {
-
-    // Note: Must match the sequence of the DrainType
-    private static int[] sDrainTypeDesciptions = new int[] {
-        R.string.battery_desc_standby,
-        R.string.battery_desc_radio,
-        R.string.battery_desc_voice,
-        R.string.battery_desc_wifi,
-        R.string.battery_desc_bluetooth,
-        R.string.battery_desc_flashlight,
-        R.string.battery_desc_display,
-        R.string.battery_desc_apps,
-        R.string.battery_desc_users,
-        R.string.battery_desc_unaccounted,
-        R.string.battery_desc_overcounted,
-        R.string.battery_desc_camera,
-    };
-
-    public static void startBatteryDetailPage(SettingsActivity caller,
-            PreferenceFragment fragment, BatteryStatsHelper helper, int statsType,
-            BatteryEntry entry, boolean showLocationButton, boolean includeAppInfo) {
-        // Initialize mStats if necessary.
-        helper.getStats();
-
-        final int dischargeAmount = helper.getStats().getDischargeAmount(statsType);
-        Bundle args = new Bundle();
-        args.putString(PowerUsageDetail.EXTRA_TITLE, entry.name);
-        args.putInt(PowerUsageDetail.EXTRA_PERCENT, (int)
-                ((entry.sipper.totalPowerMah * dischargeAmount / helper.getTotalPower()) + .5));
-        args.putInt(PowerUsageDetail.EXTRA_GAUGE, (int)
-                Math.ceil(entry.sipper.totalPowerMah * 100 / helper.getMaxPower()));
-        args.putLong(PowerUsageDetail.EXTRA_USAGE_DURATION, helper.getStatsPeriod());
-        args.putString(PowerUsageDetail.EXTRA_ICON_PACKAGE, entry.defaultPackageName);
-        args.putInt(PowerUsageDetail.EXTRA_ICON_ID, entry.iconId);
-        args.putDouble(PowerUsageDetail.EXTRA_NO_COVERAGE, entry.sipper.noCoveragePercent);
-        if (entry.sipper.uidObj != null) {
-            args.putInt(PowerUsageDetail.EXTRA_UID, entry.sipper.uidObj.getUid());
-        }
-        args.putSerializable(PowerUsageDetail.EXTRA_DRAIN_TYPE, entry.sipper.drainType);
-        args.putBoolean(PowerUsageDetail.EXTRA_SHOW_LOCATION_BUTTON, showLocationButton);
-        args.putBoolean(AppHeader.EXTRA_HIDE_INFO_BUTTON, !includeAppInfo);
-
-        int userId = UserHandle.myUserId();
-        int[] types;
-        double[] values;
-        switch (entry.sipper.drainType) {
-            case APP:
-            case USER:
-            {
-                BatteryStats.Uid uid = entry.sipper.uidObj;
-                types = new int[] {
-                    R.string.usage_type_cpu,
-                    R.string.usage_type_cpu_foreground,
-                    R.string.usage_type_wake_lock,
-                    R.string.usage_type_gps,
-                    R.string.usage_type_wifi_running,
-                    R.string.usage_type_data_recv,
-                    R.string.usage_type_data_send,
-                    R.string.usage_type_radio_active,
-                    R.string.usage_type_data_wifi_recv,
-                    R.string.usage_type_data_wifi_send,
-                    R.string.usage_type_audio,
-                    R.string.usage_type_video,
-                    R.string.usage_type_camera,
-                    R.string.usage_type_flashlight,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.cpuTimeMs,
-                    entry.sipper.cpuFgTimeMs,
-                    entry.sipper.wakeLockTimeMs,
-                    entry.sipper.gpsTimeMs,
-                    entry.sipper.wifiRunningTimeMs,
-                    entry.sipper.mobileRxPackets,
-                    entry.sipper.mobileTxPackets,
-                    entry.sipper.mobileActive,
-                    entry.sipper.wifiRxPackets,
-                    entry.sipper.wifiTxPackets,
-                    0,
-                    0,
-                    entry.sipper.cameraTimeMs,
-                    entry.sipper.flashlightTimeMs,
-                    entry.sipper.totalPowerMah,
-                };
-
-                if (entry.sipper.drainType == BatterySipper.DrainType.APP) {
-                    Writer result = new StringWriter();
-                    PrintWriter printWriter = new FastPrintWriter(result, false, 1024);
-                    helper.getStats().dumpLocked(caller, printWriter, "", helper.getStatsType(),
-                            uid.getUid());
-                    printWriter.flush();
-                    args.putString(PowerUsageDetail.EXTRA_REPORT_DETAILS, result.toString());
-
-                    result = new StringWriter();
-                    printWriter = new FastPrintWriter(result, false, 1024);
-                    helper.getStats().dumpCheckinLocked(caller, printWriter, helper.getStatsType(),
-                            uid.getUid());
-                    printWriter.flush();
-                    args.putString(PowerUsageDetail.EXTRA_REPORT_CHECKIN_DETAILS,
-                            result.toString());
-                    if (uid.getUid() != 0) {
-                        userId = UserHandle.getUserId(uid.getUid());
-                    }
-                }
-            }
-            break;
-            case CELL:
-            {
-                types = new int[] {
-                    R.string.usage_type_on_time,
-                    R.string.usage_type_no_coverage,
-                    R.string.usage_type_radio_active,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.usageTimeMs,
-                    entry.sipper.noCoveragePercent,
-                    entry.sipper.mobileActive,
-                    entry.sipper.totalPowerMah,
-                };
-            }
-            break;
-            case WIFI:
-            {
-                types = new int[] {
-                    R.string.usage_type_wifi_running,
-                    R.string.usage_type_cpu,
-                    R.string.usage_type_cpu_foreground,
-                    R.string.usage_type_wake_lock,
-                    R.string.usage_type_data_recv,
-                    R.string.usage_type_data_send,
-                    R.string.usage_type_data_wifi_recv,
-                    R.string.usage_type_data_wifi_send,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.wifiRunningTimeMs,
-                    entry.sipper.cpuTimeMs,
-                    entry.sipper.cpuFgTimeMs,
-                    entry.sipper.wakeLockTimeMs,
-                    entry.sipper.mobileRxPackets,
-                    entry.sipper.mobileTxPackets,
-                    entry.sipper.wifiRxPackets,
-                    entry.sipper.wifiTxPackets,
-                    entry.sipper.totalPowerMah,
-                };
-            } break;
-            case BLUETOOTH:
-            {
-                types = new int[] {
-                    R.string.usage_type_on_time,
-                    R.string.usage_type_cpu,
-                    R.string.usage_type_cpu_foreground,
-                    R.string.usage_type_wake_lock,
-                    R.string.usage_type_data_recv,
-                    R.string.usage_type_data_send,
-                    R.string.usage_type_data_wifi_recv,
-                    R.string.usage_type_data_wifi_send,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.usageTimeMs,
-                    entry.sipper.cpuTimeMs,
-                    entry.sipper.cpuFgTimeMs,
-                    entry.sipper.wakeLockTimeMs,
-                    entry.sipper.mobileRxPackets,
-                    entry.sipper.mobileTxPackets,
-                    entry.sipper.wifiRxPackets,
-                    entry.sipper.wifiTxPackets,
-                    entry.sipper.totalPowerMah,
-                };
-            } break;
-            case UNACCOUNTED:
-            {
-                types = new int[] {
-                    R.string.usage_type_total_battery_capacity,
-                    R.string.usage_type_computed_power,
-                    R.string.usage_type_actual_power,
-                };
-                values = new double[] {
-                    helper.getPowerProfile().getBatteryCapacity(),
-                    helper.getComputedPower(),
-                    helper.getMinDrainedPower(),
-                };
-            } break;
-            case OVERCOUNTED:
-            {
-                types = new int[] {
-                    R.string.usage_type_total_battery_capacity,
-                    R.string.usage_type_computed_power,
-                    R.string.usage_type_actual_power,
-                };
-                values = new double[] {
-                    helper.getPowerProfile().getBatteryCapacity(),
-                    helper.getComputedPower(),
-                    helper.getMaxDrainedPower(),
-                };
-            } break;
-            default:
-            {
-                types = new int[] {
-                    R.string.usage_type_on_time,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.usageTimeMs,
-                    entry.sipper.totalPowerMah,
-                };
-            }
-        }
-        args.putIntArray(PowerUsageDetail.EXTRA_DETAIL_TYPES, types);
-        args.putDoubleArray(PowerUsageDetail.EXTRA_DETAIL_VALUES, values);
-
-        caller.startPreferencePanelAsUser(fragment, PowerUsageDetail.class.getName(), args,
-                R.string.details_title, null, new UserHandle(userId));
-    }
-
-    public static final int ACTION_DISPLAY_SETTINGS = 1;
-    public static final int ACTION_WIFI_SETTINGS = 2;
-    public static final int ACTION_BLUETOOTH_SETTINGS = 3;
-    public static final int ACTION_WIRELESS_SETTINGS = 4;
-    public static final int ACTION_APP_DETAILS = 5;
-    public static final int ACTION_LOCATION_SETTINGS = 6;
-    public static final int ACTION_FORCE_STOP = 7;
-    public static final int ACTION_REPORT = 8;
-
-    public static final int USAGE_SINCE_UNPLUGGED = 1;
-    public static final int USAGE_SINCE_RESET = 2;
-
-    public static final String EXTRA_TITLE = "title";
-    public static final String EXTRA_PERCENT = "percent";
-    public static final String EXTRA_GAUGE = "gauge";
-    public static final String EXTRA_UID = "uid";
-    public static final String EXTRA_USAGE_SINCE = "since";
-    public static final String EXTRA_USAGE_DURATION = "duration";
-    public static final String EXTRA_REPORT_DETAILS = "report_details";
-    public static final String EXTRA_REPORT_CHECKIN_DETAILS = "report_checkin_details";
-    public static final String EXTRA_DETAIL_TYPES = "types"; // Array of usage types (cpu, gps, etc)
-    public static final String EXTRA_DETAIL_VALUES = "values"; // Array of doubles
-    public static final String EXTRA_DRAIN_TYPE = "drainType"; // DrainType
-    public static final String EXTRA_ICON_PACKAGE = "iconPackage"; // String
-    public static final String EXTRA_NO_COVERAGE = "noCoverage";
-    public static final String EXTRA_ICON_ID = "iconId"; // Int
-    public static final String EXTRA_SHOW_LOCATION_BUTTON = "showLocationButton";  // Boolean
-
-    private static final String TAG = "PowerUsageDetail";
-
-    private static final String KEY_DETAILS_PARENT = "details_parent";
-    private static final String KEY_CONTROLS_PARENT = "controls_parent";
-    private static final String KEY_MESSAGES_PARENT = "messages_parent";
-    private static final String KEY_PACKAGES_PARENT = "packages_parent";
-    private static final String KEY_TWO_BUTTONS = "two_buttons";
-    private static final String KEY_HIGH_POWER = "high_power";
-
-    private PackageManager mPm;
-    private DevicePolicyManager mDpm;
-    private int[] mTypes;
-    private int mUid;
-    private double[] mValues;
-    private Button mForceStopButton;
-    private Button mReportButton;
-    private BatterySipper.DrainType mDrainType;
-    private double mNoCoverage; // Percentage of time that there was no coverage
-    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
-
-    private PreferenceCategory mDetailsParent;
-    private PreferenceCategory mControlsParent;
-    private PreferenceCategory mMessagesParent;
-    private PreferenceCategory mPackagesParent;
-
-    private boolean mUsesGps;
-    private boolean mShowLocationButton;
-
-    private String[] mPackages;
-
-    ApplicationInfo mApp;
-    ComponentName mInstaller;
-    private Preference mHighPower;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        Activity activity = getActivity();
-        mPm = activity.getPackageManager();
-        mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
-
-        mDetailsParent = (PreferenceCategory) findPreference(KEY_DETAILS_PARENT);
-        mControlsParent = (PreferenceCategory) findPreference(KEY_CONTROLS_PARENT);
-        mMessagesParent = (PreferenceCategory) findPreference(KEY_MESSAGES_PARENT);
-        mPackagesParent = (PreferenceCategory) findPreference(KEY_PACKAGES_PARENT);
-
-        mPowerUsageFeatureProvider =
-                FeatureFactory.getFactory(activity).getPowerUsageFeatureProvider(activity);
-
-        createDetails();
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return MetricsEvent.FUELGAUGE_POWER_USAGE_DETAIL;
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        checkForceStop();
-        if (mHighPower != null) {
-            mHighPower.setSummary(HighPowerDetail.getSummary(getActivity(), mApp.packageName));
-        }
-
-        setupHeader();
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.power_usage_details;
-    }
-
-    @Override
-    protected List<PreferenceController> getPreferenceControllers(Context context) {
-        final List<PreferenceController> controllers = new ArrayList<>();
-        final int uid = getArguments().getInt(EXTRA_UID, 0);
-        controllers.add(new BackgroundActivityPreferenceController(context, uid));
-
-        return controllers;
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (mHighPower != null) {
-            mHighPower.setSummary(HighPowerDetail.getSummary(getActivity(), mApp.packageName));
-        }
-    }
-
-    private void createDetails() {
-        final Bundle args = getArguments();
-        Context context = getActivity();
-        mUid = args.getInt(EXTRA_UID, 0);
-        mPackages = context.getPackageManager().getPackagesForUid(mUid);
-        mDrainType = (BatterySipper.DrainType) args.getSerializable(EXTRA_DRAIN_TYPE);
-        mNoCoverage = args.getDouble(EXTRA_NO_COVERAGE, 0);
-        mShowLocationButton = args.getBoolean(EXTRA_SHOW_LOCATION_BUTTON);
-
-        mTypes = args.getIntArray(EXTRA_DETAIL_TYPES);
-        mValues = args.getDoubleArray(EXTRA_DETAIL_VALUES);
-
-        LayoutPreference twoButtons = (LayoutPreference) findPreference(KEY_TWO_BUTTONS);
-        mForceStopButton = (Button) twoButtons.findViewById(R.id.left_button);
-        mReportButton = (Button) twoButtons.findViewById(R.id.right_button);
-        mForceStopButton.setEnabled(false);
-
-        if (mUid >= Process.FIRST_APPLICATION_UID) {
-            mForceStopButton.setText(R.string.force_stop);
-            mForceStopButton.setTag(ACTION_FORCE_STOP);
-            mForceStopButton.setOnClickListener(this);
-            mReportButton.setText(com.android.internal.R.string.report);
-            mReportButton.setTag(ACTION_REPORT);
-            mReportButton.setOnClickListener(this);
-
-            if (mPackages != null && mPackages.length > 0) {
-                try {
-                    mApp = context.getPackageManager().getApplicationInfo(
-                            mPackages[0], 0);
-                } catch (NameNotFoundException e) {
-                }
-            } else {
-                Log.d(TAG, "No packages!!");
-            }
-            // check if error reporting is enabled in secure settings
-            int enabled = android.provider.Settings.Global.getInt(context.getContentResolver(),
-                    android.provider.Settings.Global.SEND_ACTION_APP_ERROR, 0);
-            if (enabled != 0) {
-                if (mApp != null) {
-                    mInstaller = ApplicationErrorReport.getErrorReportReceiver(
-                            context, mPackages[0], mApp.flags);
-                }
-                mReportButton.setEnabled(mInstaller != null);
-            } else {
-                removePreference(KEY_TWO_BUTTONS);
-            }
-            if (mApp != null
-                    && PowerWhitelistBackend.getInstance().isWhitelisted(mApp.packageName)) {
-                mHighPower = findPreference(KEY_HIGH_POWER);
-                mHighPower.setOnPreferenceClickListener(new OnPreferenceClickListener() {
-                    @Override
-                    public boolean onPreferenceClick(Preference preference) {
-                        HighPowerDetail.show(PowerUsageDetail.this, mApp.packageName, 0, false);
-                        return true;
-                    }
-                });
-            } else {
-                mControlsParent.removePreference(findPreference(KEY_HIGH_POWER));
-            }
-        } else {
-            removePreference(KEY_TWO_BUTTONS);
-            mControlsParent.removePreference(findPreference(KEY_HIGH_POWER));
-        }
-
-        refreshStats();
-
-        fillDetailsSection();
-        fillPackagesSection(mUid);
-        fillControlsSection(mUid);
-        fillMessagesSection(mUid);
-    }
-
-    private void setupHeader() {
-        final Activity activity = getActivity();
-        final Bundle args = getArguments();
-        final String title = args.getString(EXTRA_TITLE);
-        final int iconId = args.getInt(EXTRA_ICON_ID, 0);
-        String pkg = args.getString(EXTRA_ICON_PACKAGE);
-        Drawable appIcon = null;
-        int uid = -1;
-        final PackageManager pm = activity.getPackageManager();
-
-        if (!TextUtils.isEmpty(pkg)) {
-            try {
-                ApplicationInfo ai = pm.getPackageInfo(pkg, 0).applicationInfo;
-                if (ai != null) {
-                    appIcon = ai.loadIcon(pm);
-                    uid = ai.uid;
-                }
-            } catch (NameNotFoundException nnfe) {
-                // Use default icon
-            }
-        } else if (iconId != 0) {
-            appIcon = activity.getDrawable(iconId);
-        }
-        if (appIcon == null) {
-            appIcon = activity.getPackageManager().getDefaultActivityIcon();
-        }
-
-        if (pkg == null && mPackages != null) {
-            pkg = mPackages[0];
-        }
-        final PreferenceScreen screen = getPreferenceScreen();
-        final Preference appHeaderPref =
-            findPreference(AppHeaderController.PREF_KEY_APP_HEADER);
-        if (appHeaderPref != null) {
-            return;
-        }
-        final Preference pref = FeatureFactory.getFactory(activity)
-            .getApplicationFeatureProvider(activity)
-            .newAppHeaderController(this, null /* appHeader */)
-            .setIcon(appIcon)
-            .setLabel(title)
-            .setPackageName(pkg)
-            .setUid(uid)
-            .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
-                AppHeaderController.ActionType.ACTION_NONE)
-            .done(getPrefContext());
-        screen.addPreference(pref);
-    }
-
-    @Override
-    public void onClick(View v) {
-        doAction((Integer) v.getTag());
-    }
-
-    // utility method used to start sub activity
-    private void startApplicationDetailsActivity() {
-        // start new fragment to display extended information
-        Bundle args = new Bundle();
-        args.putString(InstalledAppDetails.ARG_PACKAGE_NAME, mPackages[0]);
-
-        SettingsActivity sa = (SettingsActivity) getActivity();
-        sa.startPreferencePanel(this, InstalledAppDetails.class.getName(), args,
-                R.string.application_info_label, null, null, 0);
-    }
-
-    private void doAction(int action) {
-        SettingsActivity sa = (SettingsActivity)getActivity();
-        switch (action) {
-            case ACTION_DISPLAY_SETTINGS:
-                sa.startPreferencePanel(this, DisplaySettings.class.getName(), null,
-                        R.string.display_settings_title, null, null, 0);
-                break;
-            case ACTION_WIFI_SETTINGS:
-                sa.startPreferencePanel(this, WifiSettings.class.getName(), null,
-                        R.string.wifi_settings, null, null, 0);
-                break;
-            case ACTION_BLUETOOTH_SETTINGS:
-                sa.startPreferencePanel(this, BluetoothSettings.class.getName(), null,
-                        R.string.bluetooth_settings, null, null, 0);
-                break;
-            case ACTION_WIRELESS_SETTINGS:
-                sa.startPreferencePanel(this, NetworkDashboardFragment.class.getName(), null,
-                        R.string.radio_controls_title, null, null, 0);
-                break;
-            case ACTION_APP_DETAILS:
-                startApplicationDetailsActivity();
-                break;
-            case ACTION_LOCATION_SETTINGS:
-                sa.startPreferencePanel(this, LocationSettings.class.getName(), null,
-                        R.string.location_settings_title, null, null, 0);
-                break;
-            case ACTION_FORCE_STOP:
-                killProcesses();
-                break;
-            case ACTION_REPORT:
-                reportBatteryUse();
-                break;
-        }
-    }
-
-    private void fillDetailsSection() {
-        if (mTypes != null && mValues != null) {
-            for (int i = 0; i < mTypes.length; i++) {
-                // Only add an item if the time is greater than zero
-                if (mValues[i] <= 0) continue;
-                final String label = getString(mTypes[i]);
-                String value = null;
-                switch (mTypes[i]) {
-                    case R.string.usage_type_data_recv:
-                    case R.string.usage_type_data_send:
-                    case R.string.usage_type_data_wifi_recv:
-                    case R.string.usage_type_data_wifi_send:
-                        final long packets = (long) (mValues[i]);
-                        value = Long.toString(packets);
-                        break;
-                    case R.string.usage_type_no_coverage:
-                        final int percentage = (int) Math.floor(mValues[i]);
-                        value = Utils.formatPercentage(percentage);
-                        break;
-                    case R.string.usage_type_total_battery_capacity:
-                    case R.string.usage_type_computed_power:
-                    case R.string.usage_type_actual_power:
-                        value = getActivity().getString(R.string.mah, (long)(mValues[i]));
-                        break;
-                    case R.string.usage_type_gps:
-                        mUsesGps = true;
-                        // Fall through
-                    default:
-                        value = Utils.formatElapsedTime(getActivity(), mValues[i], true);
-                }
-                addHorizontalPreference(mDetailsParent, label, value);
-            }
-        }
-    }
-
-    private void addHorizontalPreference(PreferenceCategory parent, CharSequence title,
-            CharSequence summary) {
-        Preference pref = new Preference(getPrefContext());
-        pref.setLayoutResource(R.layout.horizontal_preference);
-        pref.setTitle(title);
-        pref.setSummary(summary);
-        pref.setSelectable(false);
-        parent.addPreference(pref);
-    }
-
-    private void fillControlsSection(int uid) {
-        PackageManager pm = getActivity().getPackageManager();
-        String[] packages = pm.getPackagesForUid(uid);
-        PackageInfo pi = null;
-        try {
-            pi = packages != null ? pm.getPackageInfo(packages[0], 0) : null;
-        } catch (NameNotFoundException nnfe) { /* Nothing */ }
-        ApplicationInfo ai = pi != null? pi.applicationInfo : null;
-
-        boolean removeHeader = true;
-        switch (mDrainType) {
-            case APP:
-                // If it is a Java application and only one package is associated with the Uid
-                if (packages != null && packages.length == 1) {
-                    addControl(R.string.battery_action_app_details,
-                            R.string.battery_sugg_apps_info, ACTION_APP_DETAILS);
-                    removeHeader = false;
-                    // If the application has a settings screen, jump to  that
-                    // TODO:
-                }
-
-                // If power usage detail page is launched from location page, suppress "Location"
-                // button to prevent circular loops.
-                if (mUsesGps && mShowLocationButton
-                        && mPowerUsageFeatureProvider.isLocationSettingEnabled(packages)) {
-                    addControl(R.string.location_settings_title,
-                            R.string.battery_sugg_apps_gps, ACTION_LOCATION_SETTINGS);
-                    removeHeader = false;
-                }
-                break;
-            case SCREEN:
-                addControl(R.string.display_settings,
-                        R.string.battery_sugg_display,
-                        ACTION_DISPLAY_SETTINGS);
-                removeHeader = false;
-                break;
-            case WIFI:
-                addControl(R.string.wifi_settings,
-                        R.string.battery_sugg_wifi,
-                        ACTION_WIFI_SETTINGS);
-                removeHeader = false;
-                break;
-            case BLUETOOTH:
-                addControl(R.string.bluetooth_settings,
-                        R.string.battery_sugg_bluetooth_basic,
-                        ACTION_BLUETOOTH_SETTINGS);
-                removeHeader = false;
-                break;
-            case CELL:
-                if (mNoCoverage > 10) {
-                    addControl(R.string.radio_controls_title,
-                            R.string.battery_sugg_radio,
-                            ACTION_WIRELESS_SETTINGS);
-                    removeHeader = false;
-                }
-                break;
-        }
-        if (removeHeader) {
-            mControlsParent.setTitle(null);
-        }
-    }
-
-    private void addControl(int pageSummary, int actionTitle, final int action) {
-        Preference pref = new Preference(getPrefContext());
-        pref.setTitle(actionTitle);
-        pref.setLayoutResource(R.layout.horizontal_preference);
-        pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
-            @Override
-            public boolean onPreferenceClick(Preference preference) {
-                doAction(action);
-                return true;
-            }
-        });
-        mControlsParent.addPreference(pref);
-    }
-
-    private void fillMessagesSection(int uid) {
-        boolean removeHeader = true;
-        switch (mDrainType) {
-            case UNACCOUNTED:
-                addMessage(R.string.battery_msg_unaccounted);
-                removeHeader = false;
-                break;
-        }
-        if (removeHeader) {
-            mMessagesParent.setTitle(null);
-        }
-    }
-
-    private void addMessage(int message) {
-        addHorizontalPreference(mMessagesParent, getString(message), null);
-    }
-
-    private void removePackagesSection() {
-        getPreferenceScreen().removePreference(mPackagesParent);
-    }
-
-    private void killProcesses() {
-        if (mPackages == null) return;
-        ActivityManager am = (ActivityManager)getActivity().getSystemService(
-                Context.ACTIVITY_SERVICE);
-        final int userId = UserHandle.getUserId(mUid);
-        for (int i = 0; i < mPackages.length; i++) {
-            am.forceStopPackageAsUser(mPackages[i], userId);
-        }
-        checkForceStop();
-    }
-
-    private final BroadcastReceiver mCheckKillProcessesReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            mForceStopButton.setEnabled(getResultCode() != Activity.RESULT_CANCELED);
-        }
-    };
-
-    private void checkForceStop() {
-        if (mPackages == null || mUid < Process.FIRST_APPLICATION_UID) {
-            mForceStopButton.setEnabled(false);
-            return;
-        }
-        for (int i = 0; i < mPackages.length; i++) {
-            if (mDpm.packageHasActiveAdmins(mPackages[i])) {
-                mForceStopButton.setEnabled(false);
-                return;
-            }
-        }
-        for (int i = 0; i < mPackages.length; i++) {
-            try {
-                ApplicationInfo info = mPm.getApplicationInfo(mPackages[i], 0);
-                if ((info.flags&ApplicationInfo.FLAG_STOPPED) == 0) {
-                    mForceStopButton.setEnabled(true);
-                    break;
-                }
-            } catch (PackageManager.NameNotFoundException e) {
-            }
-        }
-        Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
-                Uri.fromParts("package", mPackages[0], null));
-        intent.putExtra(Intent.EXTRA_PACKAGES, mPackages);
-        intent.putExtra(Intent.EXTRA_UID, mUid);
-        intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mUid));
-        getActivity().sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null,
-                Activity.RESULT_CANCELED, null, null);
-    }
-
-    private void reportBatteryUse() {
-        if (mPackages == null) return;
-
-        ApplicationErrorReport report = new ApplicationErrorReport();
-        report.type = ApplicationErrorReport.TYPE_BATTERY;
-        report.packageName = mPackages[0];
-        report.installerPackageName = mInstaller.getPackageName();
-        report.processName = mPackages[0];
-        report.time = System.currentTimeMillis();
-        report.systemApp = (mApp.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
-
-        final Bundle args = getArguments();
-        ApplicationErrorReport.BatteryInfo batteryInfo = new ApplicationErrorReport.BatteryInfo();
-        batteryInfo.usagePercent = args.getInt(EXTRA_PERCENT, 1);
-        batteryInfo.durationMicros = args.getLong(EXTRA_USAGE_DURATION, 0);
-        batteryInfo.usageDetails = args.getString(EXTRA_REPORT_DETAILS);
-        batteryInfo.checkinDetails = args.getString(EXTRA_REPORT_CHECKIN_DETAILS);
-        report.batteryInfo = batteryInfo;
-
-        Intent result = new Intent(Intent.ACTION_APP_ERROR);
-        result.setComponent(mInstaller);
-        result.putExtra(Intent.EXTRA_BUG_REPORT, report);
-        result.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        startActivity(result);
-    }
-
-    private void fillPackagesSection(int uid) {
-        if (uid < 1) {
-            removePackagesSection();
-            return;
-        }
-        if (mPackages == null || mPackages.length < 2) {
-            removePackagesSection();
-            return;
-        }
-
-        PackageManager pm = getPackageManager();
-        // Convert package names to user-facing labels where possible
-        for (int i = 0; i < mPackages.length; i++) {
-            try {
-                ApplicationInfo ai = pm.getApplicationInfo(mPackages[i], 0);
-                CharSequence label = ai.loadLabel(pm);
-                if (label != null) {
-                    mPackages[i] = label.toString();
-                }
-                addHorizontalPreference(mPackagesParent, mPackages[i], null);
-            } catch (NameNotFoundException e) {
-            }
-        }
-    }
-}
index f8cedc1..f7882ae 100644 (file)
@@ -50,7 +50,6 @@ import com.android.settings.display.ScreenZoomSettings;
 import com.android.settings.enterprise.EnterprisePrivacySettings;
 import com.android.settings.fuelgauge.BatterySaverSettings;
 import com.android.settings.fuelgauge.PowerUsageAdvanced;
-import com.android.settings.fuelgauge.PowerUsageDetail;
 import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.gestures.AssistGestureSettings;
 import com.android.settings.gestures.DoubleTapPowerSettings;
@@ -126,7 +125,6 @@ public final class SearchIndexableResources {
         addIndex(StorageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
         addIndex(PowerUsageSummary.class,
                 R.xml.power_usage_summary, R.drawable.ic_settings_battery);
-        addIndex(PowerUsageDetail.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
         addIndex(PowerUsageAdvanced.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
         addIndex(BatterySaverSettings.class,
                 R.xml.battery_saver_settings, R.drawable.ic_settings_battery);