Initial unified commit for Android 14, with "light" GSI target
This commit is contained in:
@@ -0,0 +1,363 @@
|
||||
From 5310d801b343b76a82247193b092e7944681e3c0 Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Thu, 22 Sep 2022 12:37:50 +0000
|
||||
Subject: [PATCH 1/8] TrebleSettings: Screen resolution & refresh rate
|
||||
|
||||
Change-Id: I4a4679cdb6d4ede55479e9ab2f014342025b0fec
|
||||
---
|
||||
AndroidManifest.xml | 8 +
|
||||
res/drawable/ic_settings_treble.xml | 10 +
|
||||
res/values/menu_keys.xml | 1 +
|
||||
res/values/strings.xml | 10 +
|
||||
res/xml/top_level_settings.xml | 9 +
|
||||
res/xml/treble_settings.xml | 18 ++
|
||||
...lutionRefreshRatePreferenceController.java | 176 ++++++++++++++++++
|
||||
.../settings/treble/TrebleSettings.java | 39 ++++
|
||||
8 files changed, 271 insertions(+)
|
||||
create mode 100644 res/drawable/ic_settings_treble.xml
|
||||
create mode 100644 res/xml/treble_settings.xml
|
||||
create mode 100644 src/com/android/settings/treble/ScreenResolutionRefreshRatePreferenceController.java
|
||||
create mode 100644 src/com/android/settings/treble/TrebleSettings.java
|
||||
|
||||
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
|
||||
index f05f3d2381..9cf3b4fd2d 100644
|
||||
--- a/AndroidManifest.xml
|
||||
+++ b/AndroidManifest.xml
|
||||
@@ -241,6 +241,14 @@
|
||||
android:value="com.android.settings.shortcut.CreateShortcut" />
|
||||
</activity>
|
||||
|
||||
+ <receiver
|
||||
+ android:name=".treble.ScreenResolutionRefreshRatePreferenceController$BootReceiver"
|
||||
+ android:exported="true">
|
||||
+ <intent-filter>
|
||||
+ <action android:name="android.intent.action.BOOT_COMPLETED"/>
|
||||
+ </intent-filter>
|
||||
+ </receiver>
|
||||
+
|
||||
<!-- Wireless Controls -->
|
||||
<activity
|
||||
android:name=".Settings$NetworkDashboardActivity"
|
||||
diff --git a/res/drawable/ic_settings_treble.xml b/res/drawable/ic_settings_treble.xml
|
||||
new file mode 100644
|
||||
index 0000000000..3c56ed7032
|
||||
--- /dev/null
|
||||
+++ b/res/drawable/ic_settings_treble.xml
|
||||
@@ -0,0 +1,10 @@
|
||||
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ android:width="24dp"
|
||||
+ android:height="24dp"
|
||||
+ android:viewportWidth="24.0"
|
||||
+ android:viewportHeight="24.0"
|
||||
+ android:tint="?attr/colorControlNormal">
|
||||
+ <path
|
||||
+ android:fillColor="@android:color/white"
|
||||
+ android:pathData="M10.82 12.49c.02-.16.04-.32.04-.49 0-.17-.02-.33-.04-.49l1.08-.82c.1-.07.12-.21.06-.32l-1.03-1.73c-.06-.11-.2-.15-.31-.11l-1.28.5c-.27-.2-.56-.36-.87-.49l-.2-1.33c0-.12-.11-.21-.24-.21H5.98c-.13 0-.24.09-.26.21l-.2 1.32c-.31.12-.6.3-.87.49l-1.28-.5c-.12-.05-.25 0-.31.11l-1.03 1.73c-.06.12-.03.25.07.33l1.08.82c-.02.16-.03.33-.03.49 0 .17.02.33.04.49l-1.09.83c-.1.07-.12.21-.06.32l1.03 1.73c.06.11.2.15.31.11l1.28-.5c.27.2.56.36.87.49l.2 1.32c.01.12.12.21.25.21h2.06c.13 0 .24-.09.25-.21l.2-1.32c.31-.12.6-.3.87-.49l1.28.5c.12.05.25 0 .31-.11l1.03-1.73c.06-.11.04-.24-.06-.32l-1.1-.83zM7 13.75c-.99 0-1.8-.78-1.8-1.75s.81-1.75 1.8-1.75 1.8.78 1.8 1.75S8 13.75 7 13.75zM18 1.01L8 1c-1.1 0-2 .9-2 2v3h2V5h10v14H8v-1H6v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99z"/>
|
||||
+</vector>
|
||||
diff --git a/res/values/menu_keys.xml b/res/values/menu_keys.xml
|
||||
index 27e9639122..ef25f9971c 100755
|
||||
--- a/res/values/menu_keys.xml
|
||||
+++ b/res/values/menu_keys.xml
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
|
||||
+ <string name="menu_key_treble" translatable="false">top_level_treble</string>
|
||||
<string name="menu_key_network" translatable="false">top_level_network</string>
|
||||
<string name="menu_key_communal" translatable="false">top_level_communal</string>
|
||||
<string name="menu_key_connected_devices" translatable="false">top_level_connected_devices</string>
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index 32cb7803a6..dcb08f0731 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -6875,6 +6875,16 @@
|
||||
<!-- Text to describe the dashboard fragment title [CHAR LIMIT=16] -->
|
||||
<string name="dashboard_title">Settings</string>
|
||||
|
||||
+ <!-- Title for setting tile leading to Treble settings [CHAR LIMIT=40]-->
|
||||
+ <string name="treble_settings">Treble settings</string>
|
||||
+ <!-- Summary for Treble settings [CHAR LIMIT=NONE]-->
|
||||
+ <string name="treble_settings_summary">Fixes & tweaks for GSIs</string>
|
||||
+ <!-- Display category name [CHAR LIMIT=none] -->
|
||||
+ <string name="treble_settings_category_name_display">Display</string>
|
||||
+
|
||||
+ <!-- Treble settings screen, screen resolution and refresh rate settings title -->
|
||||
+ <string name="screen_resolution_refresh_rate_title">Screen resolution & refresh rate</string>
|
||||
+
|
||||
<!-- Title for setting tile leading to network and Internet settings [CHAR LIMIT=40]-->
|
||||
<string name="network_dashboard_title">Network & internet</string>
|
||||
<!-- Summary for Network and Internet settings, explaining it contains mobile, wifi setting and data usage settings [CHAR LIMIT=NONE]-->
|
||||
diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml
|
||||
index d050a1f274..258a567f56 100644
|
||||
--- a/res/xml/top_level_settings.xml
|
||||
+++ b/res/xml/top_level_settings.xml
|
||||
@@ -20,6 +20,15 @@
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:key="top_level_settings">
|
||||
|
||||
+ <com.android.settings.widget.HomepagePreference
|
||||
+ android:fragment="com.android.settings.treble.TrebleSettings"
|
||||
+ android:icon="@drawable/ic_settings_treble"
|
||||
+ android:key="top_level_treble"
|
||||
+ android:order="-160"
|
||||
+ android:title="@string/treble_settings"
|
||||
+ android:summary="@string/treble_settings_summary"
|
||||
+ settings:highlightableMenuKey="@string/menu_key_treble"/>
|
||||
+
|
||||
<com.android.settings.widget.HomepagePreference
|
||||
android:fragment="com.android.settings.network.NetworkDashboardFragment"
|
||||
android:icon="@drawable/ic_settings_wireless"
|
||||
diff --git a/res/xml/treble_settings.xml b/res/xml/treble_settings.xml
|
||||
new file mode 100644
|
||||
index 0000000000..1a82c468a2
|
||||
--- /dev/null
|
||||
+++ b/res/xml/treble_settings.xml
|
||||
@@ -0,0 +1,18 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+
|
||||
+<PreferenceScreen
|
||||
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
+ android:key="treble_settings_screen"
|
||||
+ android:title="@string/treble_settings">
|
||||
+
|
||||
+ <PreferenceCategory
|
||||
+ android:title="@string/treble_settings_category_name_display">
|
||||
+
|
||||
+ <ListPreference
|
||||
+ android:key="screen_resolution_refresh_rate"
|
||||
+ android:title="@string/screen_resolution_refresh_rate_title" />
|
||||
+
|
||||
+ </PreferenceCategory>
|
||||
+
|
||||
+</PreferenceScreen>
|
||||
diff --git a/src/com/android/settings/treble/ScreenResolutionRefreshRatePreferenceController.java b/src/com/android/settings/treble/ScreenResolutionRefreshRatePreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..d8d7b4faf6
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/ScreenResolutionRefreshRatePreferenceController.java
|
||||
@@ -0,0 +1,176 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import static android.content.Intent.ACTION_BOOT_COMPLETED;
|
||||
+
|
||||
+import android.app.ActivityManager;
|
||||
+import android.content.BroadcastReceiver;
|
||||
+import android.content.Context;
|
||||
+import android.content.Intent;
|
||||
+import android.os.IBinder;
|
||||
+import android.os.Parcel;
|
||||
+import android.os.RemoteException;
|
||||
+import android.os.ServiceManager;
|
||||
+import android.os.SystemProperties;
|
||||
+import android.view.SurfaceControl;
|
||||
+import android.view.SurfaceControl.DisplayMode;
|
||||
+
|
||||
+import androidx.preference.ListPreference;
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+import java.util.ArrayList;
|
||||
+import java.util.Collections;
|
||||
+import java.util.Comparator;
|
||||
+import java.util.HashSet;
|
||||
+import java.util.List;
|
||||
+import java.util.Set;
|
||||
+
|
||||
+public class ScreenResolutionRefreshRatePreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String SCREEN_RESOLUTION_REFRESH_RATE_KEY = "screen_resolution_refresh_rate";
|
||||
+ private static final String SURFACE_FLINGER_SERVICE_KEY = "SurfaceFlinger";
|
||||
+ private static final String SURFACE_COMPOSER_INTERFACE_KEY = "android.ui.ISurfaceComposer";
|
||||
+ private static final int SURFACE_FLINGER_CODE = 1035;
|
||||
+ private static final String TREBLE_DISPLAY_MODE_PROPERTY = "persist.sys.treble.display_mode";
|
||||
+ private static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui";
|
||||
+
|
||||
+ private ActivityManager mAm;
|
||||
+ private ListPreference mListPreference;
|
||||
+ private List<DisplayMode> mModes = new ArrayList<>();
|
||||
+ private List<String> mEntries = new ArrayList<>();
|
||||
+ private List<String> mValues = new ArrayList<>();
|
||||
+
|
||||
+ public ScreenResolutionRefreshRatePreferenceController(Context context) {
|
||||
+ super(context, SCREEN_RESOLUTION_REFRESH_RATE_KEY);
|
||||
+
|
||||
+ mAm = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
||||
+
|
||||
+ long[] physicalDisplayIds = SurfaceControl.getPhysicalDisplayIds();
|
||||
+ DisplayMode[] supportedDisplayModes =
|
||||
+ SurfaceControl.getDynamicDisplayInfo(physicalDisplayIds[0]).supportedDisplayModes;
|
||||
+ Set<String> summarySet = new HashSet<>();
|
||||
+ for (DisplayMode m : supportedDisplayModes) {
|
||||
+ String summary = String.format("%dx%d @ %dHz", m.width, m.height, Math.round(m.refreshRate));
|
||||
+ if (!summarySet.contains(summary)) {
|
||||
+ summarySet.add(summary);
|
||||
+ mModes.add(m);
|
||||
+ }
|
||||
+ }
|
||||
+ Collections.sort(mModes, Comparator.comparing((DisplayMode m)->m.width)
|
||||
+ .thenComparing(m->m.height)
|
||||
+ .thenComparing(m->m.refreshRate)
|
||||
+ .thenComparing(m->m.id));
|
||||
+ for (DisplayMode m : mModes) {
|
||||
+ String summary = String.format("%dx%d @ %dHz", m.width, m.height, Math.round(m.refreshRate));
|
||||
+ mEntries.add(summary);
|
||||
+ mValues.add(String.valueOf(m.id));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return SCREEN_RESOLUTION_REFRESH_RATE_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mListPreference = screen.findPreference(getPreferenceKey());
|
||||
+ mListPreference.setEntries(mEntries.toArray(new String[mEntries.size()]));
|
||||
+ mListPreference.setEntryValues(mValues.toArray(new String[mValues.size()]));
|
||||
+
|
||||
+ if (mEntries.size() <= 1) {
|
||||
+ mListPreference.setEnabled(false);
|
||||
+ }
|
||||
+
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ long[] physicalDisplayIds = SurfaceControl.getPhysicalDisplayIds();
|
||||
+ int id = SurfaceControl.getDynamicDisplayInfo(physicalDisplayIds[0]).activeDisplayModeId;
|
||||
+ int index = mListPreference.findIndexOfValue(String.valueOf(id));
|
||||
+ try {
|
||||
+ mListPreference.setValueIndex(index);
|
||||
+ mListPreference.setSummary(mListPreference.getEntries()[index]);
|
||||
+ } catch (ArrayIndexOutOfBoundsException e) {
|
||||
+ e.printStackTrace();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ DisplayMode currentMode = getCurrentMode();
|
||||
+ int id = Integer.valueOf((String) newValue);
|
||||
+ DisplayMode newMode = getModeById(id);
|
||||
+ setModeFromBackdoor(id);
|
||||
+ SystemProperties.set(TREBLE_DISPLAY_MODE_PROPERTY, (String) newValue);
|
||||
+ int index = mListPreference.findIndexOfValue((String) newValue);
|
||||
+ mListPreference.setValueIndex(index);
|
||||
+ mListPreference.setSummary(mListPreference.getEntries()[index]);
|
||||
+ if ((newMode.width != currentMode.width) || (newMode.height != currentMode.height)) {
|
||||
+ try {
|
||||
+ for (ActivityManager.RunningAppProcessInfo app: mAm.getRunningAppProcesses()) {
|
||||
+ if (app.processName.equals(SYSTEMUI_PACKAGE_NAME)) {
|
||||
+ ActivityManager.getService().killApplicationProcess(app.processName, app.uid);
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ } catch (Exception e) {
|
||||
+ e.printStackTrace();
|
||||
+ }
|
||||
+ }
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ private DisplayMode getCurrentMode() {
|
||||
+ long[] physicalDisplayIds = SurfaceControl.getPhysicalDisplayIds();
|
||||
+ int id = SurfaceControl.getDynamicDisplayInfo(physicalDisplayIds[0]).activeDisplayModeId;
|
||||
+ return getModeById(id);
|
||||
+ }
|
||||
+
|
||||
+ private DisplayMode getModeById(int id) {
|
||||
+ for (DisplayMode m : mModes) {
|
||||
+ if (m.id == id) {
|
||||
+ return m;
|
||||
+ }
|
||||
+ }
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
+ public static void setModeFromBackdoor(int id) {
|
||||
+ IBinder surfaceFlinger = ServiceManager.getService(SURFACE_FLINGER_SERVICE_KEY);
|
||||
+ try {
|
||||
+ if (surfaceFlinger != null) {
|
||||
+ Parcel data = Parcel.obtain();
|
||||
+ data.writeInterfaceToken(SURFACE_COMPOSER_INTERFACE_KEY);
|
||||
+ data.writeInt(id);
|
||||
+ surfaceFlinger.transact(SURFACE_FLINGER_CODE, data, null, 0);
|
||||
+ data.recycle();
|
||||
+ }
|
||||
+ } catch (RemoteException ex) {}
|
||||
+ }
|
||||
+
|
||||
+ public static class BootReceiver extends BroadcastReceiver {
|
||||
+
|
||||
+ @Override
|
||||
+ public void onReceive(Context context, Intent intent) {
|
||||
+ if (ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
|
||||
+ int id = SystemProperties.getInt(TREBLE_DISPLAY_MODE_PROPERTY, -1);
|
||||
+ if (id != -1) {
|
||||
+ setModeFromBackdoor(id);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/TrebleSettings.java b/src/com/android/settings/treble/TrebleSettings.java
|
||||
new file mode 100644
|
||||
index 0000000000..e581539229
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/TrebleSettings.java
|
||||
@@ -0,0 +1,39 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.app.settings.SettingsEnums;
|
||||
+import android.content.Context;
|
||||
+
|
||||
+import com.android.settings.R;
|
||||
+import com.android.settings.dashboard.DashboardFragment;
|
||||
+import com.android.settingslib.core.AbstractPreferenceController;
|
||||
+
|
||||
+import java.util.ArrayList;
|
||||
+import java.util.List;
|
||||
+
|
||||
+public class TrebleSettings extends DashboardFragment {
|
||||
+
|
||||
+ private static final String TAG = "TrebleSettings";
|
||||
+
|
||||
+ @Override
|
||||
+ protected int getPreferenceScreenResId() {
|
||||
+ return R.xml.treble_settings;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected String getLogTag() {
|
||||
+ return TAG;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getMetricsCategory() {
|
||||
+ return SettingsEnums.SETTINGS_TREBLE_CATEGORY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
|
||||
+ final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||
+ controllers.add(new ScreenResolutionRefreshRatePreferenceController(context));
|
||||
+ return controllers;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,288 @@
|
||||
From 01ce7e73cb79e56484594b0ce03eb2ebfa193e90 Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Sat, 24 Sep 2022 03:38:41 +0000
|
||||
Subject: [PATCH 2/8] TrebleSettings: Basic audio and display fixes
|
||||
|
||||
- Alternative audio policy
|
||||
- Disable soundvolume effect
|
||||
- Alternative backlight scale
|
||||
|
||||
Change-Id: I4f22dcd9c59c40b3fd70ba642db35b9466467b7d
|
||||
---
|
||||
res/values/strings.xml | 8 +++
|
||||
res/xml/treble_settings.xml | 17 ++++++
|
||||
...SoundvolumeEffectPreferenceController.java | 59 +++++++++++++++++++
|
||||
.../settings/treble/TrebleSettings.java | 3 +
|
||||
...nativeAudioPolicyPreferenceController.java | 59 +++++++++++++++++++
|
||||
...iveBacklightScalePreferenceController.java | 53 +++++++++++++++++
|
||||
6 files changed, 199 insertions(+)
|
||||
create mode 100644 src/com/android/settings/treble/DisableSoundvolumeEffectPreferenceController.java
|
||||
create mode 100644 src/com/android/settings/treble/UseAlternativeAudioPolicyPreferenceController.java
|
||||
create mode 100644 src/com/android/settings/treble/UseAlternativeBacklightScalePreferenceController.java
|
||||
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index dcb08f0731..f799b4d0c7 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -6879,11 +6879,19 @@
|
||||
<string name="treble_settings">Treble settings</string>
|
||||
<!-- Summary for Treble settings [CHAR LIMIT=NONE]-->
|
||||
<string name="treble_settings_summary">Fixes & tweaks for GSIs</string>
|
||||
+ <!-- Audio category name [CHAR LIMIT=none] -->
|
||||
+ <string name="treble_settings_category_name_audio">Audio</string>
|
||||
<!-- Display category name [CHAR LIMIT=none] -->
|
||||
<string name="treble_settings_category_name_display">Display</string>
|
||||
|
||||
+ <!-- Treble settings screen, use alternative audio policy title -->
|
||||
+ <string name="use_alternative_audio_policy_title">Use alternative audio policy</string>
|
||||
+ <!-- Treble settings screen, disable soundvolume effect title -->
|
||||
+ <string name="disable_soundvolume_effect_title">Disable soundvolume effect</string>
|
||||
<!-- Treble settings screen, screen resolution and refresh rate settings title -->
|
||||
<string name="screen_resolution_refresh_rate_title">Screen resolution & refresh rate</string>
|
||||
+ <!-- Treble settings screen, use alternative backlight scale title -->
|
||||
+ <string name="use_alternative_backlight_scale_title">Use alternative backlight scale</string>
|
||||
|
||||
<!-- Title for setting tile leading to network and Internet settings [CHAR LIMIT=40]-->
|
||||
<string name="network_dashboard_title">Network & internet</string>
|
||||
diff --git a/res/xml/treble_settings.xml b/res/xml/treble_settings.xml
|
||||
index 1a82c468a2..336137c95f 100644
|
||||
--- a/res/xml/treble_settings.xml
|
||||
+++ b/res/xml/treble_settings.xml
|
||||
@@ -6,6 +6,19 @@
|
||||
android:key="treble_settings_screen"
|
||||
android:title="@string/treble_settings">
|
||||
|
||||
+ <PreferenceCategory
|
||||
+ android:title="@string/treble_settings_category_name_audio">
|
||||
+
|
||||
+ <SwitchPreference
|
||||
+ android:key="use_alternative_audio_policy"
|
||||
+ android:title="@string/use_alternative_audio_policy_title" />
|
||||
+
|
||||
+ <SwitchPreference
|
||||
+ android:key="disable_soundvolume_effect"
|
||||
+ android:title="@string/disable_soundvolume_effect_title" />
|
||||
+
|
||||
+ </PreferenceCategory>
|
||||
+
|
||||
<PreferenceCategory
|
||||
android:title="@string/treble_settings_category_name_display">
|
||||
|
||||
@@ -13,6 +26,10 @@
|
||||
android:key="screen_resolution_refresh_rate"
|
||||
android:title="@string/screen_resolution_refresh_rate_title" />
|
||||
|
||||
+ <SwitchPreference
|
||||
+ android:key="use_alternative_backlight_scale"
|
||||
+ android:title="@string/use_alternative_backlight_scale_title" />
|
||||
+
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
||||
diff --git a/src/com/android/settings/treble/DisableSoundvolumeEffectPreferenceController.java b/src/com/android/settings/treble/DisableSoundvolumeEffectPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..8feb318f55
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/DisableSoundvolumeEffectPreferenceController.java
|
||||
@@ -0,0 +1,59 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class DisableSoundvolumeEffectPreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String DISABLE_SOUNDVOLUME_EFFECT_KEY = "disable_soundvolume_effect";
|
||||
+ private static final String RO_HARDWARE_PROPERTY = "ro.hardware";
|
||||
+ private static final String TREBLE_CAF_DISABLE_SOUNDVOLUME_EFFECT_PROPERTY = "persist.sys.treble.caf.disable_soundvolume_effect";
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public DisableSoundvolumeEffectPreferenceController(Context context) {
|
||||
+ super(context, DISABLE_SOUNDVOLUME_EFFECT_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return DISABLE_SOUNDVOLUME_EFFECT_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+
|
||||
+ if (!SystemProperties.get(RO_HARDWARE_PROPERTY, "N/A").equals("qcom")) {
|
||||
+ mSwitchPreference.setEnabled(false);
|
||||
+ }
|
||||
+
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = SystemProperties.getBoolean(TREBLE_CAF_DISABLE_SOUNDVOLUME_EFFECT_PROPERTY, false);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ SystemProperties.set(TREBLE_CAF_DISABLE_SOUNDVOLUME_EFFECT_PROPERTY, String.valueOf((boolean) newValue));
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/TrebleSettings.java b/src/com/android/settings/treble/TrebleSettings.java
|
||||
index e581539229..5c1611c053 100644
|
||||
--- a/src/com/android/settings/treble/TrebleSettings.java
|
||||
+++ b/src/com/android/settings/treble/TrebleSettings.java
|
||||
@@ -32,7 +32,10 @@ public class TrebleSettings extends DashboardFragment {
|
||||
@Override
|
||||
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
|
||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||
+ controllers.add(new UseAlternativeAudioPolicyPreferenceController(context));
|
||||
+ controllers.add(new DisableSoundvolumeEffectPreferenceController(context));
|
||||
controllers.add(new ScreenResolutionRefreshRatePreferenceController(context));
|
||||
+ controllers.add(new UseAlternativeBacklightScalePreferenceController(context));
|
||||
return controllers;
|
||||
}
|
||||
|
||||
diff --git a/src/com/android/settings/treble/UseAlternativeAudioPolicyPreferenceController.java b/src/com/android/settings/treble/UseAlternativeAudioPolicyPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..fbc327cba0
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/UseAlternativeAudioPolicyPreferenceController.java
|
||||
@@ -0,0 +1,59 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class UseAlternativeAudioPolicyPreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String USE_ALTERNATIVE_AUDIO_POLICY_KEY = "use_alternative_audio_policy";
|
||||
+ private static final String RO_HARDWARE_PROPERTY = "ro.hardware";
|
||||
+ private static final String TREBLE_CAF_AUDIO_POLICY_PROPERTY = "persist.sys.treble.caf.audio_policy";
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public UseAlternativeAudioPolicyPreferenceController(Context context) {
|
||||
+ super(context, USE_ALTERNATIVE_AUDIO_POLICY_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return USE_ALTERNATIVE_AUDIO_POLICY_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+
|
||||
+ if (!SystemProperties.get(RO_HARDWARE_PROPERTY, "N/A").equals("qcom")) {
|
||||
+ mSwitchPreference.setEnabled(false);
|
||||
+ }
|
||||
+
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = SystemProperties.getBoolean(TREBLE_CAF_AUDIO_POLICY_PROPERTY, false);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ SystemProperties.set(TREBLE_CAF_AUDIO_POLICY_PROPERTY, String.valueOf((boolean) newValue));
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/UseAlternativeBacklightScalePreferenceController.java b/src/com/android/settings/treble/UseAlternativeBacklightScalePreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..bd9de82d90
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/UseAlternativeBacklightScalePreferenceController.java
|
||||
@@ -0,0 +1,53 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class UseAlternativeBacklightScalePreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String USE_ALTERNATIVE_BACKLIGHT_SCALE_KEY = "use_alternative_backlight_scale";
|
||||
+ private static final String TREBLE_BACKLIGHT_SCALE_PROPERTY = "persist.sys.treble.backlight_scale";
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public UseAlternativeBacklightScalePreferenceController(Context context) {
|
||||
+ super(context, USE_ALTERNATIVE_BACKLIGHT_SCALE_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return USE_ALTERNATIVE_BACKLIGHT_SCALE_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = SystemProperties.getBoolean(TREBLE_BACKLIGHT_SCALE_PROPERTY, false);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ SystemProperties.set(TREBLE_BACKLIGHT_SCALE_PROPERTY, String.valueOf((boolean) newValue));
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,374 @@
|
||||
From 9cef4d5c64956f27e73320c6f5cc28201bd2692c Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Tue, 11 Oct 2022 10:29:36 +0000
|
||||
Subject: [PATCH 3/8] TrebleSettings: IMS
|
||||
|
||||
Change-Id: Id7a12e150d4a3dc988f8ce1a888ad88443fa0ea4
|
||||
---
|
||||
Android.bp | 1 +
|
||||
res/values/strings.xml | 9 +
|
||||
res/xml/treble_settings.xml | 13 ++
|
||||
.../InstallImsApkPreferenceController.java | 209 ++++++++++++++++++
|
||||
...VolteAvailabilityPreferenceController.java | 59 +++++
|
||||
.../settings/treble/TrebleSettings.java | 2 +
|
||||
6 files changed, 293 insertions(+)
|
||||
create mode 100644 src/com/android/settings/treble/InstallImsApkPreferenceController.java
|
||||
create mode 100644 src/com/android/settings/treble/OverrideVolteAvailabilityPreferenceController.java
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 8cd7aa76aa..20efe42a50 100644
|
||||
--- a/Android.bp
|
||||
+++ b/Android.bp
|
||||
@@ -105,6 +105,7 @@ android_library {
|
||||
"LineagePreferenceLib",
|
||||
"vendor.lineage.fastcharge-V1.0-java",
|
||||
"SystemUISharedLib",
|
||||
+ "android.hidl.manager-V1.0-java",
|
||||
],
|
||||
|
||||
plugins: ["androidx.room_room-compiler-plugin"],
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index f799b4d0c7..1df0fe22f1 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -6883,6 +6883,8 @@
|
||||
<string name="treble_settings_category_name_audio">Audio</string>
|
||||
<!-- Display category name [CHAR LIMIT=none] -->
|
||||
<string name="treble_settings_category_name_display">Display</string>
|
||||
+ <!-- IMS category name [CHAR LIMIT=none] -->
|
||||
+ <string name="treble_settings_category_name_ims">IMS</string>
|
||||
|
||||
<!-- Treble settings screen, use alternative audio policy title -->
|
||||
<string name="use_alternative_audio_policy_title">Use alternative audio policy</string>
|
||||
@@ -6892,6 +6894,13 @@
|
||||
<string name="screen_resolution_refresh_rate_title">Screen resolution & refresh rate</string>
|
||||
<!-- Treble settings screen, use alternative backlight scale title -->
|
||||
<string name="use_alternative_backlight_scale_title">Use alternative backlight scale</string>
|
||||
+ <!-- Treble settings screen, install IMS APK title -->
|
||||
+ <string name="install_ims_apk_title">Install IMS APK</string>
|
||||
+ <!-- Treble settings screen, install IMS APK toasts -->
|
||||
+ <string name="install_ims_apk_toast_downloading">Downloading IMS APK...</string>
|
||||
+ <string name="install_ims_apk_toast_completed">IMS APK installed. Reboot required.</string>
|
||||
+ <!-- Treble settings screen, override VoLTE availability title -->
|
||||
+ <string name="override_volte_availability_title">Override VoLTE availability</string>
|
||||
|
||||
<!-- Title for setting tile leading to network and Internet settings [CHAR LIMIT=40]-->
|
||||
<string name="network_dashboard_title">Network & internet</string>
|
||||
diff --git a/res/xml/treble_settings.xml b/res/xml/treble_settings.xml
|
||||
index 336137c95f..09e6bc5d00 100644
|
||||
--- a/res/xml/treble_settings.xml
|
||||
+++ b/res/xml/treble_settings.xml
|
||||
@@ -32,4 +32,17 @@
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
+ <PreferenceCategory
|
||||
+ android:title="@string/treble_settings_category_name_ims">
|
||||
+
|
||||
+ <Preference
|
||||
+ android:key="install_ims_apk"
|
||||
+ android:title="@string/install_ims_apk_title" />
|
||||
+
|
||||
+ <SwitchPreference
|
||||
+ android:key="override_volte_availability"
|
||||
+ android:title="@string/override_volte_availability_title" />
|
||||
+
|
||||
+ </PreferenceCategory>
|
||||
+
|
||||
</PreferenceScreen>
|
||||
diff --git a/src/com/android/settings/treble/InstallImsApkPreferenceController.java b/src/com/android/settings/treble/InstallImsApkPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..6a63cbf1bf
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/InstallImsApkPreferenceController.java
|
||||
@@ -0,0 +1,209 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.app.DownloadManager;
|
||||
+import android.app.PendingIntent;
|
||||
+import android.content.BroadcastReceiver;
|
||||
+import android.content.Context;
|
||||
+import android.content.Intent;
|
||||
+import android.content.IntentFilter;
|
||||
+import android.content.pm.PackageInstaller;
|
||||
+import android.database.Cursor;
|
||||
+import android.hidl.manager.V1_0.IServiceManager;
|
||||
+import android.net.Uri;
|
||||
+import android.os.Environment;
|
||||
+import android.os.RemoteException;
|
||||
+import android.os.ServiceManager;
|
||||
+import android.os.SystemProperties;
|
||||
+import android.util.Log;
|
||||
+import android.widget.Toast;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+
|
||||
+import com.android.settings.R;
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+import java.io.File;
|
||||
+import java.io.FileInputStream;
|
||||
+import java.io.IOException;
|
||||
+import java.io.InputStream;
|
||||
+import java.io.OutputStream;
|
||||
+
|
||||
+public class InstallImsApkPreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceClickListener {
|
||||
+
|
||||
+ private static final String TAG = "TrebleSettings";
|
||||
+ private static final String INSTALL_IMS_APK_KEY = "install_ims_apk";
|
||||
+ private static final String[] IMS_SLOTS = {
|
||||
+ "imsrild1", "imsrild2", "imsrild3",
|
||||
+ "slot1", "slot2", "slot3",
|
||||
+ "imsSlot1", "imsSlot2",
|
||||
+ "mtkSlot1", "mtkSlot2",
|
||||
+ "imsradio0", "imsradio1"
|
||||
+ };
|
||||
+ private static final String RO_PRODUCT_VENDOR_BRAND_PROPERTY = "ro.product.vendor.brand";
|
||||
+
|
||||
+ private Preference mPreference;
|
||||
+ private String mImsType = "none";
|
||||
+ private String mImsApkUrl = "";
|
||||
+
|
||||
+ public InstallImsApkPreferenceController(Context context) {
|
||||
+ super(context, INSTALL_IMS_APK_KEY);
|
||||
+
|
||||
+ mImsType = getImsType();
|
||||
+ Log.d(TAG, "IMS type = " + mImsType);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return INSTALL_IMS_APK_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mPreference = screen.findPreference(getPreferenceKey());
|
||||
+
|
||||
+ if (mImsType.equals("none")) {
|
||||
+ mPreference.setEnabled(false);
|
||||
+ } else {
|
||||
+ mPreference.setOnPreferenceClickListener(this);
|
||||
+ String summary = "IMS type: ";
|
||||
+ switch (mImsType) {
|
||||
+ case "qcom":
|
||||
+ summary += "Qualcomm";
|
||||
+ break;
|
||||
+ case "mtk_p":
|
||||
+ summary += "MediaTek P";
|
||||
+ break;
|
||||
+ case "mtk_q":
|
||||
+ summary += "MediaTek Q";
|
||||
+ break;
|
||||
+ case "mtk_r":
|
||||
+ summary += "MediaTek R";
|
||||
+ break;
|
||||
+ case "mtk_s":
|
||||
+ summary += "MediaTek S";
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ mPreference.setSummary(summary);
|
||||
+ }
|
||||
+
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceClick(Preference preference) {
|
||||
+ switch (mImsType) {
|
||||
+ case "qcom":
|
||||
+ mImsApkUrl = "https://treble.phh.me/ims-caf-u.apk";
|
||||
+ break;
|
||||
+ case "mtk_p":
|
||||
+ mImsApkUrl = "https://treble.phh.me/stable/ims-mtk-p.apk";
|
||||
+ break;
|
||||
+ case "mtk_q":
|
||||
+ mImsApkUrl = "https://treble.phh.me/stable/ims-mtk-q.apk";
|
||||
+ break;
|
||||
+ case "mtk_r":
|
||||
+ mImsApkUrl = "https://treble.phh.me/stable/ims-mtk-r.apk";
|
||||
+ break;
|
||||
+ case "mtk_s":
|
||||
+ mImsApkUrl = "https://treble.phh.me/stable/ims-mtk-s.apk";
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ Context context = preference.getContext();
|
||||
+ DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||
+ DownloadManager.Request request = new DownloadManager.Request(Uri.parse(mImsApkUrl));
|
||||
+ request.setTitle("IMS APK");
|
||||
+ request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
||||
+ request.setDestinationInExternalFilesDir(context, Environment.DIRECTORY_DOWNLOADS, "ims.apk");
|
||||
+ long id = dm.enqueue(request);
|
||||
+ Toast.makeText(context, context.getString(R.string.install_ims_apk_toast_downloading), Toast.LENGTH_LONG).show();
|
||||
+
|
||||
+ context.registerReceiver(new BroadcastReceiver() {
|
||||
+ @Override
|
||||
+ public void onReceive(Context context, Intent intent) {
|
||||
+ if (intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1L) != id) {
|
||||
+ return;
|
||||
+ }
|
||||
+ Cursor cursor = dm.query(new DownloadManager.Query().setFilterById(id));
|
||||
+ if (!cursor.moveToFirst()) {
|
||||
+ return;
|
||||
+ }
|
||||
+ Uri localUri = Uri.parse(cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)));
|
||||
+ String path = localUri.getPath();
|
||||
+ if (path == null) {
|
||||
+ return;
|
||||
+ }
|
||||
+ long fileSize = 0;
|
||||
+ File file = new File(path);
|
||||
+ if (file.isFile()) {
|
||||
+ fileSize = file.length();
|
||||
+ } else {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ try (InputStream in = new FileInputStream(path)) {
|
||||
+ PackageInstaller pi = context.getPackageManager().getPackageInstaller();
|
||||
+ int sessionId = pi.createSession(new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL));
|
||||
+ PackageInstaller.Session session = pi.openSession(sessionId);
|
||||
+ try (OutputStream out = session.openWrite(TAG, 0, fileSize)) {
|
||||
+ byte[] buffer = new byte[512 * 1024];
|
||||
+ while (in.available() > 0) {
|
||||
+ int l = in.read(buffer);
|
||||
+ out.write(buffer, 0, l);
|
||||
+ }
|
||||
+ session.fsync(out);
|
||||
+ }
|
||||
+ String action = TAG + "_" + sessionId;
|
||||
+ PendingIntent pendingIntent = PendingIntent.getBroadcast(context, sessionId,
|
||||
+ new Intent(action), PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
|
||||
+ context.registerReceiver(new BroadcastReceiver() {
|
||||
+ @Override
|
||||
+ public void onReceive(Context context, Intent intent) {
|
||||
+ Toast.makeText(context, context.getString(R.string.install_ims_apk_toast_completed), Toast.LENGTH_LONG).show();
|
||||
+ }
|
||||
+ }, new IntentFilter(action));
|
||||
+ session.commit(pendingIntent.getIntentSender());
|
||||
+ context.unregisterReceiver(this);
|
||||
+ } catch (IOException ex) {
|
||||
+ Log.d(TAG, "IOException while installing IMS APK");
|
||||
+ }
|
||||
+ }
|
||||
+ }, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
|
||||
+
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ protected static String getImsType() {
|
||||
+ try {
|
||||
+ IServiceManager hidlManager = IServiceManager.getService();
|
||||
+ for (String slot: IMS_SLOTS) {
|
||||
+ if (hidlManager.get("vendor.qti.hardware.radio.ims@1.0::IImsRadio", slot) != null
|
||||
+ || ServiceManager.getService("vendor.qti.hardware.radio.ims.IImsRadio/" + slot) != null) {
|
||||
+ return "qcom";
|
||||
+ } else if (hidlManager.get("vendor.mediatek.hardware.radio@3.0::IRadio", slot) != null) {
|
||||
+ return "mtk_p";
|
||||
+ } else if (hidlManager.get("vendor.mediatek.hardware.mtkradioex@1.0::IMtkRadioEx", slot) != null) {
|
||||
+ return "mtk_q";
|
||||
+ } else if (hidlManager.get("vendor.mediatek.hardware.mtkradioex@2.0::IMtkRadioEx", slot) != null) {
|
||||
+ return "mtk_r";
|
||||
+ } else if (hidlManager.get("vendor.mediatek.hardware.mtkradioex@3.0::IMtkRadioEx", slot) != null) {
|
||||
+ return "mtk_s";
|
||||
+ }
|
||||
+ }
|
||||
+ } catch (RemoteException ex) {}
|
||||
+
|
||||
+ return "none";
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/OverrideVolteAvailabilityPreferenceController.java b/src/com/android/settings/treble/OverrideVolteAvailabilityPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..1ab12d3ca0
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/OverrideVolteAvailabilityPreferenceController.java
|
||||
@@ -0,0 +1,59 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class OverrideVolteAvailabilityPreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String OVERRIDE_VOLTE_AVAILABILITY_KEY = "override_volte_availability";
|
||||
+ private static final String[] IMSMANAGER_DEBUG_OVERRIDE_PROPERTIES = {
|
||||
+ "persist.dbg.volte_avail_ovr",
|
||||
+ "persist.dbg.wfc_avail_ovr",
|
||||
+ "persist.dbg.allow_ims_off"
|
||||
+ };
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public OverrideVolteAvailabilityPreferenceController(Context context) {
|
||||
+ super(context, OVERRIDE_VOLTE_AVAILABILITY_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return OVERRIDE_VOLTE_AVAILABILITY_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = SystemProperties.getBoolean(IMSMANAGER_DEBUG_OVERRIDE_PROPERTIES[0], false);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ for (String prop: IMSMANAGER_DEBUG_OVERRIDE_PROPERTIES) {
|
||||
+ SystemProperties.set(prop, ((boolean) newValue) ? "1" : "0");
|
||||
+ }
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/TrebleSettings.java b/src/com/android/settings/treble/TrebleSettings.java
|
||||
index 5c1611c053..50e3eda8c6 100644
|
||||
--- a/src/com/android/settings/treble/TrebleSettings.java
|
||||
+++ b/src/com/android/settings/treble/TrebleSettings.java
|
||||
@@ -36,6 +36,8 @@ public class TrebleSettings extends DashboardFragment {
|
||||
controllers.add(new DisableSoundvolumeEffectPreferenceController(context));
|
||||
controllers.add(new ScreenResolutionRefreshRatePreferenceController(context));
|
||||
controllers.add(new UseAlternativeBacklightScalePreferenceController(context));
|
||||
+ controllers.add(new InstallImsApkPreferenceController(context));
|
||||
+ controllers.add(new OverrideVolteAvailabilityPreferenceController(context));
|
||||
return controllers;
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
From 75e694dddc0a06a097983f0a8674849f3cec5fb6 Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Sat, 10 Dec 2022 12:04:37 +0000
|
||||
Subject: [PATCH 4/8] TrebleSettings: Disable A2DP offload
|
||||
|
||||
Change-Id: I737f49d146f83d96793f4436850529e3c528acbe
|
||||
---
|
||||
res/values/strings.xml | 2 +
|
||||
res/xml/treble_settings.xml | 4 ++
|
||||
...isableA2DPOffloadPreferenceController.java | 53 +++++++++++++++++++
|
||||
.../settings/treble/TrebleSettings.java | 1 +
|
||||
4 files changed, 60 insertions(+)
|
||||
create mode 100644 src/com/android/settings/treble/DisableA2DPOffloadPreferenceController.java
|
||||
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index 1df0fe22f1..8f1056da77 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -6890,6 +6890,8 @@
|
||||
<string name="use_alternative_audio_policy_title">Use alternative audio policy</string>
|
||||
<!-- Treble settings screen, disable soundvolume effect title -->
|
||||
<string name="disable_soundvolume_effect_title">Disable soundvolume effect</string>
|
||||
+ <!-- Treble settings screen, disable A2DP offload title -->
|
||||
+ <string name="disable_a2dp_offload_title">Disable A2DP offload</string>
|
||||
<!-- Treble settings screen, screen resolution and refresh rate settings title -->
|
||||
<string name="screen_resolution_refresh_rate_title">Screen resolution & refresh rate</string>
|
||||
<!-- Treble settings screen, use alternative backlight scale title -->
|
||||
diff --git a/res/xml/treble_settings.xml b/res/xml/treble_settings.xml
|
||||
index 09e6bc5d00..b58e7a1282 100644
|
||||
--- a/res/xml/treble_settings.xml
|
||||
+++ b/res/xml/treble_settings.xml
|
||||
@@ -17,6 +17,10 @@
|
||||
android:key="disable_soundvolume_effect"
|
||||
android:title="@string/disable_soundvolume_effect_title" />
|
||||
|
||||
+ <SwitchPreference
|
||||
+ android:key="disable_a2dp_offload"
|
||||
+ android:title="@string/disable_a2dp_offload_title" />
|
||||
+
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
diff --git a/src/com/android/settings/treble/DisableA2DPOffloadPreferenceController.java b/src/com/android/settings/treble/DisableA2DPOffloadPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..f53103160d
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/DisableA2DPOffloadPreferenceController.java
|
||||
@@ -0,0 +1,53 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class DisableA2DPOffloadPreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String DISABLE_A2DP_OFFLOAD_KEY = "disable_a2dp_offload";
|
||||
+ private static final String A2DP_OFFLOAD_DISABLED_PROPERTY = "persist.bluetooth.a2dp_offload.disabled";
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public DisableA2DPOffloadPreferenceController(Context context) {
|
||||
+ super(context, DISABLE_A2DP_OFFLOAD_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return DISABLE_A2DP_OFFLOAD_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = SystemProperties.getBoolean(A2DP_OFFLOAD_DISABLED_PROPERTY, false);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, String.valueOf((boolean) newValue));
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/TrebleSettings.java b/src/com/android/settings/treble/TrebleSettings.java
|
||||
index 50e3eda8c6..5e9b7f88e2 100644
|
||||
--- a/src/com/android/settings/treble/TrebleSettings.java
|
||||
+++ b/src/com/android/settings/treble/TrebleSettings.java
|
||||
@@ -34,6 +34,7 @@ public class TrebleSettings extends DashboardFragment {
|
||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||
controllers.add(new UseAlternativeAudioPolicyPreferenceController(context));
|
||||
controllers.add(new DisableSoundvolumeEffectPreferenceController(context));
|
||||
+ controllers.add(new DisableA2DPOffloadPreferenceController(context));
|
||||
controllers.add(new ScreenResolutionRefreshRatePreferenceController(context));
|
||||
controllers.add(new UseAlternativeBacklightScalePreferenceController(context));
|
||||
controllers.add(new InstallImsApkPreferenceController(context));
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
From 51821d58357b577cbc62ce5a2e9d0b4f19e686b3 Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Sat, 10 Dec 2022 14:16:50 +0000
|
||||
Subject: [PATCH 5/8] TrebleSettings: Alternative audio jack detection
|
||||
|
||||
Change-Id: I5d6d48f26a4a2134fd6edf996eca89a1fc42e6de
|
||||
---
|
||||
res/values/strings.xml | 2 +
|
||||
res/xml/treble_settings.xml | 4 ++
|
||||
.../settings/treble/TrebleSettings.java | 1 +
|
||||
...udioJackDetectionPreferenceController.java | 53 +++++++++++++++++++
|
||||
4 files changed, 60 insertions(+)
|
||||
create mode 100644 src/com/android/settings/treble/UseAlternativeAudioJackDetectionPreferenceController.java
|
||||
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index 8f1056da77..deb2cf9d77 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -6892,6 +6892,8 @@
|
||||
<string name="disable_soundvolume_effect_title">Disable soundvolume effect</string>
|
||||
<!-- Treble settings screen, disable A2DP offload title -->
|
||||
<string name="disable_a2dp_offload_title">Disable A2DP offload</string>
|
||||
+ <!-- Treble settings screen, use alternative audio jack detection title -->
|
||||
+ <string name="use_alternative_audio_jack_detection_title">Use alternative audio jack detection</string>
|
||||
<!-- Treble settings screen, screen resolution and refresh rate settings title -->
|
||||
<string name="screen_resolution_refresh_rate_title">Screen resolution & refresh rate</string>
|
||||
<!-- Treble settings screen, use alternative backlight scale title -->
|
||||
diff --git a/res/xml/treble_settings.xml b/res/xml/treble_settings.xml
|
||||
index b58e7a1282..47097a14c7 100644
|
||||
--- a/res/xml/treble_settings.xml
|
||||
+++ b/res/xml/treble_settings.xml
|
||||
@@ -21,6 +21,10 @@
|
||||
android:key="disable_a2dp_offload"
|
||||
android:title="@string/disable_a2dp_offload_title" />
|
||||
|
||||
+ <SwitchPreference
|
||||
+ android:key="use_alternative_audio_jack_detection"
|
||||
+ android:title="@string/use_alternative_audio_jack_detection_title" />
|
||||
+
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
diff --git a/src/com/android/settings/treble/TrebleSettings.java b/src/com/android/settings/treble/TrebleSettings.java
|
||||
index 5e9b7f88e2..09aa001e82 100644
|
||||
--- a/src/com/android/settings/treble/TrebleSettings.java
|
||||
+++ b/src/com/android/settings/treble/TrebleSettings.java
|
||||
@@ -35,6 +35,7 @@ public class TrebleSettings extends DashboardFragment {
|
||||
controllers.add(new UseAlternativeAudioPolicyPreferenceController(context));
|
||||
controllers.add(new DisableSoundvolumeEffectPreferenceController(context));
|
||||
controllers.add(new DisableA2DPOffloadPreferenceController(context));
|
||||
+ controllers.add(new UseAlternativeAudioJackDetectionPreferenceController(context));
|
||||
controllers.add(new ScreenResolutionRefreshRatePreferenceController(context));
|
||||
controllers.add(new UseAlternativeBacklightScalePreferenceController(context));
|
||||
controllers.add(new InstallImsApkPreferenceController(context));
|
||||
diff --git a/src/com/android/settings/treble/UseAlternativeAudioJackDetectionPreferenceController.java b/src/com/android/settings/treble/UseAlternativeAudioJackDetectionPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..0d60b72db1
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/UseAlternativeAudioJackDetectionPreferenceController.java
|
||||
@@ -0,0 +1,53 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class UseAlternativeAudioJackDetectionPreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String USE_ALTERNATIVE_AUDIO_JACK_DETECTION_KEY = "use_alternative_audio_jack_detection";
|
||||
+ private static final String DEVINPUT_JACK_PROPERTY = "persist.sys.overlay.devinputjack";
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public UseAlternativeAudioJackDetectionPreferenceController(Context context) {
|
||||
+ super(context, USE_ALTERNATIVE_AUDIO_JACK_DETECTION_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return USE_ALTERNATIVE_AUDIO_JACK_DETECTION_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = SystemProperties.getBoolean(DEVINPUT_JACK_PROPERTY, false);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ SystemProperties.set(DEVINPUT_JACK_PROPERTY, String.valueOf((boolean) newValue));
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
From 77dfd4ad7da5a0320f143b06324da05a212229fc Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Sat, 17 Dec 2022 10:29:05 +0000
|
||||
Subject: [PATCH 6/8] TrebleSettings: Override minimum brightness
|
||||
|
||||
Change-Id: I6d621f7dd04b675b6e2e851a5e474dc9a9841eb0
|
||||
---
|
||||
res/values/strings.xml | 2 +
|
||||
res/xml/treble_settings.xml | 4 ++
|
||||
...MinimumBrightnessPreferenceController.java | 53 +++++++++++++++++++
|
||||
.../settings/treble/TrebleSettings.java | 1 +
|
||||
4 files changed, 60 insertions(+)
|
||||
create mode 100644 src/com/android/settings/treble/OverrideMinimumBrightnessPreferenceController.java
|
||||
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index deb2cf9d77..865a9c4f5f 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -6898,6 +6898,8 @@
|
||||
<string name="screen_resolution_refresh_rate_title">Screen resolution & refresh rate</string>
|
||||
<!-- Treble settings screen, use alternative backlight scale title -->
|
||||
<string name="use_alternative_backlight_scale_title">Use alternative backlight scale</string>
|
||||
+ <!-- Treble settings screen, override minimum brightness title -->
|
||||
+ <string name="override_minimum_brightness_title">Override minimum brightness</string>
|
||||
<!-- Treble settings screen, install IMS APK title -->
|
||||
<string name="install_ims_apk_title">Install IMS APK</string>
|
||||
<!-- Treble settings screen, install IMS APK toasts -->
|
||||
diff --git a/res/xml/treble_settings.xml b/res/xml/treble_settings.xml
|
||||
index 47097a14c7..5c18461b69 100644
|
||||
--- a/res/xml/treble_settings.xml
|
||||
+++ b/res/xml/treble_settings.xml
|
||||
@@ -38,6 +38,10 @@
|
||||
android:key="use_alternative_backlight_scale"
|
||||
android:title="@string/use_alternative_backlight_scale_title" />
|
||||
|
||||
+ <SwitchPreference
|
||||
+ android:key="override_minimum_brightness"
|
||||
+ android:title="@string/override_minimum_brightness_title" />
|
||||
+
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
diff --git a/src/com/android/settings/treble/OverrideMinimumBrightnessPreferenceController.java b/src/com/android/settings/treble/OverrideMinimumBrightnessPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..95200fbeaa
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/OverrideMinimumBrightnessPreferenceController.java
|
||||
@@ -0,0 +1,53 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class OverrideMinimumBrightnessPreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String OVERRIDE_MINIMUM_BRIGHTNESS_KEY = "override_minimum_brightness";
|
||||
+ private static final String MINIMAL_BRIGHTNESS_PROPERTY = "persist.sys.overlay.minimal_brightness";
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public OverrideMinimumBrightnessPreferenceController(Context context) {
|
||||
+ super(context, OVERRIDE_MINIMUM_BRIGHTNESS_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return OVERRIDE_MINIMUM_BRIGHTNESS_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = SystemProperties.getBoolean(MINIMAL_BRIGHTNESS_PROPERTY, false);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ SystemProperties.set(MINIMAL_BRIGHTNESS_PROPERTY, String.valueOf((boolean) newValue));
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/TrebleSettings.java b/src/com/android/settings/treble/TrebleSettings.java
|
||||
index 09aa001e82..39a0e19972 100644
|
||||
--- a/src/com/android/settings/treble/TrebleSettings.java
|
||||
+++ b/src/com/android/settings/treble/TrebleSettings.java
|
||||
@@ -38,6 +38,7 @@ public class TrebleSettings extends DashboardFragment {
|
||||
controllers.add(new UseAlternativeAudioJackDetectionPreferenceController(context));
|
||||
controllers.add(new ScreenResolutionRefreshRatePreferenceController(context));
|
||||
controllers.add(new UseAlternativeBacklightScalePreferenceController(context));
|
||||
+ controllers.add(new OverrideMinimumBrightnessPreferenceController(context));
|
||||
controllers.add(new InstallImsApkPreferenceController(context));
|
||||
controllers.add(new OverrideVolteAvailabilityPreferenceController(context));
|
||||
return controllers;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
From 47061bc2ff7442d892e488a0a369d61d7ecdfc0c Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Sat, 17 Dec 2022 11:00:38 +0000
|
||||
Subject: [PATCH 7/8] TrebleSettings: Override navbar availability
|
||||
|
||||
Change-Id: I7c771caf6274543fed23a8cc47411bf8c369ac2c
|
||||
---
|
||||
res/values/strings.xml | 4 ++
|
||||
res/xml/treble_settings.xml | 9 ++++
|
||||
...avbarAvailabilityPreferenceController.java | 53 +++++++++++++++++++
|
||||
.../settings/treble/TrebleSettings.java | 1 +
|
||||
4 files changed, 67 insertions(+)
|
||||
create mode 100644 src/com/android/settings/treble/OverrideNavbarAvailabilityPreferenceController.java
|
||||
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index 865a9c4f5f..67d944d9bf 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -6885,6 +6885,8 @@
|
||||
<string name="treble_settings_category_name_display">Display</string>
|
||||
<!-- IMS category name [CHAR LIMIT=none] -->
|
||||
<string name="treble_settings_category_name_ims">IMS</string>
|
||||
+ <!-- UI category name [CHAR LIMIT=none] -->
|
||||
+ <string name="treble_settings_category_name_ui">UI</string>
|
||||
|
||||
<!-- Treble settings screen, use alternative audio policy title -->
|
||||
<string name="use_alternative_audio_policy_title">Use alternative audio policy</string>
|
||||
@@ -6907,6 +6909,8 @@
|
||||
<string name="install_ims_apk_toast_completed">IMS APK installed. Reboot required.</string>
|
||||
<!-- Treble settings screen, override VoLTE availability title -->
|
||||
<string name="override_volte_availability_title">Override VoLTE availability</string>
|
||||
+ <!-- Treble settings screen, override navbar availability title -->
|
||||
+ <string name="override_navbar_availability_title">Override navigation bar availability</string>
|
||||
|
||||
<!-- Title for setting tile leading to network and Internet settings [CHAR LIMIT=40]-->
|
||||
<string name="network_dashboard_title">Network & internet</string>
|
||||
diff --git a/res/xml/treble_settings.xml b/res/xml/treble_settings.xml
|
||||
index 5c18461b69..250a8ee75a 100644
|
||||
--- a/res/xml/treble_settings.xml
|
||||
+++ b/res/xml/treble_settings.xml
|
||||
@@ -57,4 +57,13 @@
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
+ <PreferenceCategory
|
||||
+ android:title="@string/treble_settings_category_name_ui">
|
||||
+
|
||||
+ <SwitchPreference
|
||||
+ android:key="override_navbar_availability"
|
||||
+ android:title="@string/override_navbar_availability_title" />
|
||||
+
|
||||
+ </PreferenceCategory>
|
||||
+
|
||||
</PreferenceScreen>
|
||||
diff --git a/src/com/android/settings/treble/OverrideNavbarAvailabilityPreferenceController.java b/src/com/android/settings/treble/OverrideNavbarAvailabilityPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..d6baa33739
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/OverrideNavbarAvailabilityPreferenceController.java
|
||||
@@ -0,0 +1,53 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class OverrideNavbarAvailabilityPreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String OVERRIDE_NAVBAR_AVAILABILITY_KEY = "override_navbar_availability";
|
||||
+ private static final String TREBLE_MAINKEYS_PROPERTY = "persist.sys.treble.mainkeys";
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public OverrideNavbarAvailabilityPreferenceController(Context context) {
|
||||
+ super(context, OVERRIDE_NAVBAR_AVAILABILITY_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return OVERRIDE_NAVBAR_AVAILABILITY_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = (SystemProperties.getInt(TREBLE_MAINKEYS_PROPERTY, 0) == 0);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ SystemProperties.set(TREBLE_MAINKEYS_PROPERTY, ((boolean) newValue) ? "0" : "1");
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/TrebleSettings.java b/src/com/android/settings/treble/TrebleSettings.java
|
||||
index 39a0e19972..634b7ce3ce 100644
|
||||
--- a/src/com/android/settings/treble/TrebleSettings.java
|
||||
+++ b/src/com/android/settings/treble/TrebleSettings.java
|
||||
@@ -41,6 +41,7 @@ public class TrebleSettings extends DashboardFragment {
|
||||
controllers.add(new OverrideMinimumBrightnessPreferenceController(context));
|
||||
controllers.add(new InstallImsApkPreferenceController(context));
|
||||
controllers.add(new OverrideVolteAvailabilityPreferenceController(context));
|
||||
+ controllers.add(new OverrideNavbarAvailabilityPreferenceController(context));
|
||||
return controllers;
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
From 3b2b06803b579a2572ca1707aee7b56d1bfd0cff Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Sat, 17 Dec 2022 14:30:52 +0000
|
||||
Subject: [PATCH 8/8] TrebleSettings: Securize on-demand
|
||||
|
||||
Change-Id: I76f54620277ccdc41636d74d1afa6330c382ce6a
|
||||
---
|
||||
res/values/strings.xml | 6 +++
|
||||
res/xml/treble_settings.xml | 10 ++++
|
||||
.../treble/SecurizePreferenceController.java | 53 +++++++++++++++++++
|
||||
.../settings/treble/TrebleSettings.java | 1 +
|
||||
4 files changed, 70 insertions(+)
|
||||
create mode 100644 src/com/android/settings/treble/SecurizePreferenceController.java
|
||||
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index 67d944d9bf..f034a9ff39 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -6885,6 +6885,8 @@
|
||||
<string name="treble_settings_category_name_display">Display</string>
|
||||
<!-- IMS category name [CHAR LIMIT=none] -->
|
||||
<string name="treble_settings_category_name_ims">IMS</string>
|
||||
+ <!-- System category name [CHAR LIMIT=none] -->
|
||||
+ <string name="treble_settings_category_name_system">System</string>
|
||||
<!-- UI category name [CHAR LIMIT=none] -->
|
||||
<string name="treble_settings_category_name_ui">UI</string>
|
||||
|
||||
@@ -6909,6 +6911,10 @@
|
||||
<string name="install_ims_apk_toast_completed">IMS APK installed. Reboot required.</string>
|
||||
<!-- Treble settings screen, override VoLTE availability title -->
|
||||
<string name="override_volte_availability_title">Override VoLTE availability</string>
|
||||
+ <!-- Treble settings screen, securize title -->
|
||||
+ <string name="securize_title">Spoof system properties</string>
|
||||
+ <!-- Treble settings screen, securize summary -->
|
||||
+ <string name="securize_summary">For better chances of passing SafetyNet\nMight cause bootloop on some devices</string>
|
||||
<!-- Treble settings screen, override navbar availability title -->
|
||||
<string name="override_navbar_availability_title">Override navigation bar availability</string>
|
||||
|
||||
diff --git a/res/xml/treble_settings.xml b/res/xml/treble_settings.xml
|
||||
index 250a8ee75a..1f24352421 100644
|
||||
--- a/res/xml/treble_settings.xml
|
||||
+++ b/res/xml/treble_settings.xml
|
||||
@@ -57,6 +57,16 @@
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
+ <PreferenceCategory
|
||||
+ android:title="@string/treble_settings_category_name_system">
|
||||
+
|
||||
+ <SwitchPreference
|
||||
+ android:key="securize"
|
||||
+ android:title="@string/securize_title"
|
||||
+ android:summary="@string/securize_summary" />
|
||||
+
|
||||
+ </PreferenceCategory>
|
||||
+
|
||||
<PreferenceCategory
|
||||
android:title="@string/treble_settings_category_name_ui">
|
||||
|
||||
diff --git a/src/com/android/settings/treble/SecurizePreferenceController.java b/src/com/android/settings/treble/SecurizePreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..0b59bbad81
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/treble/SecurizePreferenceController.java
|
||||
@@ -0,0 +1,53 @@
|
||||
+package com.android.settings.treble;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.os.SystemProperties;
|
||||
+
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+
|
||||
+public class SecurizePreferenceController extends BasePreferenceController
|
||||
+ implements Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String SECURIZE_KEY = "securize";
|
||||
+ private static final String SECURIZE_PROPERTY = "persist.sys.treble.securize";
|
||||
+
|
||||
+ private SwitchPreference mSwitchPreference;
|
||||
+
|
||||
+ public SecurizePreferenceController(Context context) {
|
||||
+ super(context, SECURIZE_KEY);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ return AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return SECURIZE_KEY;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ mSwitchPreference = screen.findPreference(getPreferenceKey());
|
||||
+ super.displayPreference(screen);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean checked = SystemProperties.getBoolean(SECURIZE_PROPERTY, false);
|
||||
+ mSwitchPreference.setChecked(checked);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ SystemProperties.set(SECURIZE_PROPERTY, String.valueOf((boolean) newValue));
|
||||
+ mSwitchPreference.setChecked((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/com/android/settings/treble/TrebleSettings.java b/src/com/android/settings/treble/TrebleSettings.java
|
||||
index 634b7ce3ce..149c18f231 100644
|
||||
--- a/src/com/android/settings/treble/TrebleSettings.java
|
||||
+++ b/src/com/android/settings/treble/TrebleSettings.java
|
||||
@@ -41,6 +41,7 @@ public class TrebleSettings extends DashboardFragment {
|
||||
controllers.add(new OverrideMinimumBrightnessPreferenceController(context));
|
||||
controllers.add(new InstallImsApkPreferenceController(context));
|
||||
controllers.add(new OverrideVolteAvailabilityPreferenceController(context));
|
||||
+ controllers.add(new SecurizePreferenceController(context));
|
||||
controllers.add(new OverrideNavbarAvailabilityPreferenceController(context));
|
||||
return controllers;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
Reference in New Issue
Block a user