Simplify navigation in BatteryStatsViewer
Bug: 185952656 Test: mp :BatteryStatsViewer && adb shell am start -n com.android.frameworks.core.batterystatsviewer/.BatteryConsumerPickerActivity Change-Id: I5c8958411c2436a0d1e8fafb79759b9e40d81b18
This commit is contained in:
@@ -25,8 +25,7 @@
|
||||
<application
|
||||
android:theme="@style/Theme"
|
||||
android:label="Battery Stats Viewer">
|
||||
<activity android:name=".BatteryStatsViewerActivity"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
<activity android:name=".BatteryConsumerPickerActivity"
|
||||
android:label="Battery Stats"
|
||||
android:launchMode="singleTop"
|
||||
android:exported="true">
|
||||
@@ -36,7 +35,9 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".BatteryConsumerPickerActivity"
|
||||
android:label="Select a battery consumer"/>
|
||||
<activity android:name=".BatteryStatsViewerActivity"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="Battery Stats"
|
||||
android:parentActivityName=".BatteryConsumerPickerActivity"/>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
@@ -20,9 +20,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.activity.result.contract.ActivityResultContract;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
@@ -32,31 +30,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.
|
||||
* Opens BatteryStatsViewerActivity upon item selection.
|
||||
*/
|
||||
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, BatteryConsumerPickerActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseResult(int resultCode, @Nullable Intent intent) {
|
||||
if (resultCode != RESULT_OK || intent == null) {
|
||||
return null;
|
||||
}
|
||||
return intent.getStringExtra(Intent.EXTRA_RETURN_RESULT);
|
||||
}
|
||||
};
|
||||
private static final String PREF_SELECTED_BATTERY_CONSUMER = "batteryConsumerId";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
getActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
setContentView(R.layout.battery_consumer_picker_activity_layout);
|
||||
|
||||
@@ -99,18 +80,25 @@ public class BatteryConsumerPickerActivity extends FragmentActivity {
|
||||
viewPager.setAdapter(adapter);
|
||||
TabLayout tabLayout = findViewById(R.id.tab_layout);
|
||||
tabLayout.setupWithViewPager(viewPager);
|
||||
if (icicle == null) {
|
||||
final String batteryConsumerId = getPreferences(Context.MODE_PRIVATE)
|
||||
.getString(PREF_SELECTED_BATTERY_CONSUMER, null);
|
||||
if (batteryConsumerId != null) {
|
||||
startBatteryStatsActivity(batteryConsumerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setSelectedBatteryConsumer(String batteryConsumerId) {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(Intent.EXTRA_RETURN_RESULT, batteryConsumerId);
|
||||
setResult(RESULT_OK, intent);
|
||||
finish();
|
||||
getPreferences(Context.MODE_PRIVATE).edit()
|
||||
.putString(PREF_SELECTED_BATTERY_CONSUMER, batteryConsumerId)
|
||||
.apply();
|
||||
startBatteryStatsActivity(batteryConsumerId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onNavigateUp() {
|
||||
onBackPressed();
|
||||
return true;
|
||||
private void startBatteryStatsActivity(String batteryConsumerId) {
|
||||
final Intent intent = new Intent(this, BatteryStatsViewerActivity.class)
|
||||
.putExtra(BatteryStatsViewerActivity.EXTRA_BATTERY_CONSUMER, batteryConsumerId);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.frameworks.core.batterystatsviewer;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.BatteryStatsManager;
|
||||
import android.os.BatteryUsageStats;
|
||||
import android.os.BatteryUsageStatsQuery;
|
||||
@@ -27,9 +26,9 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.activity.ComponentActivity;
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
@@ -45,14 +44,14 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class BatteryStatsViewerActivity extends ComponentActivity {
|
||||
public static final String EXTRA_BATTERY_CONSUMER = "batteryConsumerId";
|
||||
|
||||
private static final int BATTERY_STATS_REFRESH_RATE_MILLIS = 60 * 1000;
|
||||
private static final int MILLIS_IN_MINUTE = 60000;
|
||||
private static final String PREF_SELECTED_BATTERY_CONSUMER = "batteryConsumerId";
|
||||
private static final int LOADER_BATTERY_USAGE_STATS = 1;
|
||||
|
||||
private BatteryStatsDataAdapter mBatteryStatsDataAdapter;
|
||||
private final Runnable mBatteryStatsRefresh = this::periodicBatteryStatsRefresh;
|
||||
private SharedPreferences mSharedPref;
|
||||
private String mBatteryConsumerId;
|
||||
private TextView mTitleView;
|
||||
private TextView mDetailsView;
|
||||
@@ -62,21 +61,16 @@ public class BatteryStatsViewerActivity extends ComponentActivity {
|
||||
private RecyclerView mBatteryConsumerDataView;
|
||||
private View mLoadingView;
|
||||
private View mEmptyView;
|
||||
private final ActivityResultLauncher<Void> mStartAppPicker = registerForActivityResult(
|
||||
BatteryConsumerPickerActivity.CONTRACT, this::onApplicationSelected);
|
||||
private List<BatteryUsageStats> mBatteryUsageStats;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mSharedPref = getPreferences(Context.MODE_PRIVATE);
|
||||
mBatteryConsumerId = getIntent().getStringExtra(EXTRA_BATTERY_CONSUMER);
|
||||
|
||||
setContentView(R.layout.battery_stats_viewer_layout);
|
||||
|
||||
View appCard = findViewById(R.id.app_card);
|
||||
appCard.setOnClickListener((e) -> startAppPicker());
|
||||
|
||||
mTitleView = findViewById(android.R.id.title);
|
||||
mDetailsView = findViewById(R.id.details);
|
||||
mIconView = findViewById(android.R.id.icon);
|
||||
@@ -91,11 +85,7 @@ public class BatteryStatsViewerActivity extends ComponentActivity {
|
||||
mLoadingView = findViewById(R.id.loading_view);
|
||||
mEmptyView = findViewById(R.id.empty_view);
|
||||
|
||||
mBatteryConsumerId = mSharedPref.getString(PREF_SELECTED_BATTERY_CONSUMER, null);
|
||||
loadBatteryStats();
|
||||
if (mBatteryConsumerId == null) {
|
||||
startAppPicker();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -110,25 +100,6 @@ public class BatteryStatsViewerActivity extends ComponentActivity {
|
||||
getMainThreadHandler().removeCallbacks(mBatteryStatsRefresh);
|
||||
}
|
||||
|
||||
private void startAppPicker() {
|
||||
mStartAppPicker.launch(null);
|
||||
}
|
||||
|
||||
private void onApplicationSelected(String batteryConsumerId) {
|
||||
if (batteryConsumerId == null) {
|
||||
if (mBatteryConsumerId == null) {
|
||||
finish();
|
||||
}
|
||||
} else {
|
||||
mBatteryConsumerId = batteryConsumerId;
|
||||
mSharedPref.edit()
|
||||
.putString(PREF_SELECTED_BATTERY_CONSUMER, mBatteryConsumerId)
|
||||
.apply();
|
||||
mLoadingView.setVisibility(View.VISIBLE);
|
||||
loadBatteryStats();
|
||||
}
|
||||
}
|
||||
|
||||
private void periodicBatteryStatsRefresh() {
|
||||
loadBatteryStats();
|
||||
getMainThreadHandler().postDelayed(mBatteryStatsRefresh, BATTERY_STATS_REFRESH_RATE_MILLIS);
|
||||
@@ -200,9 +171,10 @@ public class BatteryStatsViewerActivity extends ComponentActivity {
|
||||
BatteryConsumerInfoHelper.BatteryConsumerInfo
|
||||
batteryConsumerInfo = batteryConsumerData.getBatteryConsumerInfo();
|
||||
if (batteryConsumerInfo == null) {
|
||||
mTitleView.setText("Battery consumer not found");
|
||||
mPackagesView.setVisibility(View.GONE);
|
||||
mHeadingsView.setVisibility(View.GONE);
|
||||
Toast.makeText(this, "Battery consumer not found: " + mBatteryConsumerId,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
finish();
|
||||
return;
|
||||
} else {
|
||||
mTitleView.setText(batteryConsumerInfo.label);
|
||||
if (batteryConsumerInfo.details != null) {
|
||||
|
||||
Reference in New Issue
Block a user