diff --git a/parts/src/org/lineageos/settings/thermal/ThermalActivity.java b/parts/src/org/lineageos/settings/thermal/ThermalActivity.java index c583a20..e127c35 100644 --- a/parts/src/org/lineageos/settings/thermal/ThermalActivity.java +++ b/parts/src/org/lineageos/settings/thermal/ThermalActivity.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 The LineageOS Project + * Copyright (C) 2020 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,17 +17,29 @@ package org.lineageos.settings.thermal; import android.os.Bundle; +import android.view.MenuItem; import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseActivity; public class ThermalActivity extends CollapsingToolbarBaseActivity { + private static final String TAG_THERMAL = "thermal"; + private static final String THERMAL_SCONFIG = "/sys/class/thermal/thermal_message/sconfig"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - getFragmentManager().beginTransaction().replace(com.android.settingslib.collapsingtoolbar.R.id.content_frame, + getFragmentManager().beginTransaction().replace(com.android.settingslib.collapsingtoolbar.R.id.content_frame, new ThermalSettingsFragment(), TAG_THERMAL).commit(); } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == android.R.id.home) { + onBackPressed(); + return true; + } + return false; + } } diff --git a/parts/src/org/lineageos/settings/thermal/ThermalService.java b/parts/src/org/lineageos/settings/thermal/ThermalService.java index 5ec4610..cba9044 100644 --- a/parts/src/org/lineageos/settings/thermal/ThermalService.java +++ b/parts/src/org/lineageos/settings/thermal/ThermalService.java @@ -18,8 +18,11 @@ package org.lineageos.settings.thermal; import android.app.ActivityManager; import android.app.ActivityTaskManager; +import android.app.ActivityTaskManager.RootTaskInfo; +import android.app.IActivityTaskManager; import android.app.TaskStackListener; import android.app.Service; +import android.app.TaskStackListener; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; @@ -37,6 +40,8 @@ public class ThermalService extends Service { private String mPreviousApp; private ThermalUtils mThermalUtils; + private IActivityTaskManager mActivityTaskManager; + private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -49,7 +54,8 @@ public class ThermalService extends Service { public void onCreate() { if (DEBUG) Log.d(TAG, "Creating service"); try { - ActivityTaskManager.getService().registerTaskStackListener(mTaskListener); + mActivityTaskManager = ActivityTaskManager.getService(); + mActivityTaskManager.registerTaskStackListener(mTaskListener); } catch (RemoteException e) { // Do nothing } @@ -80,15 +86,15 @@ public class ThermalService extends Service { @Override public void onTaskStackChanged() { try { - final ActivityTaskManager.RootTaskInfo focusedTask = - ActivityTaskManager.getService().getFocusedRootTaskInfo(); - if (focusedTask != null && focusedTask.topActivity != null) { - ComponentName taskComponentName = focusedTask.topActivity; - String foregroundApp = taskComponentName.getPackageName(); - if (!foregroundApp.equals(mPreviousApp)) { - mThermalUtils.setThermalProfile(foregroundApp); - mPreviousApp = foregroundApp; - } + final RootTaskInfo info = mActivityTaskManager.getFocusedRootTaskInfo(); + if (info == null || info.topActivity == null) { + return; + } + + String foregroundApp = info.topActivity.getPackageName(); + if (!foregroundApp.equals(mPreviousApp)) { + mThermalUtils.setThermalProfile(foregroundApp); + mPreviousApp = foregroundApp; } } catch (Exception e) {} } diff --git a/parts/src/org/lineageos/settings/thermal/ThermalSettingsFragment.java b/parts/src/org/lineageos/settings/thermal/ThermalSettingsFragment.java index 8123f05..d30d984 100644 --- a/parts/src/org/lineageos/settings/thermal/ThermalSettingsFragment.java +++ b/parts/src/org/lineageos/settings/thermal/ThermalSettingsFragment.java @@ -1,12 +1,12 @@ /** * Copyright (C) 2020 The LineageOS 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 - * + *
+ * 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.
@@ -83,7 +83,7 @@ public class ThermalSettingsFragment extends PreferenceFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
+ Bundle savedInstanceState) {
return inflater.inflate(R.layout.thermal_layout, container, false);
}
@@ -100,6 +100,7 @@ public class ThermalSettingsFragment extends PreferenceFragment
@Override
public void onResume() {
super.onResume();
+ getActivity().setTitle(getResources().getString(R.string.thermal_title));
rebuild();
}
@@ -274,6 +275,7 @@ public class ThermalSettingsFragment extends PreferenceFragment
view.setText(items[position]);
view.setTextSize(14f);
+
return view;
}
}
@@ -302,20 +304,22 @@ public class ThermalSettingsFragment extends PreferenceFragment
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ViewHolder(LayoutInflater.from(parent.getContext())
+ ViewHolder holder = new ViewHolder(LayoutInflater.from(parent.getContext())
.inflate(R.layout.thermal_list_item, parent, false));
+ Context context = holder.itemView.getContext();
+ holder.mode.setAdapter(new ModeAdapter(context));
+ holder.mode.setOnItemSelectedListener(this);
+ return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
- Context context = holder.itemView.getContext();
ApplicationsState.AppEntry entry = mEntries.get(position);
+
if (entry == null) {
return;
}
- holder.mode.setAdapter(new ModeAdapter(context));
- holder.mode.setOnItemSelectedListener(this);
holder.title.setText(entry.label);
holder.title.setOnClickListener(v -> holder.mode.performClick());
mApplicationsState.ensureIcon(entry);
@@ -327,7 +331,7 @@ public class ThermalSettingsFragment extends PreferenceFragment
}
private void setEntries(List