Merge "Rename powerstatstests to batterystatstests"

This commit is contained in:
TreeHugger Robot
2020-12-11 23:49:51 +00:00
committed by Android (Google) Code Review
21 changed files with 158 additions and 155 deletions

View File

@@ -1,5 +1,5 @@
android_test {
name: "PowerStatsLoadTests",
name: "BatteryStatsLoadTests",
srcs: ["src/**/*.java"],
static_libs: [
"androidx.test.rules",

View File

@@ -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>

View File

@@ -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;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.frameworks.core.powerstatsloadtests;
package com.android.frameworks.core.batterystatsloadtests;
import android.os.Process;

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.frameworks.core.powerstatsloadtests;
package com.android.frameworks.core.batterystatsloadtests;
import android.util.Log;

View File

@@ -1,5 +1,5 @@
android_test {
name: "PowerStatsViewer",
name: "BatteryStatsViewer",
srcs: ["src/**/*.java"],
defaults: ["SettingsLibDefaults"],
static_libs: [

View File

@@ -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>

View File

@@ -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

View File

@@ -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()) + "|"

View File

@@ -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) {

View File

@@ -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();
}

View File

@@ -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);
}
}
}

View File

@@ -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);