Merge "Rename powerstatstests to batterystatstests"
This commit is contained in:
committed by
Android (Google) Code Review
commit
71ff4e2978
@@ -1,5 +1,5 @@
|
||||
android_test {
|
||||
name: "PowerStatsLoadTests",
|
||||
name: "BatteryStatsLoadTests",
|
||||
srcs: ["src/**/*.java"],
|
||||
static_libs: [
|
||||
"androidx.test.rules",
|
||||
@@ -16,7 +16,7 @@
|
||||
-->
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.frameworks.core.powerstatsloadtests">
|
||||
package="com.android.frameworks.core.batterystatsloadtests">
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
<instrumentation
|
||||
android:name="androidx.test.runner.AndroidJUnitRunner"
|
||||
android:targetPackage="com.android.frameworks.core.powerstatsloadtests"
|
||||
android:targetPackage="com.android.frameworks.core.batterystatsloadtests"
|
||||
android:label="Power Stats Load Tests" />
|
||||
|
||||
<queries>
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsloadtests;
|
||||
package com.android.frameworks.core.batterystatsloadtests;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsloadtests;
|
||||
package com.android.frameworks.core.batterystatsloadtests;
|
||||
|
||||
import android.os.Process;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsloadtests;
|
||||
package com.android.frameworks.core.batterystatsloadtests;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
@@ -106,6 +106,7 @@ public class PowerMetricsCollector implements TestRule {
|
||||
mContext = instrumentation.getContext();
|
||||
mUid = Process.myUid();
|
||||
mUserManager = mContext.getSystemService(UserManager.class);
|
||||
// TODO(b/175324611): Use BatteryUsageStats instead
|
||||
mStatsHelper = new BatteryStatsHelper(mContext, false /* collectBatteryBroadcast */);
|
||||
mStatsHelper.create((Bundle) null);
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsloadtests;
|
||||
package com.android.frameworks.core.batterystatsloadtests;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsloadtests;
|
||||
package com.android.frameworks.core.batterystatsloadtests;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
android_test {
|
||||
name: "PowerStatsViewer",
|
||||
name: "BatteryStatsViewer",
|
||||
srcs: ["src/**/*.java"],
|
||||
defaults: ["SettingsLibDefaults"],
|
||||
static_libs: [
|
||||
@@ -16,7 +16,7 @@
|
||||
-->
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.frameworks.core.powerstatsviewer"
|
||||
package="com.android.frameworks.core.batterystatsviewer"
|
||||
android:sharedUserId="android.uid.system">
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
<application
|
||||
android:theme="@style/Theme"
|
||||
android:label="Power Stats Viewer">
|
||||
<activity android:name=".PowerStatsViewerActivity"
|
||||
android:label="Power Stats Viewer"
|
||||
android:label="Battery Stats Viewer">
|
||||
<activity android:name=".BatteryStatsViewerActivity"
|
||||
android:label="Battery Stats Viewer"
|
||||
android:launchMode="singleTop"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
@@ -35,7 +35,7 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".PowerConsumerPickerActivity"
|
||||
android:label="Select a power consumer"/>
|
||||
<activity android:name=".BatteryConsumerPickerActivity"
|
||||
android:label="Select a battery consumer"/>
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -42,13 +42,13 @@
|
||||
android:paddingStart="10dp"
|
||||
android:paddingEnd="10dp">
|
||||
|
||||
<include layout="@layout/power_consumer_info_layout"/>
|
||||
<include layout="@layout/battery_consumer_info_layout"/>
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/power_stats_data_view"
|
||||
android:id="@+id/battery_consumer_data_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"/>
|
||||
@@ -59,7 +59,7 @@
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:visibility="gone"
|
||||
android:text="No power stats available"/>
|
||||
android:text="No battery stats available"/>
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsviewer;
|
||||
package com.android.frameworks.core.batterystatsviewer;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.BatteryConsumer;
|
||||
@@ -30,7 +30,7 @@ import com.android.internal.os.BatteryStatsHelper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PowerStatsData {
|
||||
public class BatteryConsumerData {
|
||||
private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
|
||||
private static final String PACKAGE_MEDIA_PROVIDER = "com.android.providers.media";
|
||||
private static final String PACKAGE_SYSTEMUI = "com.android.systemui";
|
||||
@@ -58,11 +58,11 @@ public class PowerStatsData {
|
||||
public double total;
|
||||
}
|
||||
|
||||
private final PowerConsumerInfoHelper.PowerConsumerInfo mPowerConsumerInfo;
|
||||
private final BatteryConsumerInfoHelper.BatteryConsumerInfo mBatteryConsumerInfo;
|
||||
private final List<Entry> mEntries = new ArrayList<>();
|
||||
|
||||
public PowerStatsData(Context context, BatteryStatsHelper batteryStatsHelper,
|
||||
BatteryUsageStats batteryUsageStats, String powerConsumerId) {
|
||||
public BatteryConsumerData(Context context, BatteryStatsHelper batteryStatsHelper,
|
||||
BatteryUsageStats batteryUsageStats, String batteryConsumerId) {
|
||||
List<BatterySipper> usageList = batteryStatsHelper.getUsageList();
|
||||
BatteryStats batteryStats = batteryStatsHelper.getStats();
|
||||
|
||||
@@ -102,7 +102,7 @@ public class PowerStatsData {
|
||||
totalScreenPower = sipper.sumPower();
|
||||
}
|
||||
|
||||
if (powerConsumerId(sipper).equals(powerConsumerId)) {
|
||||
if (batteryConsumerId(sipper).equals(batteryConsumerId)) {
|
||||
requestedBatterySipper = sipper;
|
||||
}
|
||||
|
||||
@@ -143,21 +143,20 @@ public class PowerStatsData {
|
||||
BatteryConsumer requestedBatteryConsumer = null;
|
||||
|
||||
for (BatteryConsumer consumer : batteryUsageStats.getUidBatteryConsumers()) {
|
||||
if (powerConsumerId(consumer).equals(powerConsumerId)) {
|
||||
if (batteryConsumerId(consumer).equals(batteryConsumerId)) {
|
||||
requestedBatteryConsumer = consumer;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (requestedBatterySipper == null) {
|
||||
mPowerConsumerInfo = null;
|
||||
mBatteryConsumerInfo = null;
|
||||
return;
|
||||
}
|
||||
|
||||
long totalScreenMeasuredEnergyUJ = batteryStats.getScreenOnEnergy();
|
||||
|
||||
mPowerConsumerInfo = PowerConsumerInfoHelper.makePowerConsumerInfo(
|
||||
mBatteryConsumerInfo = BatteryConsumerInfoHelper.makeBatteryConsumerInfo(
|
||||
context.getPackageManager(), requestedBatterySipper);
|
||||
long totalScreenMeasuredEnergyUJ = batteryStats.getScreenOnEnergy();
|
||||
|
||||
addEntry("Total power", EntryType.POWER,
|
||||
requestedBatterySipper.totalSmearedPowerMah, totalSmearedPowerMah);
|
||||
@@ -279,19 +278,19 @@ public class PowerStatsData {
|
||||
}
|
||||
}
|
||||
|
||||
public PowerConsumerInfoHelper.PowerConsumerInfo getPowerConsumerInfo() {
|
||||
return mPowerConsumerInfo;
|
||||
public BatteryConsumerInfoHelper.BatteryConsumerInfo getBatteryConsumerInfo() {
|
||||
return mBatteryConsumerInfo;
|
||||
}
|
||||
|
||||
public List<Entry> getEntries() {
|
||||
return mEntries;
|
||||
}
|
||||
|
||||
public static String powerConsumerId(BatterySipper sipper) {
|
||||
public static String batteryConsumerId(BatterySipper sipper) {
|
||||
return sipper.drainType + "|" + sipper.userId + "|" + sipper.getUid();
|
||||
}
|
||||
|
||||
public static String powerConsumerId(BatteryConsumer consumer) {
|
||||
public static String batteryConsumerId(BatteryConsumer consumer) {
|
||||
if (consumer instanceof UidBatteryConsumer) {
|
||||
return BatterySipper.DrainType.APP + "|"
|
||||
+ UserHandle.getUserId(((UidBatteryConsumer) consumer).getUid()) + "|"
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsviewer;
|
||||
package com.android.frameworks.core.batterystatsviewer;
|
||||
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -26,11 +26,11 @@ import com.android.internal.os.BatterySipper;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
class PowerConsumerInfoHelper {
|
||||
class BatteryConsumerInfoHelper {
|
||||
|
||||
private static final String SYSTEM_SERVER_PACKAGE_NAME = "android";
|
||||
|
||||
public static class PowerConsumerInfo {
|
||||
public static class BatteryConsumerInfo {
|
||||
public String id;
|
||||
public CharSequence label;
|
||||
public double powerMah;
|
||||
@@ -40,10 +40,10 @@ class PowerConsumerInfoHelper {
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static PowerConsumerInfo makePowerConsumerInfo(PackageManager packageManager,
|
||||
public static BatteryConsumerInfo makeBatteryConsumerInfo(PackageManager packageManager,
|
||||
@NonNull BatterySipper sipper) {
|
||||
PowerConsumerInfo info = new PowerConsumerInfo();
|
||||
info.id = PowerStatsData.powerConsumerId(sipper);
|
||||
BatteryConsumerInfo info = new BatteryConsumerInfo();
|
||||
info.id = BatteryConsumerData.batteryConsumerId(sipper);
|
||||
sipper.sumPower();
|
||||
info.powerMah = sipper.totalSmearedPowerMah;
|
||||
switch (sipper.drainType) {
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsviewer;
|
||||
package com.android.frameworks.core.batterystatsviewer;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -34,14 +34,14 @@ import com.google.android.material.tabs.TabLayout;
|
||||
* Picker, showing a sorted lists of applications and other types of entities consuming power.
|
||||
* Returns the selected entity ID or null.
|
||||
*/
|
||||
public class PowerConsumerPickerActivity extends FragmentActivity {
|
||||
public class BatteryConsumerPickerActivity extends FragmentActivity {
|
||||
|
||||
public static final ActivityResultContract<Void, String> CONTRACT =
|
||||
new ActivityResultContract<Void, String>() {
|
||||
@NonNull
|
||||
@Override
|
||||
public Intent createIntent(@NonNull Context context, Void aVoid) {
|
||||
return new Intent(context, PowerConsumerPickerActivity.class);
|
||||
return new Intent(context, BatteryConsumerPickerActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -58,7 +58,7 @@ public class PowerConsumerPickerActivity extends FragmentActivity {
|
||||
super.onCreate(icicle);
|
||||
getActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
setContentView(R.layout.power_consumer_picker_activity_layout);
|
||||
setContentView(R.layout.battery_consumer_picker_activity_layout);
|
||||
|
||||
ViewPager viewPager = findViewById(R.id.pager);
|
||||
|
||||
@@ -75,12 +75,12 @@ public class PowerConsumerPickerActivity extends FragmentActivity {
|
||||
public Fragment getItem(int position) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
return new PowerConsumerPickerFragment(
|
||||
PowerConsumerPickerFragment.PICKER_TYPE_APP);
|
||||
return new BatteryConsumerPickerFragment(
|
||||
BatteryConsumerPickerFragment.PICKER_TYPE_APP);
|
||||
case 1:
|
||||
default:
|
||||
return new PowerConsumerPickerFragment(
|
||||
PowerConsumerPickerFragment.PICKER_TYPE_DRAIN);
|
||||
return new BatteryConsumerPickerFragment(
|
||||
BatteryConsumerPickerFragment.PICKER_TYPE_DRAIN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,9 +101,9 @@ public class PowerConsumerPickerActivity extends FragmentActivity {
|
||||
tabLayout.setupWithViewPager(viewPager);
|
||||
}
|
||||
|
||||
public void setSelectedPowerConsumer(String id) {
|
||||
public void setSelectedBatteryConsumer(String batteryConsumerId) {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(Intent.EXTRA_RETURN_RESULT, id);
|
||||
intent.putExtra(Intent.EXTRA_RETURN_RESULT, batteryConsumerId);
|
||||
setResult(RESULT_OK, intent);
|
||||
finish();
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsviewer;
|
||||
package com.android.frameworks.core.batterystatsviewer;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -36,7 +36,7 @@ import androidx.loader.content.Loader;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.frameworks.core.powerstatsviewer.PowerConsumerInfoHelper.PowerConsumerInfo;
|
||||
import com.android.frameworks.core.batterystatsviewer.BatteryConsumerInfoHelper.BatteryConsumerInfo;
|
||||
import com.android.internal.os.BatterySipper;
|
||||
import com.android.internal.os.BatteryStatsHelper;
|
||||
import com.android.settingslib.utils.AsyncLoaderCompat;
|
||||
@@ -50,7 +50,7 @@ import java.util.Locale;
|
||||
* Picker, showing a sorted lists of applications or other types of entities consuming power.
|
||||
* Returns the selected entity ID or null.
|
||||
*/
|
||||
public class PowerConsumerPickerFragment extends Fragment {
|
||||
public class BatteryConsumerPickerFragment extends Fragment {
|
||||
private static final String TAG = "AppPicker";
|
||||
|
||||
public static final String PICKER_TYPE = "pickertype";
|
||||
@@ -58,53 +58,53 @@ public class PowerConsumerPickerFragment extends Fragment {
|
||||
public static final int PICKER_TYPE_APP = 0;
|
||||
public static final int PICKER_TYPE_DRAIN = 1;
|
||||
|
||||
private PowerConsumerListAdapter mPowerConsumerListAdapter;
|
||||
private BatteryConsumerListAdapter mBatteryConsumerListAdapter;
|
||||
private RecyclerView mAppList;
|
||||
private View mLoadingView;
|
||||
|
||||
private interface OnPowerConsumerSelectedListener {
|
||||
void onPowerConsumerSelected(String uid);
|
||||
private interface OnBatteryConsumerSelectedListener {
|
||||
void onBatteryConsumerSelected(String batteryConsumerId);
|
||||
}
|
||||
|
||||
public PowerConsumerPickerFragment(int pickerType) {
|
||||
public BatteryConsumerPickerFragment(int pickerType) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(PICKER_TYPE, pickerType);
|
||||
setArguments(args);
|
||||
}
|
||||
|
||||
public PowerConsumerPickerFragment() {
|
||||
public BatteryConsumerPickerFragment() {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.power_consumer_picker_layout, container, false);
|
||||
View view = inflater.inflate(R.layout.battery_consumer_picker_layout, container, false);
|
||||
mLoadingView = view.findViewById(R.id.loading_view);
|
||||
|
||||
mAppList = view.findViewById(R.id.list_view);
|
||||
mAppList.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mPowerConsumerListAdapter = new PowerConsumerListAdapter(
|
||||
PowerConsumerPickerFragment.this::setSelectedPowerConsumer);
|
||||
mAppList.setAdapter(mPowerConsumerListAdapter);
|
||||
mBatteryConsumerListAdapter = new BatteryConsumerListAdapter(
|
||||
BatteryConsumerPickerFragment.this::setSelectedBatteryConsumer);
|
||||
mAppList.setAdapter(mBatteryConsumerListAdapter);
|
||||
|
||||
LoaderManager.getInstance(this).initLoader(0, getArguments(),
|
||||
new PowerConsumerListLoaderCallbacks());
|
||||
new BatteryConsumerListLoaderCallbacks());
|
||||
return view;
|
||||
}
|
||||
|
||||
public void setSelectedPowerConsumer(String id) {
|
||||
((PowerConsumerPickerActivity) getActivity()).setSelectedPowerConsumer(id);
|
||||
public void setSelectedBatteryConsumer(String id) {
|
||||
((BatteryConsumerPickerActivity) getActivity()).setSelectedBatteryConsumer(id);
|
||||
}
|
||||
|
||||
private static class PowerConsumerListLoader extends
|
||||
AsyncLoaderCompat<List<PowerConsumerInfo>> {
|
||||
private static class BatteryConsumerListLoader extends
|
||||
AsyncLoaderCompat<List<BatteryConsumerInfo>> {
|
||||
private final BatteryStatsHelper mStatsHelper;
|
||||
private final int mPickerType;
|
||||
private final UserManager mUserManager;
|
||||
private final PackageManager mPackageManager;
|
||||
|
||||
PowerConsumerListLoader(Context context, int pickerType) {
|
||||
BatteryConsumerListLoader(Context context, int pickerType) {
|
||||
super(context);
|
||||
mUserManager = context.getSystemService(UserManager.class);
|
||||
mStatsHelper = new BatteryStatsHelper(context, false /* collectBatteryBroadcast */);
|
||||
@@ -115,8 +115,8 @@ public class PowerConsumerPickerFragment extends Fragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PowerConsumerInfo> loadInBackground() {
|
||||
List<PowerConsumerInfoHelper.PowerConsumerInfo> powerConsumerList = new ArrayList<>();
|
||||
public List<BatteryConsumerInfo> loadInBackground() {
|
||||
List<BatteryConsumerInfo> batteryConsumerList = new ArrayList<>();
|
||||
|
||||
mStatsHelper.refreshStats(BatteryStats.STATS_SINCE_CHARGED, UserHandle.myUserId());
|
||||
|
||||
@@ -135,74 +135,75 @@ public class PowerConsumerPickerFragment extends Fragment {
|
||||
}
|
||||
}
|
||||
|
||||
powerConsumerList.add(
|
||||
PowerConsumerInfoHelper.makePowerConsumerInfo(mPackageManager, sipper));
|
||||
batteryConsumerList.add(
|
||||
BatteryConsumerInfoHelper.makeBatteryConsumerInfo(mPackageManager, sipper));
|
||||
}
|
||||
|
||||
powerConsumerList.sort(
|
||||
Comparator.comparing((PowerConsumerInfo a) -> a.powerMah).reversed());
|
||||
return powerConsumerList;
|
||||
batteryConsumerList.sort(
|
||||
Comparator.comparing((BatteryConsumerInfo a) -> a.powerMah).reversed());
|
||||
return batteryConsumerList;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDiscardResult(List<PowerConsumerInfo> result) {
|
||||
protected void onDiscardResult(List<BatteryConsumerInfo> result) {
|
||||
}
|
||||
}
|
||||
|
||||
private class PowerConsumerListLoaderCallbacks implements
|
||||
LoaderManager.LoaderCallbacks<List<PowerConsumerInfo>> {
|
||||
private class BatteryConsumerListLoaderCallbacks implements
|
||||
LoaderManager.LoaderCallbacks<List<BatteryConsumerInfo>> {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Loader<List<PowerConsumerInfo>> onCreateLoader(int id, Bundle args) {
|
||||
return new PowerConsumerListLoader(getContext(), args.getInt(PICKER_TYPE));
|
||||
public Loader<List<BatteryConsumerInfo>> onCreateLoader(int id, Bundle args) {
|
||||
return new BatteryConsumerListLoader(getContext(), args.getInt(PICKER_TYPE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(@NonNull Loader<List<PowerConsumerInfo>> loader,
|
||||
List<PowerConsumerInfoHelper.PowerConsumerInfo> powerConsumerList) {
|
||||
mPowerConsumerListAdapter.setPowerConsumerList(powerConsumerList);
|
||||
public void onLoadFinished(@NonNull Loader<List<BatteryConsumerInfo>> loader,
|
||||
List<BatteryConsumerInfo> batteryConsumerList) {
|
||||
mBatteryConsumerListAdapter.setBatteryConsumerList(batteryConsumerList);
|
||||
mAppList.setVisibility(View.VISIBLE);
|
||||
mLoadingView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(
|
||||
@NonNull Loader<List<PowerConsumerInfoHelper.PowerConsumerInfo>> loader) {
|
||||
@NonNull Loader<List<BatteryConsumerInfo>> loader) {
|
||||
}
|
||||
}
|
||||
|
||||
public class PowerConsumerListAdapter extends RecyclerView.Adapter<PowerConsumerViewHolder> {
|
||||
private final OnPowerConsumerSelectedListener mListener;
|
||||
private List<PowerConsumerInfo> mPowerConsumerList;
|
||||
public class BatteryConsumerListAdapter extends
|
||||
RecyclerView.Adapter<BatteryConsumerViewHolder> {
|
||||
private final OnBatteryConsumerSelectedListener mListener;
|
||||
private List<BatteryConsumerInfo> mBatteryConsumerList;
|
||||
|
||||
public PowerConsumerListAdapter(OnPowerConsumerSelectedListener listener) {
|
||||
public BatteryConsumerListAdapter(OnBatteryConsumerSelectedListener listener) {
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
void setPowerConsumerList(List<PowerConsumerInfo> powerConsumerList) {
|
||||
mPowerConsumerList = powerConsumerList;
|
||||
void setBatteryConsumerList(List<BatteryConsumerInfo> batteryConsumerList) {
|
||||
mBatteryConsumerList = batteryConsumerList;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mPowerConsumerList.size();
|
||||
return mBatteryConsumerList.size();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public PowerConsumerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup,
|
||||
public BatteryConsumerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup,
|
||||
int position) {
|
||||
LayoutInflater layoutInflater = LayoutInflater.from(viewGroup.getContext());
|
||||
View view = layoutInflater.inflate(R.layout.power_consumer_info_layout, viewGroup,
|
||||
View view = layoutInflater.inflate(R.layout.battery_consumer_info_layout, viewGroup,
|
||||
false);
|
||||
return new PowerConsumerViewHolder(view, mListener);
|
||||
return new BatteryConsumerViewHolder(view, mListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull PowerConsumerViewHolder viewHolder, int position) {
|
||||
PowerConsumerInfoHelper.PowerConsumerInfo item = mPowerConsumerList.get(position);
|
||||
public void onBindViewHolder(@NonNull BatteryConsumerViewHolder viewHolder, int position) {
|
||||
BatteryConsumerInfo item = mBatteryConsumerList.get(position);
|
||||
viewHolder.id = item.id;
|
||||
viewHolder.titleView.setText(item.label);
|
||||
if (item.details != null) {
|
||||
@@ -225,9 +226,9 @@ public class PowerConsumerPickerFragment extends Fragment {
|
||||
}
|
||||
|
||||
// View Holder used when displaying apps
|
||||
public static class PowerConsumerViewHolder extends RecyclerView.ViewHolder
|
||||
public static class BatteryConsumerViewHolder extends RecyclerView.ViewHolder
|
||||
implements View.OnClickListener {
|
||||
private final OnPowerConsumerSelectedListener mListener;
|
||||
private final OnBatteryConsumerSelectedListener mListener;
|
||||
|
||||
public String id;
|
||||
public TextView titleView;
|
||||
@@ -236,7 +237,7 @@ public class PowerConsumerPickerFragment extends Fragment {
|
||||
public TextView packagesView;
|
||||
public TextView powerView;
|
||||
|
||||
PowerConsumerViewHolder(View view, OnPowerConsumerSelectedListener listener) {
|
||||
BatteryConsumerViewHolder(View view, OnBatteryConsumerSelectedListener listener) {
|
||||
super(view);
|
||||
mListener = listener;
|
||||
view.setOnClickListener(this);
|
||||
@@ -250,7 +251,7 @@ public class PowerConsumerPickerFragment extends Fragment {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mListener.onPowerConsumerSelected(id);
|
||||
mListener.onBatteryConsumerSelected(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.frameworks.core.powerstatsviewer;
|
||||
package com.android.frameworks.core.batterystatsviewer;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
@@ -47,25 +47,25 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
private static final int POWER_STATS_REFRESH_RATE_MILLIS = 60 * 1000;
|
||||
public static final String PREF_SELECTED_POWER_CONSUMER = "powerConsumerId";
|
||||
public class BatteryStatsViewerActivity extends ComponentActivity {
|
||||
private static final int BATTERY_STATS_REFRESH_RATE_MILLIS = 60 * 1000;
|
||||
public static final String PREF_SELECTED_BATTERY_CONSUMER = "batteryConsumerId";
|
||||
public static final int LOADER_BATTERY_STATS_HELPER = 0;
|
||||
public static final int LOADER_BATTERY_USAGE_STATS = 1;
|
||||
|
||||
private PowerStatsDataAdapter mPowerStatsDataAdapter;
|
||||
private Runnable mPowerStatsRefresh = this::periodicPowerStatsRefresh;
|
||||
private BatteryStatsDataAdapter mBatteryStatsDataAdapter;
|
||||
private Runnable mBatteryStatsRefresh = this::periodicBatteryStatsRefresh;
|
||||
private SharedPreferences mSharedPref;
|
||||
private String mPowerConsumerId;
|
||||
private String mBatteryConsumerId;
|
||||
private TextView mTitleView;
|
||||
private TextView mDetailsView;
|
||||
private ImageView mIconView;
|
||||
private TextView mPackagesView;
|
||||
private RecyclerView mPowerStatsDataView;
|
||||
private RecyclerView mBatteryConsumerDataView;
|
||||
private View mLoadingView;
|
||||
private View mEmptyView;
|
||||
private ActivityResultLauncher<Void> mStartAppPicker = registerForActivityResult(
|
||||
PowerConsumerPickerActivity.CONTRACT, this::onApplicationSelected);
|
||||
BatteryConsumerPickerActivity.CONTRACT, this::onApplicationSelected);
|
||||
private BatteryStatsHelper mBatteryStatsHelper;
|
||||
private BatteryUsageStats mBatteryUsageStats;
|
||||
|
||||
@@ -75,7 +75,7 @@ public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
|
||||
mSharedPref = getPreferences(Context.MODE_PRIVATE);
|
||||
|
||||
setContentView(R.layout.power_stats_viewer_layout);
|
||||
setContentView(R.layout.battery_stats_viewer_layout);
|
||||
|
||||
View appCard = findViewById(R.id.app_card);
|
||||
appCard.setOnClickListener((e) -> startAppPicker());
|
||||
@@ -85,17 +85,17 @@ public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
mIconView = findViewById(android.R.id.icon);
|
||||
mPackagesView = findViewById(R.id.packages);
|
||||
|
||||
mPowerStatsDataView = findViewById(R.id.power_stats_data_view);
|
||||
mPowerStatsDataView.setLayoutManager(new LinearLayoutManager(this));
|
||||
mPowerStatsDataAdapter = new PowerStatsDataAdapter();
|
||||
mPowerStatsDataView.setAdapter(mPowerStatsDataAdapter);
|
||||
mBatteryConsumerDataView = findViewById(R.id.battery_consumer_data_view);
|
||||
mBatteryConsumerDataView.setLayoutManager(new LinearLayoutManager(this));
|
||||
mBatteryStatsDataAdapter = new BatteryStatsDataAdapter();
|
||||
mBatteryConsumerDataView.setAdapter(mBatteryStatsDataAdapter);
|
||||
|
||||
mLoadingView = findViewById(R.id.loading_view);
|
||||
mEmptyView = findViewById(R.id.empty_view);
|
||||
|
||||
mPowerConsumerId = mSharedPref.getString(PREF_SELECTED_POWER_CONSUMER, null);
|
||||
loadPowerStats();
|
||||
if (mPowerConsumerId == null) {
|
||||
mBatteryConsumerId = mSharedPref.getString(PREF_SELECTED_BATTERY_CONSUMER, null);
|
||||
loadBatteryStats();
|
||||
if (mBatteryConsumerId == null) {
|
||||
startAppPicker();
|
||||
}
|
||||
}
|
||||
@@ -103,38 +103,40 @@ public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
periodicPowerStatsRefresh();
|
||||
periodicBatteryStatsRefresh();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
getMainThreadHandler().removeCallbacks(mPowerStatsRefresh);
|
||||
getMainThreadHandler().removeCallbacks(mBatteryStatsRefresh);
|
||||
}
|
||||
|
||||
private void startAppPicker() {
|
||||
mStartAppPicker.launch(null);
|
||||
}
|
||||
|
||||
private void onApplicationSelected(String powerConsumerId) {
|
||||
if (powerConsumerId == null) {
|
||||
if (mPowerConsumerId == null) {
|
||||
private void onApplicationSelected(String batteryConsumerId) {
|
||||
if (batteryConsumerId == null) {
|
||||
if (mBatteryConsumerId == null) {
|
||||
finish();
|
||||
}
|
||||
} else {
|
||||
mPowerConsumerId = powerConsumerId;
|
||||
mSharedPref.edit().putString(PREF_SELECTED_POWER_CONSUMER, mPowerConsumerId).apply();
|
||||
mBatteryConsumerId = batteryConsumerId;
|
||||
mSharedPref.edit()
|
||||
.putString(PREF_SELECTED_BATTERY_CONSUMER, mBatteryConsumerId)
|
||||
.apply();
|
||||
mLoadingView.setVisibility(View.VISIBLE);
|
||||
loadPowerStats();
|
||||
loadBatteryStats();
|
||||
}
|
||||
}
|
||||
|
||||
private void periodicPowerStatsRefresh() {
|
||||
loadPowerStats();
|
||||
getMainThreadHandler().postDelayed(mPowerStatsRefresh, POWER_STATS_REFRESH_RATE_MILLIS);
|
||||
private void periodicBatteryStatsRefresh() {
|
||||
loadBatteryStats();
|
||||
getMainThreadHandler().postDelayed(mBatteryStatsRefresh, BATTERY_STATS_REFRESH_RATE_MILLIS);
|
||||
}
|
||||
|
||||
private void loadPowerStats() {
|
||||
private void loadBatteryStats() {
|
||||
LoaderManager loaderManager = LoaderManager.getInstance(this);
|
||||
loaderManager.restartLoader(LOADER_BATTERY_STATS_HELPER, null,
|
||||
new BatteryStatsHelperLoaderCallbacks());
|
||||
@@ -171,7 +173,7 @@ public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
@NonNull
|
||||
@Override
|
||||
public Loader<BatteryStatsHelper> onCreateLoader(int id, Bundle args) {
|
||||
return new BatteryStatsHelperLoader(PowerStatsViewerActivity.this);
|
||||
return new BatteryStatsHelperLoader(BatteryStatsViewerActivity.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -207,7 +209,7 @@ public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
@NonNull
|
||||
@Override
|
||||
public Loader<BatteryUsageStats> onCreateLoader(int id, Bundle args) {
|
||||
return new BatteryUsageStatsLoader(PowerStatsViewerActivity.this);
|
||||
return new BatteryUsageStatsLoader(BatteryStatsViewerActivity.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -223,60 +225,60 @@ public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
|
||||
public void onBatteryStatsHelperLoaded(BatteryStatsHelper batteryStatsHelper) {
|
||||
mBatteryStatsHelper = batteryStatsHelper;
|
||||
onPowerStatsDataLoaded();
|
||||
onBatteryStatsDataLoaded();
|
||||
}
|
||||
|
||||
private void onBatteryUsageStatsLoaded(BatteryUsageStats batteryUsageStats) {
|
||||
mBatteryUsageStats = batteryUsageStats;
|
||||
onPowerStatsDataLoaded();
|
||||
onBatteryStatsDataLoaded();
|
||||
}
|
||||
|
||||
public void onPowerStatsDataLoaded() {
|
||||
public void onBatteryStatsDataLoaded() {
|
||||
if (mBatteryStatsHelper == null || mBatteryUsageStats == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
PowerStatsData powerStatsData = new PowerStatsData(this, mBatteryStatsHelper,
|
||||
mBatteryUsageStats, mPowerConsumerId);
|
||||
BatteryConsumerData batteryConsumerData = new BatteryConsumerData(this, mBatteryStatsHelper,
|
||||
mBatteryUsageStats, mBatteryConsumerId);
|
||||
|
||||
PowerConsumerInfoHelper.PowerConsumerInfo
|
||||
powerConsumerInfo = powerStatsData.getPowerConsumerInfo();
|
||||
if (powerConsumerInfo == null) {
|
||||
mTitleView.setText("Power consumer not found");
|
||||
BatteryConsumerInfoHelper.BatteryConsumerInfo
|
||||
batteryConsumerInfo = batteryConsumerData.getBatteryConsumerInfo();
|
||||
if (batteryConsumerInfo == null) {
|
||||
mTitleView.setText("Battery consumer not found");
|
||||
mPackagesView.setVisibility(View.GONE);
|
||||
} else {
|
||||
mTitleView.setText(powerConsumerInfo.label);
|
||||
if (powerConsumerInfo.details != null) {
|
||||
mDetailsView.setText(powerConsumerInfo.details);
|
||||
mTitleView.setText(batteryConsumerInfo.label);
|
||||
if (batteryConsumerInfo.details != null) {
|
||||
mDetailsView.setText(batteryConsumerInfo.details);
|
||||
mDetailsView.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mDetailsView.setVisibility(View.GONE);
|
||||
}
|
||||
mIconView.setImageDrawable(
|
||||
powerConsumerInfo.iconInfo.loadIcon(getPackageManager()));
|
||||
batteryConsumerInfo.iconInfo.loadIcon(getPackageManager()));
|
||||
|
||||
if (powerConsumerInfo.packages != null) {
|
||||
mPackagesView.setText(powerConsumerInfo.packages);
|
||||
if (batteryConsumerInfo.packages != null) {
|
||||
mPackagesView.setText(batteryConsumerInfo.packages);
|
||||
mPackagesView.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mPackagesView.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
mPowerStatsDataAdapter.setEntries(powerStatsData.getEntries());
|
||||
if (powerStatsData.getEntries().isEmpty()) {
|
||||
mBatteryStatsDataAdapter.setEntries(batteryConsumerData.getEntries());
|
||||
if (batteryConsumerData.getEntries().isEmpty()) {
|
||||
mEmptyView.setVisibility(View.VISIBLE);
|
||||
mPowerStatsDataView.setVisibility(View.GONE);
|
||||
mBatteryConsumerDataView.setVisibility(View.GONE);
|
||||
} else {
|
||||
mEmptyView.setVisibility(View.GONE);
|
||||
mPowerStatsDataView.setVisibility(View.VISIBLE);
|
||||
mBatteryConsumerDataView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
mLoadingView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private static class PowerStatsDataAdapter extends
|
||||
RecyclerView.Adapter<PowerStatsDataAdapter.ViewHolder> {
|
||||
private static class BatteryStatsDataAdapter extends
|
||||
RecyclerView.Adapter<BatteryStatsDataAdapter.ViewHolder> {
|
||||
public static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
public TextView titleTextView;
|
||||
public TextView amountTextView;
|
||||
@@ -291,9 +293,9 @@ public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
}
|
||||
}
|
||||
|
||||
private List<PowerStatsData.Entry> mEntries = Collections.emptyList();
|
||||
private List<BatteryConsumerData.Entry> mEntries = Collections.emptyList();
|
||||
|
||||
public void setEntries(List<PowerStatsData.Entry> entries) {
|
||||
public void setEntries(List<BatteryConsumerData.Entry> entries) {
|
||||
mEntries = entries;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
@@ -307,14 +309,14 @@ public class PowerStatsViewerActivity extends ComponentActivity {
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) {
|
||||
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
|
||||
View itemView = layoutInflater.inflate(R.layout.power_stats_entry_layout, parent,
|
||||
View itemView = layoutInflater.inflate(R.layout.battery_consumer_entry_layout, parent,
|
||||
false);
|
||||
return new ViewHolder(itemView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
|
||||
PowerStatsData.Entry entry = mEntries.get(position);
|
||||
BatteryConsumerData.Entry entry = mEntries.get(position);
|
||||
switch (entry.entryType) {
|
||||
case POWER:
|
||||
viewHolder.titleTextView.setText(entry.title);
|
||||
Reference in New Issue
Block a user