Initial unified commit for Android 13, with TrebleDroid GSI target, syncing up to 20221111
This commit is contained in:
commit
cd68e3dcbc
27
patches_platform/build_make/0001-build-Remove-llkd.patch
Normal file
27
patches_platform/build_make/0001-build-Remove-llkd.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
From 90eaa68455703e85c5f97d0b13945bd04351e24c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 14 Oct 2021 12:20:52 +0000
|
||||||
|
Subject: [PATCH] build: Remove llkd
|
||||||
|
|
||||||
|
...until someone figures out why Genshin Impact fails it
|
||||||
|
|
||||||
|
Change-Id: I29384a820a0c07b29d3f11d7039bed40eeaee926
|
||||||
|
---
|
||||||
|
target/product/base_system.mk | 1 -
|
||||||
|
1 file changed, 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/target/product/base_system.mk b/target/product/base_system.mk
|
||||||
|
index b5b41f3be..c18a6dc03 100644
|
||||||
|
--- a/target/product/base_system.mk
|
||||||
|
+++ b/target/product/base_system.mk
|
||||||
|
@@ -195,7 +195,6 @@ PRODUCT_PACKAGES += \
|
||||||
|
libwilhelm \
|
||||||
|
linker \
|
||||||
|
linkerconfig \
|
||||||
|
- llkd \
|
||||||
|
lmkd \
|
||||||
|
LocalTransport \
|
||||||
|
locksettings \
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,126 @@
|
|||||||
|
From b94084cca9202c12ea41de9f6f23785c818a64c0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 13 Jan 2022 14:22:24 +0000
|
||||||
|
Subject: [PATCH 01/12] Add SPenPointerOverlay
|
||||||
|
|
||||||
|
Toggle this overlay with property "persist.ui.spen.pointer"
|
||||||
|
|
||||||
|
Change-Id: I21f7e05cf8ebd74c950dfb20cf7eee99bfe22988
|
||||||
|
---
|
||||||
|
packages/overlays/Android.mk | 1 +
|
||||||
|
.../overlays/SPenPointerOverlay/Android.bp | 28 ++++++++++++++++++
|
||||||
|
.../SPenPointerOverlay/AndroidManifest.xml | 23 ++++++++++++++
|
||||||
|
.../sem_pointer_spot_hovering_spen.png | Bin 0 -> 411 bytes
|
||||||
|
.../res/drawable/pointer_arrow_icon.xml | 5 ++++
|
||||||
|
5 files changed, 57 insertions(+)
|
||||||
|
create mode 100644 packages/overlays/SPenPointerOverlay/Android.bp
|
||||||
|
create mode 100644 packages/overlays/SPenPointerOverlay/AndroidManifest.xml
|
||||||
|
create mode 100644 packages/overlays/SPenPointerOverlay/res/drawable-xxhdpi/sem_pointer_spot_hovering_spen.png
|
||||||
|
create mode 100644 packages/overlays/SPenPointerOverlay/res/drawable/pointer_arrow_icon.xml
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/Android.mk b/packages/overlays/Android.mk
|
||||||
|
index 69641e69a9f2..36ec11af3068 100644
|
||||||
|
--- a/packages/overlays/Android.mk
|
||||||
|
+++ b/packages/overlays/Android.mk
|
||||||
|
@@ -31,6 +31,7 @@ LOCAL_REQUIRED_MODULES := \
|
||||||
|
NavigationBarModeGesturalOverlayNarrowBack \
|
||||||
|
NavigationBarModeGesturalOverlayWideBack \
|
||||||
|
NavigationBarModeGesturalOverlayExtraWideBack \
|
||||||
|
+ SPenPointerOverlay \
|
||||||
|
preinstalled-packages-platform-overlays.xml
|
||||||
|
|
||||||
|
include $(BUILD_PHONY_PACKAGE)
|
||||||
|
diff --git a/packages/overlays/SPenPointerOverlay/Android.bp b/packages/overlays/SPenPointerOverlay/Android.bp
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..7632ebd43ef6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/packages/overlays/SPenPointerOverlay/Android.bp
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+//
|
||||||
|
+// Copyright 2021, The Android Open Source 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
|
||||||
|
+//
|
||||||
|
+// 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.
|
||||||
|
+// See the License for the specific language governing permissions and
|
||||||
|
+// limitations under the License.
|
||||||
|
+//
|
||||||
|
+package {
|
||||||
|
+ // See: http://go/android-license-faq
|
||||||
|
+ // A large-scale-change added 'default_applicable_licenses' to import
|
||||||
|
+ // all of the 'license_kinds' from "frameworks_base_license"
|
||||||
|
+ // to get the below license kinds:
|
||||||
|
+ // SPDX-license-identifier-Apache-2.0
|
||||||
|
+ default_applicable_licenses: ["frameworks_base_license"],
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+runtime_resource_overlay {
|
||||||
|
+ name: "SPenPointerOverlay",
|
||||||
|
+ product_specific: true,
|
||||||
|
+}
|
||||||
|
diff --git a/packages/overlays/SPenPointerOverlay/AndroidManifest.xml b/packages/overlays/SPenPointerOverlay/AndroidManifest.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..b785214f854b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/packages/overlays/SPenPointerOverlay/AndroidManifest.xml
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+<!--
|
||||||
|
+ ~ Copyright (C) 2021 The Android Open Source 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
|
||||||
|
+ ~
|
||||||
|
+ ~ 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.
|
||||||
|
+ ~ See the License for the specific language governing permissions and
|
||||||
|
+ ~ limitations under the License.
|
||||||
|
+ -->
|
||||||
|
+
|
||||||
|
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
+ package="com.samsung.android.spenpointer.overlay"
|
||||||
|
+ android:versionCode="1"
|
||||||
|
+ android:versionName="1.0">
|
||||||
|
+ <overlay android:targetPackage="android" android:priority="5932" android:isStatic="true"
|
||||||
|
+ android:requiredSystemPropertyName="persist.ui.spen.pointer" android:requiredSystemPropertyValue="true"/>
|
||||||
|
+</manifest>
|
||||||
|
diff --git a/packages/overlays/SPenPointerOverlay/res/drawable-xxhdpi/sem_pointer_spot_hovering_spen.png b/packages/overlays/SPenPointerOverlay/res/drawable-xxhdpi/sem_pointer_spot_hovering_spen.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..b73246c80a95e0bceeb8c09aacd2653722fca2d2
|
||||||
|
GIT binary patch
|
||||||
|
literal 411
|
||||||
|
zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TG?EyX^u0VPYDww}y>9XB>H{O1*
|
||||||
|
z{q+Z+%%XMcH{QCp_4%7Ek6&zi^&Z52_8N#bKYY6T$G`bYmOylGdHNEl2EyKW`#w-H
|
||||||
|
zMEkav?|=xXa@&iyKv|#(o9;XSGJv*hefA2d9ViRrHpmHroTOV4<QL2kefT?*&XynF
|
||||||
|
zf9jt6d~bTxr(K#H%-fm6)$T^@`96*P!_O$D=#P=#_iokL5u<mvYQ}e<#%Z1|jv*T7
|
||||||
|
z-(HO6Z&DCpO9*-59T;HT8)CHh%)kHdv-@V7U0D0tD*XMooHrlj82&Lg8FU>wkZ<5N
|
||||||
|
zBf!g`Yhiojq)$5MjpwPIIqY#_(VA78COitTt~#=3<I2pBClgEGRn7j@r_s({E14^`
|
||||||
|
zzN)C=(stXhXOBPbPTyLVZ~8%?D9+x@`{Nq(tjK9wr(Jhj*%s6+*nEHflkLxVMFlvw
|
||||||
|
UdB5Fp8R$X=Pgg&ebxsLQ0B%Ow$N&HU
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/SPenPointerOverlay/res/drawable/pointer_arrow_icon.xml b/packages/overlays/SPenPointerOverlay/res/drawable/pointer_arrow_icon.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..f35255c5f961
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/packages/overlays/SPenPointerOverlay/res/drawable/pointer_arrow_icon.xml
|
||||||
|
@@ -0,0 +1,5 @@
|
||||||
|
+<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
+<pointer-icon xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
+ android:bitmap="@drawable/sem_pointer_spot_hovering_spen"
|
||||||
|
+ android:hotSpotX="5dp"
|
||||||
|
+ android:hotSpotY="5dp" />
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,40 @@
|
|||||||
|
From 5d4c54f6956862135a6066f4c0e322690145cce8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 5 Apr 2018 10:01:19 +0800
|
||||||
|
Subject: [PATCH 02/12] Disable vendor mismatch warning
|
||||||
|
|
||||||
|
Change-Id: Ieb8fe91e2f02462f074312ed0f4885d183e9780b
|
||||||
|
---
|
||||||
|
.../server/wm/ActivityTaskManagerService.java | 16 ++--------------
|
||||||
|
1 file changed, 2 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
|
||||||
|
index 43b66d181326..1f0d60cf3a38 100644
|
||||||
|
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
|
||||||
|
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
|
||||||
|
@@ -5696,20 +5696,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Build.isBuildConsistent()) {
|
||||||
|
- Slog.e(TAG, "Build fingerprint is not consistent, warning user");
|
||||||
|
- mUiHandler.post(() -> {
|
||||||
|
- if (mShowDialogs) {
|
||||||
|
- AlertDialog d = new BaseErrorDialog(mUiContext);
|
||||||
|
- d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR);
|
||||||
|
- d.setCancelable(false);
|
||||||
|
- d.setTitle(mUiContext.getText(R.string.android_system_label));
|
||||||
|
- d.setMessage(mUiContext.getText(R.string.system_error_manufacturer));
|
||||||
|
- d.setButton(DialogInterface.BUTTON_POSITIVE,
|
||||||
|
- mUiContext.getText(R.string.ok),
|
||||||
|
- mUiHandler.obtainMessage(DISMISS_DIALOG_UI_MSG, d));
|
||||||
|
- d.show();
|
||||||
|
- }
|
||||||
|
- });
|
||||||
|
+ Slog.e(TAG, "Build fingerprint is not consistent");
|
||||||
|
+ // Do not emit warning about vendor mismatch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
From 4dc4d1ec5be6658812b82c09d745975674707572 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 16 Oct 2021 02:23:48 +0000
|
||||||
|
Subject: [PATCH 03/12] UI: Adjust default navbar layouts
|
||||||
|
|
||||||
|
- Slightly tighten nodpi layout
|
||||||
|
- Remove sw372dp layout - looks terrible, probably meant for legacy phablets, but most modern phones qualify
|
||||||
|
|
||||||
|
Change-Id: Ia32f5d92e6c9e36560c53e7dffce7d2c29a81fe5
|
||||||
|
---
|
||||||
|
.../SystemUI/res/values-sw372dp/config.xml | 25 -------------------
|
||||||
|
packages/SystemUI/res/values/config.xml | 2 +-
|
||||||
|
2 files changed, 1 insertion(+), 26 deletions(-)
|
||||||
|
delete mode 100644 packages/SystemUI/res/values-sw372dp/config.xml
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res/values-sw372dp/config.xml b/packages/SystemUI/res/values-sw372dp/config.xml
|
||||||
|
deleted file mode 100644
|
||||||
|
index 07b797a32428..000000000000
|
||||||
|
--- a/packages/SystemUI/res/values-sw372dp/config.xml
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,25 +0,0 @@
|
||||||
|
-<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
-<!--
|
||||||
|
-/*
|
||||||
|
-** Copyright 2017, The Android Open Source 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
|
||||||
|
-**
|
||||||
|
-** 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.
|
||||||
|
-** See the License for the specific language governing permissions and
|
||||||
|
-** limitations under the License.
|
||||||
|
-*/
|
||||||
|
--->
|
||||||
|
-
|
||||||
|
-<!-- These resources are around just to allow their values to be customized
|
||||||
|
- for different hardware and product builds. -->
|
||||||
|
-<resources>
|
||||||
|
- <!-- Nav bar button default ordering/layout -->
|
||||||
|
- <string name="config_navBarLayout" translatable="false">left[.25W],back[.5WC];home;recent[.5WC],right[.25W]</string>
|
||||||
|
-</resources>
|
||||||
|
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
|
||||||
|
index ba31e7f1f1d1..c4625e7e784d 100644
|
||||||
|
--- a/packages/SystemUI/res/values/config.xml
|
||||||
|
+++ b/packages/SystemUI/res/values/config.xml
|
||||||
|
@@ -307,7 +307,7 @@
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Nav bar button default ordering/layout -->
|
||||||
|
- <string name="config_navBarLayout" translatable="false">left[.5W],back[1WC];home;recent[1WC],right[.5W]</string>
|
||||||
|
+ <string name="config_navBarLayout" translatable="false">left[.6W],back[1WC];home;recent[1WC],right[.6W]</string>
|
||||||
|
<string name="config_navBarLayoutQuickstep" translatable="false">back[1.7WC];home;contextual[1.7WC]</string>
|
||||||
|
<string name="config_navBarLayoutHandle" translatable="false">back[70AC];home_handle;ime_switcher[70AC]</string>
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From 06c01a490bf6379a8f9d8e4e8499add7a4ea2cbc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 10 Jan 2021 11:44:29 +0000
|
||||||
|
Subject: [PATCH 04/12] UI: Disable wallpaper zoom
|
||||||
|
|
||||||
|
It does little more than inducing motion sickness
|
||||||
|
|
||||||
|
Change-Id: I78cc5484930b27f172cd8d8a5bd9042dce3478d0
|
||||||
|
---
|
||||||
|
core/res/res/values/config.xml | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
||||||
|
index 34b5589bf81f..be2dbc3cd5dc 100644
|
||||||
|
--- a/core/res/res/values/config.xml
|
||||||
|
+++ b/core/res/res/values/config.xml
|
||||||
|
@@ -5029,7 +5029,7 @@
|
||||||
|
<item name="config_wallpaperMinScale" format="float" type="dimen">1</item>
|
||||||
|
|
||||||
|
<!-- The max scale for the wallpaper when it's zoomed in -->
|
||||||
|
- <item name="config_wallpaperMaxScale" format="float" type="dimen">1.10</item>
|
||||||
|
+ <item name="config_wallpaperMaxScale" format="float" type="dimen">1</item>
|
||||||
|
|
||||||
|
<!-- If true, the wallpaper will scale regardless of the value of shouldZoomOutWallpaper() -->
|
||||||
|
<bool name="config_alwaysScaleWallpaper">false</bool>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
From 202ed6730a9b3182c33ef3d5169ff026ab269a2a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 25 Sep 2022 02:20:52 +0000
|
||||||
|
Subject: [PATCH 05/12] UI: Follow Monet and light/dark theme in user 1 icon
|
||||||
|
|
||||||
|
Change-Id: I755077c6003c39ddc9428da1defe6a6ddd0e5ff8
|
||||||
|
---
|
||||||
|
core/res/res/values-night/colors.xml | 1 +
|
||||||
|
core/res/res/values/colors.xml | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/core/res/res/values-night/colors.xml b/core/res/res/values-night/colors.xml
|
||||||
|
index 33c9b95c5819..f3531caa47d9 100644
|
||||||
|
--- a/core/res/res/values-night/colors.xml
|
||||||
|
+++ b/core/res/res/values-night/colors.xml
|
||||||
|
@@ -33,6 +33,7 @@
|
||||||
|
|
||||||
|
<color name="overview_background">@color/overview_background_dark</color>
|
||||||
|
|
||||||
|
+ <color name="user_icon_1">@color/system_accent1_100</color>
|
||||||
|
<color name="user_icon_4">#fff439a0</color><!-- pink -->
|
||||||
|
<color name="user_icon_6">#ff4ecde6</color><!-- cyan -->
|
||||||
|
<color name="user_icon_7">#fffbbc04</color><!-- yellow -->
|
||||||
|
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
|
||||||
|
index b515abc4000f..87a4bb9da02b 100644
|
||||||
|
--- a/core/res/res/values/colors.xml
|
||||||
|
+++ b/core/res/res/values/colors.xml
|
||||||
|
@@ -174,7 +174,7 @@
|
||||||
|
<color name="system_notification_accent_color">#00000000</color>
|
||||||
|
|
||||||
|
<!-- Default user icon colors -->
|
||||||
|
- <color name="user_icon_1">#ffe46962</color><!-- red -->
|
||||||
|
+ <color name="user_icon_1">@color/system_accent1_600</color>
|
||||||
|
<color name="user_icon_2">#ffaf5cf7</color><!-- purple -->
|
||||||
|
<color name="user_icon_3">#ff4c8df6</color><!-- blue -->
|
||||||
|
<color name="user_icon_4">#fff439a0</color><!-- pink -->
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
From 448d7cb6f0689082ec63820f72e8ef221154fcfd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Wed, 3 Jun 2020 01:31:34 +0000
|
||||||
|
Subject: [PATCH 06/12] UI: Increase default status bar height
|
||||||
|
|
||||||
|
Change-Id: Ibbcf63159e19bb2bb2b1094ea07ab85917630b07
|
||||||
|
---
|
||||||
|
core/res/res/values/dimens.xml | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
|
||||||
|
index b754100a3ed6..1851b42c0f3b 100644
|
||||||
|
--- a/core/res/res/values/dimens.xml
|
||||||
|
+++ b/core/res/res/values/dimens.xml
|
||||||
|
@@ -41,7 +41,7 @@
|
||||||
|
|
||||||
|
<!-- The default height of the status bar used in {@link SystemBarUtils#getStatusBarHeight} to
|
||||||
|
calculate the status bar height. -->
|
||||||
|
- <dimen name="status_bar_height_default">24dp</dimen>
|
||||||
|
+ <dimen name="status_bar_height_default">28dp</dimen>
|
||||||
|
<!-- Height of the status bar.
|
||||||
|
Do not read this dimen directly. Use {@link SystemBarUtils#getStatusBarHeight} instead.
|
||||||
|
-->
|
||||||
|
@@ -49,7 +49,7 @@
|
||||||
|
<!-- Height of the status bar in portrait.
|
||||||
|
Do not read this dimen directly. Use {@link SystemBarUtils#getStatusBarHeight} instead.
|
||||||
|
-->
|
||||||
|
- <dimen name="status_bar_height_portrait">24dp</dimen>
|
||||||
|
+ <dimen name="status_bar_height_portrait">28dp</dimen>
|
||||||
|
<!-- Height of the status bar in landscape.
|
||||||
|
Do not read this dimen directly. Use {@link SystemBarUtils#getStatusBarHeight} instead.
|
||||||
|
-->
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,25 @@
|
|||||||
|
From 057673be164d2bc9cefbe2161bb8293909e72ae6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 25 Sep 2022 02:20:20 +0000
|
||||||
|
Subject: [PATCH 07/12] UI: Remove QS footer background
|
||||||
|
|
||||||
|
Change-Id: I68e82e0c5e3eddb2d3f767fe792b1436eae506ef
|
||||||
|
---
|
||||||
|
packages/SystemUI/res-keyguard/layout/footer_actions.xml | 1 -
|
||||||
|
1 file changed, 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res-keyguard/layout/footer_actions.xml b/packages/SystemUI/res-keyguard/layout/footer_actions.xml
|
||||||
|
index 876f275ab042..497181d9ee03 100644
|
||||||
|
--- a/packages/SystemUI/res-keyguard/layout/footer_actions.xml
|
||||||
|
+++ b/packages/SystemUI/res-keyguard/layout/footer_actions.xml
|
||||||
|
@@ -24,7 +24,6 @@
|
||||||
|
android:elevation="@dimen/qs_panel_elevation"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingBottom="@dimen/qs_footer_actions_bottom_padding"
|
||||||
|
- android:background="@drawable/qs_footer_actions_background"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
|
>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
From e5ac2b04e10ce9b900e9a3ca0c1c609a26e4aaee Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 19 Mar 2022 09:22:24 +0000
|
||||||
|
Subject: [PATCH 08/12] UI: Restore split-screen divider to pre-Sv2 looks
|
||||||
|
|
||||||
|
- Kill rounded corners - where two rectangles collide should be perfectly straight
|
||||||
|
- Make it black again - taskbar should mind its own business
|
||||||
|
|
||||||
|
Change-Id: I240b627793b615c82bd07ebd77638cde180ef80f
|
||||||
|
---
|
||||||
|
.../Shell/res/color/split_divider_background.xml | 4 ++--
|
||||||
|
.../wm/shell/common/split/SplitLayout.java | 15 +--------------
|
||||||
|
2 files changed, 3 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libs/WindowManager/Shell/res/color/split_divider_background.xml b/libs/WindowManager/Shell/res/color/split_divider_background.xml
|
||||||
|
index 049980803ee3..cd54ac26a7fd 100644
|
||||||
|
--- a/libs/WindowManager/Shell/res/color/split_divider_background.xml
|
||||||
|
+++ b/libs/WindowManager/Shell/res/color/split_divider_background.xml
|
||||||
|
@@ -15,5 +15,5 @@
|
||||||
|
~ limitations under the License.
|
||||||
|
-->
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
- <item android:color="@android:color/system_neutral1_500" android:lStar="15" />
|
||||||
|
-</selector>
|
||||||
|
\ No newline at end of file
|
||||||
|
+ <item android:color="@android:color/black" />
|
||||||
|
+</selector>
|
||||||
|
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
|
||||||
|
index c94455d9151a..5eedb1fdb824 100644
|
||||||
|
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
|
||||||
|
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
|
||||||
|
@@ -138,20 +138,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getDividerInsets(Resources resources, Display display) {
|
||||||
|
- final int dividerInset = resources.getDimensionPixelSize(
|
||||||
|
- com.android.internal.R.dimen.docked_stack_divider_insets);
|
||||||
|
-
|
||||||
|
- int radius = 0;
|
||||||
|
- RoundedCorner corner = display.getRoundedCorner(RoundedCorner.POSITION_TOP_LEFT);
|
||||||
|
- radius = corner != null ? Math.max(radius, corner.getRadius()) : radius;
|
||||||
|
- corner = display.getRoundedCorner(RoundedCorner.POSITION_TOP_RIGHT);
|
||||||
|
- radius = corner != null ? Math.max(radius, corner.getRadius()) : radius;
|
||||||
|
- corner = display.getRoundedCorner(RoundedCorner.POSITION_BOTTOM_RIGHT);
|
||||||
|
- radius = corner != null ? Math.max(radius, corner.getRadius()) : radius;
|
||||||
|
- corner = display.getRoundedCorner(RoundedCorner.POSITION_BOTTOM_LEFT);
|
||||||
|
- radius = corner != null ? Math.max(radius, corner.getRadius()) : radius;
|
||||||
|
-
|
||||||
|
- return Math.max(dividerInset, radius);
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Gets bounds of the primary split with screen based coordinate. */
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,64 @@
|
|||||||
|
From d9518a3ec3b88c36f16d8a7417d1d2c29bec25fc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Tue, 6 Oct 2020 01:41:16 +0000
|
||||||
|
Subject: [PATCH 09/12] UI: Revive navbar layout tuning via sysui_nav_bar
|
||||||
|
tunable
|
||||||
|
|
||||||
|
Google keeps fixing what ain't broken.
|
||||||
|
|
||||||
|
Change-Id: Ied7d7859e50fd0fcc346219964e747c5d5f4c352
|
||||||
|
---
|
||||||
|
.../navigationbar/NavigationBarInflaterView.java | 15 +++++++++++++++
|
||||||
|
1 file changed, 15 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java
|
||||||
|
index 51feed875337..5f0f9a220c31 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java
|
||||||
|
@@ -118,6 +118,7 @@ public class NavigationBarInflaterView extends FrameLayout
|
||||||
|
|
||||||
|
private boolean mInverseLayout;
|
||||||
|
private boolean mIsHintEnabled;
|
||||||
|
+ private boolean mUsingCustomLayout;
|
||||||
|
|
||||||
|
public NavigationBarInflaterView(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
@@ -177,6 +178,7 @@ public class NavigationBarInflaterView extends FrameLayout
|
||||||
|
super.onAttachedToWindow();
|
||||||
|
Dependency.get(TunerService.class).addTunable(this, NAV_BAR_INVERSE);
|
||||||
|
Dependency.get(TunerService.class).addTunable(this, KEY_NAVIGATION_HINT);
|
||||||
|
+ Dependency.get(TunerService.class).addTunable(this, NAV_BAR_VIEWS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@@ -195,6 +197,8 @@ public class NavigationBarInflaterView extends FrameLayout
|
||||||
|
mIsHintEnabled = TunerService.parseIntegerSwitch(newValue, true);
|
||||||
|
updateHint();
|
||||||
|
onLikelyDefaultLayoutChange();
|
||||||
|
+ } else if (NAV_BAR_VIEWS.equals(key)) {
|
||||||
|
+ setNavigationBarLayout(newValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -204,7 +208,18 @@ public class NavigationBarInflaterView extends FrameLayout
|
||||||
|
updateLayoutInversion();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public void setNavigationBarLayout(String layoutValue) {
|
||||||
|
+ if (!Objects.equals(mCurrentLayout, layoutValue)) {
|
||||||
|
+ mUsingCustomLayout = layoutValue != null;
|
||||||
|
+ clearViews();
|
||||||
|
+ inflateLayout(layoutValue);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
public void onLikelyDefaultLayoutChange() {
|
||||||
|
+ // Don't override custom layouts
|
||||||
|
+ if (mUsingCustomLayout) return;
|
||||||
|
+
|
||||||
|
// Reevaluate new layout
|
||||||
|
final String newValue = getDefaultLayout();
|
||||||
|
if (!Objects.equals(mCurrentLayout, newValue)) {
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,95 @@
|
|||||||
|
From 1556f8d5c97d6fdec1099d6c587a2cac128d4f97 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 26 Apr 2020 08:56:13 +0000
|
||||||
|
Subject: [PATCH 10/12] UI: Use SNAP_FIXED_RATIO for multi-window globally
|
||||||
|
|
||||||
|
Enables multiple snap targets under landscape for phone UI
|
||||||
|
|
||||||
|
Change-Id: I36e08f1e277dca0b0f9f99418671026e61b01496
|
||||||
|
---
|
||||||
|
core/res/res/values-land/config.xml | 19 -------------------
|
||||||
|
core/res/res/values-sw600dp/config.xml | 18 ++++++++----------
|
||||||
|
core/res/res/values/config.xml | 2 +-
|
||||||
|
3 files changed, 9 insertions(+), 30 deletions(-)
|
||||||
|
delete mode 100644 core/res/res/values-land/config.xml
|
||||||
|
|
||||||
|
diff --git a/core/res/res/values-land/config.xml b/core/res/res/values-land/config.xml
|
||||||
|
deleted file mode 100644
|
||||||
|
index 7308dc5882c1..000000000000
|
||||||
|
--- a/core/res/res/values-land/config.xml
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,19 +0,0 @@
|
||||||
|
-<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
-<!--
|
||||||
|
- ~ Copyright (C) 2015 The Android Open Source 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
|
||||||
|
- ~
|
||||||
|
- ~ 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.
|
||||||
|
- ~ See the License for the specific language governing permissions and
|
||||||
|
- ~ limitations under the License
|
||||||
|
- -->
|
||||||
|
-<resources>
|
||||||
|
- <integer name="config_dockedStackDividerSnapMode">2</integer>
|
||||||
|
-</resources>
|
||||||
|
\ No newline at end of file
|
||||||
|
diff --git a/core/res/res/values-sw600dp/config.xml b/core/res/res/values-sw600dp/config.xml
|
||||||
|
index d686dd2ea690..03dcf51846dd 100644
|
||||||
|
--- a/core/res/res/values-sw600dp/config.xml
|
||||||
|
+++ b/core/res/res/values-sw600dp/config.xml
|
||||||
|
@@ -3,16 +3,16 @@
|
||||||
|
/*
|
||||||
|
** Copyright 2009, The Android Open Source 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
|
||||||
|
+** 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.
|
||||||
|
-** See the License for the specific language governing permissions and
|
||||||
|
+** 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.
|
||||||
|
+** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
@@ -40,8 +40,6 @@
|
||||||
|
<!-- Use a larger scaling span for larger screen devices. -->
|
||||||
|
<dimen name="config_minScalingSpan">32mm</dimen>
|
||||||
|
|
||||||
|
- <integer name="config_dockedStackDividerSnapMode">1</integer>
|
||||||
|
-
|
||||||
|
<!-- Controls whether the nav bar can move from the bottom to the side in landscape.
|
||||||
|
Only applies if the device display is not square. -->
|
||||||
|
<bool name="config_navBarCanMove">false</bool>
|
||||||
|
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
||||||
|
index be2dbc3cd5dc..c62cce393ff0 100644
|
||||||
|
--- a/core/res/res/values/config.xml
|
||||||
|
+++ b/core/res/res/values/config.xml
|
||||||
|
@@ -3726,7 +3726,7 @@
|
||||||
|
1 - 3 snap targets: fixed ratio, 1:1, (1 - fixed ratio)
|
||||||
|
2 - 1 snap target: 1:1
|
||||||
|
-->
|
||||||
|
- <integer name="config_dockedStackDividerSnapMode">0</integer>
|
||||||
|
+ <integer name="config_dockedStackDividerSnapMode">1</integer>
|
||||||
|
|
||||||
|
<!-- The maximum aspect ratio (longerSide/shorterSide) that is treated as close-to-square. The
|
||||||
|
orientation requests from apps would be ignored if the display is close-to-square. -->
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
From f7e374407e133b9c53ecfbc9a5dc99a1460b6eb0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Danny Lin <danny@kdrag0n.dev>
|
||||||
|
Date: Tue, 3 Nov 2020 22:43:12 -0800
|
||||||
|
Subject: [PATCH 11/12] core: Remove old app target SDK dialog
|
||||||
|
|
||||||
|
If an app is old, users should already know that, and there's usually no
|
||||||
|
point in warning them about it because they would already be using a
|
||||||
|
newer version if one existed. Sometimes, using an old app is necessary
|
||||||
|
for one reason or another, so remove this annoyance and let the user use
|
||||||
|
their old app in peace.
|
||||||
|
|
||||||
|
Change-Id: I1a3021f0f9bec1ab6ff7641776391e1bd4c3cc49
|
||||||
|
---
|
||||||
|
services/core/java/com/android/server/wm/AppWarnings.java | 1 -
|
||||||
|
1 file changed, 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/wm/AppWarnings.java b/services/core/java/com/android/server/wm/AppWarnings.java
|
||||||
|
index 994f07959f3b..6749ae78c09c 100644
|
||||||
|
--- a/services/core/java/com/android/server/wm/AppWarnings.java
|
||||||
|
+++ b/services/core/java/com/android/server/wm/AppWarnings.java
|
||||||
|
@@ -168,7 +168,6 @@ class AppWarnings {
|
||||||
|
public void onStartActivity(ActivityRecord r) {
|
||||||
|
showUnsupportedCompileSdkDialogIfNeeded(r);
|
||||||
|
showUnsupportedDisplaySizeDialogIfNeeded(r);
|
||||||
|
- showDeprecatedTargetDialogIfNeeded(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From 1e6d2e5f957d1a0f497248d1673d9ecaa1a676a3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Danny Lin <danny@kdrag0n.dev>
|
||||||
|
Date: Tue, 5 Oct 2021 21:01:50 -0700
|
||||||
|
Subject: [PATCH 12/12] Paint: Enable subpixel text positioning by default
|
||||||
|
|
||||||
|
On desktop Linux, subpixel text positioning is necessary to avoid
|
||||||
|
kerning issues, and Android is no different. Even though most phone
|
||||||
|
displays have relatively high DPIs, the lack of subpixel text
|
||||||
|
positioning is only unnoticeable on high-end devices such as the Pixel 4
|
||||||
|
XL (1440x3040 @ 6.3 in => 537 dpi).
|
||||||
|
|
||||||
|
For example, on the Pixel 5 (1080 x 2340 @ 6.0 in => 432 dpi),
|
||||||
|
horizontally-scrolling labels in QS tiles can be seen "jittering"
|
||||||
|
slightly upon close observation. This was tested with the Google Sans
|
||||||
|
font on Google's stock OS. At this lower DPI, there is still a need for
|
||||||
|
subpixel text positioning (at least in some cases).
|
||||||
|
|
||||||
|
Enable subpixel text positioning by default to fix occasional kerning
|
||||||
|
issues and jittering when text is in motion.
|
||||||
|
|
||||||
|
Change-Id: I8d71e5848a745c5a2d457a28c68458920928ee09
|
||||||
|
---
|
||||||
|
graphics/java/android/graphics/Paint.java | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
|
||||||
|
index 451b99ea7550..e60d506a171b 100644
|
||||||
|
--- a/graphics/java/android/graphics/Paint.java
|
||||||
|
+++ b/graphics/java/android/graphics/Paint.java
|
||||||
|
@@ -253,7 +253,7 @@ public class Paint {
|
||||||
|
|
||||||
|
// These flags are always set on a new/reset paint, even if flags 0 is passed.
|
||||||
|
static final int HIDDEN_DEFAULT_PAINT_FLAGS = DEV_KERN_TEXT_FLAG | EMBEDDED_BITMAP_TEXT_FLAG
|
||||||
|
- | FILTER_BITMAP_FLAG;
|
||||||
|
+ | FILTER_BITMAP_FLAG | SUBPIXEL_TEXT_FLAG;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Font hinter option that disables font hinting.
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 95ef97f5aa82c15e47f9313eca4899d89dba5dd0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Wed, 4 Jul 2018 17:59:14 +0800
|
||||||
|
Subject: [PATCH] sdk: Invert per-app stretch-to-fullscreen implementation
|
||||||
|
|
||||||
|
Change-Id: Idf7dab4e1e0c79953fa672f33ec65fecffb37c83
|
||||||
|
---
|
||||||
|
sdk/src/java/org/lineageos/internal/applications/LongScreen.java | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/sdk/src/java/org/lineageos/internal/applications/LongScreen.java b/sdk/src/java/org/lineageos/internal/applications/LongScreen.java
|
||||||
|
index 7fe0d68..26ea349 100644
|
||||||
|
--- a/sdk/src/java/org/lineageos/internal/applications/LongScreen.java
|
||||||
|
+++ b/sdk/src/java/org/lineageos/internal/applications/LongScreen.java
|
||||||
|
@@ -57,7 +57,7 @@ public class LongScreen {
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean shouldForceLongScreen(String packageName) {
|
||||||
|
- return isSupported() && mApps.contains(packageName);
|
||||||
|
+ return isSupported() && !(mApps.contains(packageName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getApps() {
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From b63b5c1fb46eaf032270bbb65b9a61fe487c5e46 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 26 Jun 2021 14:23:09 +0000
|
||||||
|
Subject: [PATCH] Jelly: MainActivity: Restore applyThemeColor
|
||||||
|
|
||||||
|
Fixes black statusbar on start
|
||||||
|
|
||||||
|
Change-Id: I6816f5b1dcb3c7bcaee2736a9e2a3ecd63217bc6
|
||||||
|
---
|
||||||
|
app/src/main/java/org/lineageos/jelly/MainActivity.kt | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/app/src/main/java/org/lineageos/jelly/MainActivity.kt b/app/src/main/java/org/lineageos/jelly/MainActivity.kt
|
||||||
|
index 0143957..af7191c 100644
|
||||||
|
--- a/app/src/main/java/org/lineageos/jelly/MainActivity.kt
|
||||||
|
+++ b/app/src/main/java/org/lineageos/jelly/MainActivity.kt
|
||||||
|
@@ -192,6 +192,7 @@ class MainActivity : WebViewExtActivity(), SearchBarController.OnCancelListener,
|
||||||
|
findViewById(R.id.search_menu_cancel),
|
||||||
|
this)
|
||||||
|
setUiMode()
|
||||||
|
+ applyThemeColor(mThemeColor)
|
||||||
|
try {
|
||||||
|
val httpCacheDir = File(cacheDir, "suggestion_responses")
|
||||||
|
val httpCacheSize = 1024 * 1024.toLong() // 1 MiB
|
||||||
|
@@ -726,4 +727,4 @@ class MainActivity : WebViewExtActivity(), SearchBarController.OnCancelListener,
|
||||||
|
private const val STATE_KEY_THEME_COLOR = "theme_color"
|
||||||
|
private const val LOCATION_PERM_REQ = 424
|
||||||
|
}
|
||||||
|
-}
|
||||||
|
\ No newline at end of file
|
||||||
|
+}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,105 @@
|
|||||||
|
From 9ee8209308b775f6cd4a104fe1cd89c9645e4742 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AndyCGYan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 13 Jan 2019 21:44:48 +0800
|
||||||
|
Subject: [PATCH] LineageParts: Invert per-app stretch-to-fullscreen
|
||||||
|
|
||||||
|
Change-Id: Icb02c8dfd84882f736e37d6cd92c35e5eb288faa
|
||||||
|
---
|
||||||
|
res/layout/long_screen_layout.xml | 2 +-
|
||||||
|
res/values-zh-rCN/strings.xml | 6 +++---
|
||||||
|
res/values/strings.xml | 6 +++---
|
||||||
|
res/xml/long_screen_prefs.xml | 2 +-
|
||||||
|
res/xml/parts_catalog.xml | 4 ++--
|
||||||
|
.../lineageparts/applications/LongScreenSettings.java | 2 +-
|
||||||
|
6 files changed, 11 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/res/layout/long_screen_layout.xml b/res/layout/long_screen_layout.xml
|
||||||
|
index 40d0938..1119cef 100644
|
||||||
|
--- a/res/layout/long_screen_layout.xml
|
||||||
|
+++ b/res/layout/long_screen_layout.xml
|
||||||
|
@@ -36,7 +36,7 @@
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
- android:text="@string/long_screen_settings_no_apps"
|
||||||
|
+ android:text="@string/inverse_long_screen_settings_no_apps"
|
||||||
|
android:textSize="18dp"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
|
||||||
|
index 9340e57..63a4b71 100644
|
||||||
|
--- a/res/values-zh-rCN/strings.xml
|
||||||
|
+++ b/res/values-zh-rCN/strings.xml
|
||||||
|
@@ -434,9 +434,9 @@
|
||||||
|
<string name="display_rotation_90_title">90 度</string>
|
||||||
|
<string name="display_rotation_180_title">180 度</string>
|
||||||
|
<string name="display_rotation_270_title">270 度</string>
|
||||||
|
- <string name="long_screen_settings_title">全屏应用</string>
|
||||||
|
- <string name="long_screen_settings_summary">强制旧式应用程序使用全屏长宽比</string>
|
||||||
|
- <string name="long_screen_settings_no_apps">无应用</string>
|
||||||
|
+ <string name="inverse_long_screen_settings_title">禁用拉伸全屏</string>
|
||||||
|
+ <string name="inverse_long_screen_settings_summary">对选定的应用禁用拉伸全屏</string>
|
||||||
|
+ <string name="inverse_long_screen_settings_no_apps">无应用</string>
|
||||||
|
<string name="charging_sounds_settings_title">充电提示音</string>
|
||||||
|
<string name="charging_sounds_enable_title">启用充电提示音</string>
|
||||||
|
<string name="charging_sounds_summary">连接或断开电源时发出声音</string>
|
||||||
|
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||||
|
index 9fe4181..998a5f6 100644
|
||||||
|
--- a/res/values/strings.xml
|
||||||
|
+++ b/res/values/strings.xml
|
||||||
|
@@ -567,9 +567,9 @@
|
||||||
|
<string name="display_rotation_270_title">270 degrees</string>
|
||||||
|
|
||||||
|
<!-- Applications: Long screen -->
|
||||||
|
- <string name="long_screen_settings_title">Full screen apps</string>
|
||||||
|
- <string name="long_screen_settings_summary">Force legacy apps to use full screen aspect ratio</string>
|
||||||
|
- <string name="long_screen_settings_no_apps">No apps</string>
|
||||||
|
+ <string name="inverse_long_screen_settings_title">Disable stretch-to-fullscreen</string>
|
||||||
|
+ <string name="inverse_long_screen_settings_summary">Prevent selected apps from utilizing stretch-to-fullscreen</string>
|
||||||
|
+ <string name="inverse_long_screen_settings_no_apps">No apps</string>
|
||||||
|
|
||||||
|
<!-- Sounds: Charging sounds -->
|
||||||
|
<string name="charging_sounds_settings_title">Charging sounds</string>
|
||||||
|
diff --git a/res/xml/long_screen_prefs.xml b/res/xml/long_screen_prefs.xml
|
||||||
|
index ec947fa..20da90a 100644
|
||||||
|
--- a/res/xml/long_screen_prefs.xml
|
||||||
|
+++ b/res/xml/long_screen_prefs.xml
|
||||||
|
@@ -18,6 +18,6 @@
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:lineage="http://schemas.android.com/apk/res/org.lineageos.lineageparts"
|
||||||
|
android:key="long_screen_settings"
|
||||||
|
- android:title="@string/long_screen_settings_title">
|
||||||
|
+ android:title="@string/inverse_long_screen_settings_title">
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
||||||
|
diff --git a/res/xml/parts_catalog.xml b/res/xml/parts_catalog.xml
|
||||||
|
index 803b214..6f61e9d 100644
|
||||||
|
--- a/res/xml/parts_catalog.xml
|
||||||
|
+++ b/res/xml/parts_catalog.xml
|
||||||
|
@@ -81,8 +81,8 @@
|
||||||
|
lineage:xmlRes="@xml/power_menu_settings" />
|
||||||
|
|
||||||
|
<part android:key="long_screen_settings"
|
||||||
|
- android:title="@string/long_screen_settings_title"
|
||||||
|
- android:summary="@string/long_screen_settings_summary"
|
||||||
|
+ android:title="@string/inverse_long_screen_settings_title"
|
||||||
|
+ android:summary="@string/inverse_long_screen_settings_summary"
|
||||||
|
android:fragment="org.lineageos.lineageparts.applications.LongScreenSettings"
|
||||||
|
lineage:xmlRes="@xml/long_screen_prefs" />
|
||||||
|
|
||||||
|
diff --git a/src/org/lineageos/lineageparts/applications/LongScreenSettings.java b/src/org/lineageos/lineageparts/applications/LongScreenSettings.java
|
||||||
|
index ac04058..50ff8f6 100644
|
||||||
|
--- a/src/org/lineageos/lineageparts/applications/LongScreenSettings.java
|
||||||
|
+++ b/src/org/lineageos/lineageparts/applications/LongScreenSettings.java
|
||||||
|
@@ -246,7 +246,7 @@ public class LongScreenSettings extends SettingsPreferenceFragment
|
||||||
|
mApplicationsState.ensureIcon(entry);
|
||||||
|
holder.icon.setImageDrawable(entry.icon);
|
||||||
|
holder.state.setTag(entry);
|
||||||
|
- holder.state.setChecked(mLongScreen.shouldForceLongScreen(entry.info.packageName));
|
||||||
|
+ holder.state.setChecked(!(mLongScreen.shouldForceLongScreen(entry.info.packageName)));
|
||||||
|
return holder.rootView;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,223 @@
|
|||||||
|
From 3f7f3f9546f9f23d66381f7dff887cd562285ce6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Keith <javelinanddart@gmail.com>
|
||||||
|
Date: Tue, 30 Oct 2018 15:46:18 +0100
|
||||||
|
Subject: [PATCH] Messaging: Add "Mark as read" quick action for message
|
||||||
|
notifications
|
||||||
|
|
||||||
|
Change-Id: I7194dca022e5062926fa35709de282721ca64320
|
||||||
|
---
|
||||||
|
res/drawable/ic_wear_read.xml | 9 +++++++++
|
||||||
|
res/values/cm_strings.xml | 3 +++
|
||||||
|
.../messaging/datamodel/BugleNotifications.java | 14 ++++++++++++++
|
||||||
|
.../datamodel/MessageNotificationState.java | 8 ++++++++
|
||||||
|
.../messaging/datamodel/NotificationState.java | 12 +++++++++++-
|
||||||
|
.../messaging/receiver/NotificationReceiver.java | 12 +++++++++++-
|
||||||
|
src/com/android/messaging/ui/UIIntents.java | 11 +++++++++++
|
||||||
|
src/com/android/messaging/ui/UIIntentsImpl.java | 14 ++++++++++++++
|
||||||
|
8 files changed, 81 insertions(+), 2 deletions(-)
|
||||||
|
create mode 100644 res/drawable/ic_wear_read.xml
|
||||||
|
|
||||||
|
diff --git a/res/drawable/ic_wear_read.xml b/res/drawable/ic_wear_read.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..9d017e6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/res/drawable/ic_wear_read.xml
|
||||||
|
@@ -0,0 +1,9 @@
|
||||||
|
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
+ android:height="24dp"
|
||||||
|
+ android:width="24dp"
|
||||||
|
+ android:viewportWidth="24"
|
||||||
|
+ android:viewportHeight="24">
|
||||||
|
+ <path
|
||||||
|
+ android:fillColor="#ffffff"
|
||||||
|
+ android:pathData="M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z" />
|
||||||
|
+</vector>
|
||||||
|
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
|
||||||
|
index f285555..858f093 100644
|
||||||
|
--- a/res/values/cm_strings.xml
|
||||||
|
+++ b/res/values/cm_strings.xml
|
||||||
|
@@ -23,6 +23,9 @@
|
||||||
|
<string name="show_emoticons_pref_title">Emoticons access</string>
|
||||||
|
<string name="show_emoticons_pref_summary">Show the emoticons key on the keyboard</string>
|
||||||
|
|
||||||
|
+ <!-- Mark message as read -->
|
||||||
|
+ <string name="notification_mark_as_read">Mark as read</string>
|
||||||
|
+
|
||||||
|
<!-- Notification channel -->
|
||||||
|
<string name="notification_channel_messages_title">Messages</string>
|
||||||
|
</resources>
|
||||||
|
diff --git a/src/com/android/messaging/datamodel/BugleNotifications.java b/src/com/android/messaging/datamodel/BugleNotifications.java
|
||||||
|
index 6df9e88..dbe86ff 100644
|
||||||
|
--- a/src/com/android/messaging/datamodel/BugleNotifications.java
|
||||||
|
+++ b/src/com/android/messaging/datamodel/BugleNotifications.java
|
||||||
|
@@ -789,6 +789,7 @@ public class BugleNotifications {
|
||||||
|
(MultiMessageNotificationState) notificationState);
|
||||||
|
addDownloadMmsAction(notifBuilder, wearableExtender, notificationState);
|
||||||
|
addWearableVoiceReplyAction(notifBuilder, wearableExtender, notificationState);
|
||||||
|
+ addReadAction(notifBuilder, wearableExtender, notificationState);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply the wearable options and build & post the notification
|
||||||
|
@@ -876,6 +877,19 @@ public class BugleNotifications {
|
||||||
|
wearableExtender.addAction(wearActionBuilder.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private static void addReadAction(final NotificationCompat.Builder notifBuilder,
|
||||||
|
+ final WearableExtender wearableExtender, final NotificationState notificationState) {
|
||||||
|
+ final Context context = Factory.get().getApplicationContext();
|
||||||
|
+ final PendingIntent readPendingIntent = notificationState.getReadIntent();
|
||||||
|
+ final NotificationCompat.Action.Builder readActionBuilder =
|
||||||
|
+ new NotificationCompat.Action.Builder(R.drawable.ic_wear_read,
|
||||||
|
+ context.getString(R.string.notification_mark_as_read), readPendingIntent);
|
||||||
|
+ notifBuilder.addAction(readActionBuilder.build());
|
||||||
|
+
|
||||||
|
+ // Support the action on a wearable device as well
|
||||||
|
+ wearableExtender.addAction(readActionBuilder.build());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
private static void addDownloadMmsAction(final NotificationCompat.Builder notifBuilder,
|
||||||
|
final WearableExtender wearableExtender, final NotificationState notificationState) {
|
||||||
|
if (!(notificationState instanceof MultiMessageNotificationState)) {
|
||||||
|
diff --git a/src/com/android/messaging/datamodel/MessageNotificationState.java b/src/com/android/messaging/datamodel/MessageNotificationState.java
|
||||||
|
index 4a4bfd5..7555d97 100644
|
||||||
|
--- a/src/com/android/messaging/datamodel/MessageNotificationState.java
|
||||||
|
+++ b/src/com/android/messaging/datamodel/MessageNotificationState.java
|
||||||
|
@@ -334,6 +334,14 @@ public abstract class MessageNotificationState extends NotificationState {
|
||||||
|
getClearIntentRequestCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
+ @Override
|
||||||
|
+ public PendingIntent getReadIntent() {
|
||||||
|
+ return UIIntents.get().getPendingIntentForMarkingAsRead(
|
||||||
|
+ Factory.get().getApplicationContext(),
|
||||||
|
+ mConversationIds,
|
||||||
|
+ getReadIntentRequestCode());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Notification for multiple messages in at least 2 different conversations.
|
||||||
|
*/
|
||||||
|
diff --git a/src/com/android/messaging/datamodel/NotificationState.java b/src/com/android/messaging/datamodel/NotificationState.java
|
||||||
|
index 144f0fe..4c11537 100644
|
||||||
|
--- a/src/com/android/messaging/datamodel/NotificationState.java
|
||||||
|
+++ b/src/com/android/messaging/datamodel/NotificationState.java
|
||||||
|
@@ -43,7 +43,8 @@ import java.util.HashSet;
|
||||||
|
public abstract class NotificationState {
|
||||||
|
private static final int CONTENT_INTENT_REQUEST_CODE_OFFSET = 0;
|
||||||
|
private static final int CLEAR_INTENT_REQUEST_CODE_OFFSET = 1;
|
||||||
|
- private static final int NUM_REQUEST_CODES_NEEDED = 2;
|
||||||
|
+ private static final int READ_INTENT_REQUEST_CODE_OFFSET = 2;
|
||||||
|
+ private static final int NUM_REQUEST_CODES_NEEDED = 3;
|
||||||
|
|
||||||
|
public interface FailedMessageQuery {
|
||||||
|
static final String FAILED_MESSAGES_WHERE_CLAUSE =
|
||||||
|
@@ -78,6 +79,11 @@ public abstract class NotificationState {
|
||||||
|
*/
|
||||||
|
public abstract PendingIntent getClearIntent();
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * The intent to be triggered when mark as read is pressed.
|
||||||
|
+ */
|
||||||
|
+ public abstract PendingIntent getReadIntent();
|
||||||
|
+
|
||||||
|
protected Uri getAttachmentUri() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
@@ -116,6 +122,10 @@ public abstract class NotificationState {
|
||||||
|
return mBaseRequestCode + CLEAR_INTENT_REQUEST_CODE_OFFSET;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public int getReadIntentRequestCode() {
|
||||||
|
+ return mBaseRequestCode + READ_INTENT_REQUEST_CODE_OFFSET;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Gets the appropriate icon needed for notifications.
|
||||||
|
*/
|
||||||
|
diff --git a/src/com/android/messaging/receiver/NotificationReceiver.java b/src/com/android/messaging/receiver/NotificationReceiver.java
|
||||||
|
index bbb847d..f87779c 100644
|
||||||
|
--- a/src/com/android/messaging/receiver/NotificationReceiver.java
|
||||||
|
+++ b/src/com/android/messaging/receiver/NotificationReceiver.java
|
||||||
|
@@ -20,6 +20,7 @@ import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import com.android.messaging.datamodel.BugleNotifications;
|
||||||
|
+import com.android.messaging.datamodel.action.MarkAsReadAction;
|
||||||
|
import com.android.messaging.datamodel.action.MarkAsSeenAction;
|
||||||
|
import com.android.messaging.ui.UIIntents;
|
||||||
|
import com.android.messaging.util.ConversationIdSet;
|
||||||
|
@@ -52,6 +53,15 @@ public class NotificationReceiver extends BroadcastReceiver {
|
||||||
|
BugleNotifications.resetLastMessageDing(conversationId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ } else if (intent.getAction().equals(UIIntents.ACTION_MARK_AS_READ)) {
|
||||||
|
+ final String conversationIdSetString =
|
||||||
|
+ intent.getStringExtra(UIIntents.UI_INTENT_EXTRA_CONVERSATION_ID_SET);
|
||||||
|
+ if (conversationIdSetString != null) {
|
||||||
|
+ for (final String conversationId :
|
||||||
|
+ ConversationIdSet.createSet(conversationIdSetString)) {
|
||||||
|
+ MarkAsReadAction.markAsRead(conversationId);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-}
|
||||||
|
\ No newline at end of file
|
||||||
|
+}
|
||||||
|
diff --git a/src/com/android/messaging/ui/UIIntents.java b/src/com/android/messaging/ui/UIIntents.java
|
||||||
|
index 2d10527..144e831 100644
|
||||||
|
--- a/src/com/android/messaging/ui/UIIntents.java
|
||||||
|
+++ b/src/com/android/messaging/ui/UIIntents.java
|
||||||
|
@@ -69,6 +69,9 @@ public abstract class UIIntents {
|
||||||
|
public static final String ACTION_RESET_NOTIFICATIONS =
|
||||||
|
"com.android.messaging.reset_notifications";
|
||||||
|
|
||||||
|
+ public static final String ACTION_MARK_AS_READ =
|
||||||
|
+ "com.android.messaging.mark_as_read";
|
||||||
|
+
|
||||||
|
// Sending VCard uri to VCard detail activity
|
||||||
|
public static final String UI_INTENT_EXTRA_VCARD_URI = "vcard_uri";
|
||||||
|
|
||||||
|
@@ -323,6 +326,14 @@ public abstract class UIIntents {
|
||||||
|
final int updateTargets, final ConversationIdSet conversationIdSet,
|
||||||
|
final int requestCode);
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * Get a PendingIntent for marking a conversation as read.
|
||||||
|
+ *
|
||||||
|
+ * <p>This is intended to be used by notifications.
|
||||||
|
+ */
|
||||||
|
+ public abstract PendingIntent getPendingIntentForMarkingAsRead(final Context context,
|
||||||
|
+ final ConversationIdSet conversationIdSet, final int requestCode);
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Get a PendingIntent for showing low storage notifications.
|
||||||
|
*/
|
||||||
|
diff --git a/src/com/android/messaging/ui/UIIntentsImpl.java b/src/com/android/messaging/ui/UIIntentsImpl.java
|
||||||
|
index d64082d..9281899 100644
|
||||||
|
--- a/src/com/android/messaging/ui/UIIntentsImpl.java
|
||||||
|
+++ b/src/com/android/messaging/ui/UIIntentsImpl.java
|
||||||
|
@@ -430,6 +430,20 @@ public class UIIntentsImpl extends UIIntents {
|
||||||
|
PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ @Override
|
||||||
|
+ public PendingIntent getPendingIntentForMarkingAsRead(final Context context,
|
||||||
|
+ final ConversationIdSet conversationIdSet, final int requestCode) {
|
||||||
|
+ final Intent intent = new Intent(context, NotificationReceiver.class);
|
||||||
|
+ intent.setAction(ACTION_MARK_AS_READ);
|
||||||
|
+ if (conversationIdSet != null) {
|
||||||
|
+ intent.putExtra(UI_INTENT_EXTRA_CONVERSATION_ID_SET,
|
||||||
|
+ conversationIdSet.getDelimitedString());
|
||||||
|
+ }
|
||||||
|
+ return PendingIntent.getBroadcast(context,
|
||||||
|
+ requestCode, intent,
|
||||||
|
+ PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Gets a PendingIntent associated with an Intent to start an Activity. All notifications
|
||||||
|
* that starts an Activity must use this method to get a PendingIntent, which achieves two
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,142 @@
|
|||||||
|
From ff8f6e85177a0bab9c27785c3c0d9a59c4952e49 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vachounet <vachounet@live.fr>
|
||||||
|
Date: Mon, 26 Oct 2020 17:05:18 +0100
|
||||||
|
Subject: [PATCH] Trebuchet: Move clear all button to actions view
|
||||||
|
|
||||||
|
@AndyCGYan: Instead of removing the original, hide it in a simple way
|
||||||
|
|
||||||
|
Change-Id: I7a0b2729c163169f7606ad4644870d07d5165e8e
|
||||||
|
---
|
||||||
|
.../res/drawable/ic_recents_clear_all.xml | 18 ++++++++++++++++++
|
||||||
|
.../res/layout/overview_actions_container.xml | 17 ++++++++++++++++-
|
||||||
|
.../quickstep/fallback/RecentsState.java | 2 +-
|
||||||
|
.../quickstep/views/LauncherRecentsView.java | 3 +--
|
||||||
|
.../android/quickstep/views/RecentsView.java | 6 +++++-
|
||||||
|
5 files changed, 41 insertions(+), 5 deletions(-)
|
||||||
|
create mode 100644 quickstep/res/drawable/ic_recents_clear_all.xml
|
||||||
|
|
||||||
|
diff --git a/quickstep/res/drawable/ic_recents_clear_all.xml b/quickstep/res/drawable/ic_recents_clear_all.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..2ad0bb824d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/quickstep/res/drawable/ic_recents_clear_all.xml
|
||||||
|
@@ -0,0 +1,18 @@
|
||||||
|
+<!-- Copyright (C) 2020 The Android Open Source 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
|
||||||
|
+ 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.
|
||||||
|
+ See the License for the specific language governing permissions and
|
||||||
|
+ limitations under the License.
|
||||||
|
+-->
|
||||||
|
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
+ android:height="24dp"
|
||||||
|
+ android:width="24dp"
|
||||||
|
+ android:viewportWidth="24"
|
||||||
|
+ android:viewportHeight="24">
|
||||||
|
+ <path android:fillColor="#FF000000" android:pathData="M5,13H19V11H5M3,17H17V15H3M7,7V9H21V7" />
|
||||||
|
+</vector>
|
||||||
|
diff --git a/quickstep/res/layout/overview_actions_container.xml b/quickstep/res/layout/overview_actions_container.xml
|
||||||
|
index 0fda0bf8d4..9a6f5ae062 100644
|
||||||
|
--- a/quickstep/res/layout/overview_actions_container.xml
|
||||||
|
+++ b/quickstep/res/layout/overview_actions_container.xml
|
||||||
|
@@ -40,6 +40,21 @@
|
||||||
|
android:text="@string/action_screenshot"
|
||||||
|
android:theme="@style/ThemeControlHighlightWorkspaceColor" />
|
||||||
|
|
||||||
|
+ <Space
|
||||||
|
+ android:id="@+id/action_clear_all_space"
|
||||||
|
+ android:layout_width="@dimen/overview_actions_button_spacing"
|
||||||
|
+ android:layout_height="1dp" />
|
||||||
|
+
|
||||||
|
+ <Button
|
||||||
|
+ android:id="@+id/action_clear_all"
|
||||||
|
+ style="@style/OverviewActionButton"
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
+ android:layout_height="wrap_content"
|
||||||
|
+ android:drawableStart="@drawable/ic_recents_clear_all"
|
||||||
|
+ android:text="@string/recents_clear_all"
|
||||||
|
+ android:theme="@style/ThemeControlHighlightWorkspaceColor"
|
||||||
|
+ />
|
||||||
|
+
|
||||||
|
<Space
|
||||||
|
android:id="@+id/action_split_space"
|
||||||
|
android:layout_width="@dimen/overview_actions_button_spacing"
|
||||||
|
@@ -68,4 +83,4 @@
|
||||||
|
android:visibility="gone" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
-</com.android.quickstep.views.OverviewActionsView>
|
||||||
|
\ No newline at end of file
|
||||||
|
+</com.android.quickstep.views.OverviewActionsView>
|
||||||
|
diff --git a/quickstep/src/com/android/quickstep/fallback/RecentsState.java b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
|
||||||
|
index 77db6b79f4..c0b6771e6a 100644
|
||||||
|
--- a/quickstep/src/com/android/quickstep/fallback/RecentsState.java
|
||||||
|
+++ b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
|
||||||
|
@@ -102,7 +102,7 @@ public class RecentsState implements BaseState<RecentsState> {
|
||||||
|
* For this state, whether clear all button should be shown.
|
||||||
|
*/
|
||||||
|
public boolean hasClearAllButton() {
|
||||||
|
- return hasFlag(FLAG_CLEAR_ALL_BUTTON);
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
|
||||||
|
index 306ebd73c8..5b2f544c02 100644
|
||||||
|
--- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
|
||||||
|
+++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
|
||||||
|
@@ -133,8 +133,7 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher, Laun
|
||||||
|
super.setOverviewStateEnabled(enabled);
|
||||||
|
if (enabled) {
|
||||||
|
LauncherState state = mActivity.getStateManager().getState();
|
||||||
|
- boolean hasClearAllButton = (state.getVisibleElements(mActivity)
|
||||||
|
- & CLEAR_ALL_BUTTON) != 0;
|
||||||
|
+ boolean hasClearAllButton = false;
|
||||||
|
setDisallowScrollToClearAll(!hasClearAllButton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
index 2360396cf7..4a4202ecc6 100644
|
||||||
|
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
@@ -103,6 +103,7 @@ import android.view.ViewTreeObserver.OnScrollChangedListener;
|
||||||
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
|
import android.view.accessibility.AccessibilityNodeInfo;
|
||||||
|
import android.view.animation.Interpolator;
|
||||||
|
+import android.widget.Button;
|
||||||
|
import android.widget.ListView;
|
||||||
|
import android.widget.OverScroller;
|
||||||
|
import android.widget.Toast;
|
||||||
|
@@ -431,6 +432,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||||
|
private final RecentsModel mModel;
|
||||||
|
private final int mSplitPlaceholderSize;
|
||||||
|
private final int mSplitPlaceholderInset;
|
||||||
|
+ private Button mActionClearAllButton;
|
||||||
|
private final ClearAllButton mClearAllButton;
|
||||||
|
private final Rect mClearAllButtonDeadZoneRect = new Rect();
|
||||||
|
private final Rect mTaskViewDeadZoneRect = new Rect();
|
||||||
|
@@ -875,6 +877,8 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||||
|
mActionsView = actionsView;
|
||||||
|
mActionsView.updateHiddenFlags(HIDDEN_NO_TASKS, getTaskViewCount() == 0);
|
||||||
|
mSplitSelectStateController = splitController;
|
||||||
|
+ mActionClearAllButton = (Button) mActionsView.findViewById(R.id.action_clear_all);
|
||||||
|
+ mActionClearAllButton.setOnClickListener(this::dismissAllTasks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SplitSelectStateController getSplitPlaceholder() {
|
||||||
|
@@ -1194,7 +1198,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||||
|
* button fully visible, center page is Clear All button.
|
||||||
|
*/
|
||||||
|
public boolean isClearAllHidden() {
|
||||||
|
- return mClearAllButton.getAlpha() != 1f;
|
||||||
|
+ return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From e330d170e8e64c5c7849d0a0c288fb167ee828a8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 5 Sep 2019 02:08:22 +0000
|
||||||
|
Subject: [PATCH 1/2] vendor_lineage: Log privapp-permissions whitelist
|
||||||
|
violations instead
|
||||||
|
|
||||||
|
Change-Id: I49dba61f332253e291a65e79ca70d9a07d45bb07
|
||||||
|
---
|
||||||
|
config/common.mk | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config/common.mk b/config/common.mk
|
||||||
|
index 43c36252..52a4bfd4 100644
|
||||||
|
--- a/config/common.mk
|
||||||
|
+++ b/config/common.mk
|
||||||
|
@@ -74,9 +74,9 @@ PRODUCT_COPY_FILES += \
|
||||||
|
PRODUCT_COPY_FILES += \
|
||||||
|
vendor/lineage/config/permissions/org.lineageos.android.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/org.lineageos.android.xml
|
||||||
|
|
||||||
|
-# Enforce privapp-permissions whitelist
|
||||||
|
+# Log privapp-permissions whitelist violations
|
||||||
|
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
|
||||||
|
- ro.control_privapp_permissions=enforce
|
||||||
|
+ ro.control_privapp_permissions=log
|
||||||
|
|
||||||
|
# Include AOSP audio files
|
||||||
|
include vendor/lineage/config/aosp_audio.mk
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From 77bae190086a8c75bd80800487955bb7577cd374 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Mon, 14 Mar 2022 03:44:59 +0000
|
||||||
|
Subject: [PATCH 2/2] Revert "overlay: Default to night mode"
|
||||||
|
|
||||||
|
This reverts commit 4d4e39a845d54e37b20728f1448ae6e3fde4b97d.
|
||||||
|
|
||||||
|
Change-Id: I036bdd576e536392cf41e3c536d5ca2eb04e5a0f
|
||||||
|
---
|
||||||
|
.../common/frameworks/base/core/res/res/values/config.xml | 8 --------
|
||||||
|
1 file changed, 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/overlay/common/frameworks/base/core/res/res/values/config.xml b/overlay/common/frameworks/base/core/res/res/values/config.xml
|
||||||
|
index 3b6eedce..fccecf90 100644
|
||||||
|
--- a/overlay/common/frameworks/base/core/res/res/values/config.xml
|
||||||
|
+++ b/overlay/common/frameworks/base/core/res/res/values/config.xml
|
||||||
|
@@ -146,14 +146,6 @@
|
||||||
|
<!-- Whether this device is supporting the camera toggle -->
|
||||||
|
<bool name="config_supportsCamToggle">true</bool>
|
||||||
|
|
||||||
|
- <!-- Control the default night mode to use when there is no other mode override set.
|
||||||
|
- One of the following values (see UiModeManager.java):
|
||||||
|
- 0 - MODE_NIGHT_AUTO
|
||||||
|
- 1 - MODE_NIGHT_NO
|
||||||
|
- 2 - MODE_NIGHT_YES
|
||||||
|
- -->
|
||||||
|
- <integer name="config_defaultNightMode">2</integer>
|
||||||
|
-
|
||||||
|
<!-- Boolean indicating whether the HWC setColorTransform function can be performed efficiently
|
||||||
|
in hardware. -->
|
||||||
|
<bool name="config_setColorTransformAccelerated">true</bool>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
From 45ce666776f48f82151a4fc3c8a3219f3e4c210f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 20 Jun 2021 09:08:43 +0000
|
||||||
|
Subject: [PATCH 1/2] build: Integrate prop modifications (1/2)
|
||||||
|
|
||||||
|
Change-Id: I24f54937e3e542b7c29ea86d24e3f523583a0c61
|
||||||
|
---
|
||||||
|
tools/buildinfo.sh | 9 +++++++--
|
||||||
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tools/buildinfo.sh b/tools/buildinfo.sh
|
||||||
|
index c00e1e98b..490d15215 100755
|
||||||
|
--- a/tools/buildinfo.sh
|
||||||
|
+++ b/tools/buildinfo.sh
|
||||||
|
@@ -9,7 +9,7 @@ if [ "$BOARD_USE_VBMETA_DIGTEST_IN_FINGERPRINT" = "true" ] ; then
|
||||||
|
else
|
||||||
|
echo "ro.build.id=$BUILD_ID"
|
||||||
|
fi
|
||||||
|
-echo "ro.build.display.id=$BUILD_DISPLAY_ID"
|
||||||
|
+echo "ro.build.display.id=$BUILD_ID"
|
||||||
|
echo "ro.build.version.incremental=$BUILD_NUMBER"
|
||||||
|
echo "ro.build.version.sdk=$PLATFORM_SDK_VERSION"
|
||||||
|
echo "ro.build.version.preview_sdk=$PLATFORM_PREVIEW_SDK_VERSION"
|
||||||
|
@@ -23,7 +23,7 @@ echo "ro.build.version.release_or_preview_display=$PLATFORM_DISPLAY_VERSION"
|
||||||
|
echo "ro.build.version.security_patch=$PLATFORM_SECURITY_PATCH"
|
||||||
|
echo "ro.build.version.base_os=$PLATFORM_BASE_OS"
|
||||||
|
echo "ro.build.version.min_supported_target_sdk=$PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION"
|
||||||
|
-echo "ro.build.date=`$DATE`"
|
||||||
|
+echo "ro.build.date=`$DATE +\"%B %-d, %Y\"`"
|
||||||
|
echo "ro.build.date.utc=`$DATE +%s`"
|
||||||
|
echo "ro.build.type=$TARGET_BUILD_TYPE"
|
||||||
|
echo "ro.build.user=$BUILD_USERNAME"
|
||||||
|
@@ -58,5 +58,10 @@ if [ -n "$BUILD_THUMBPRINT" ] ; then
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "ro.lineage.device=$LINEAGE_DEVICE"
|
||||||
|
+echo "ro.lineage.version=LineageOS 20 Self-built CGMod"
|
||||||
|
+echo "ro.lineage.display.version=LineageOS 20 Self-built CGMod"
|
||||||
|
+echo "ro.modversion=LineageOS 20 Self-built CGMod"
|
||||||
|
+
|
||||||
|
+echo "lockscreen.rot_override=true"
|
||||||
|
|
||||||
|
echo "# end build properties"
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,25 @@
|
|||||||
|
From 1c0c37fd29fb20537eca319cd5c3874127414d8a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 16 Oct 2021 00:39:15 +0000
|
||||||
|
Subject: [PATCH 2/2] build: Remove Stk (1/2)
|
||||||
|
|
||||||
|
Change-Id: I24ef17c74c3137a11b463cde96c74d0edc853edd
|
||||||
|
---
|
||||||
|
target/product/generic_system.mk | 1 -
|
||||||
|
1 file changed, 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/target/product/generic_system.mk b/target/product/generic_system.mk
|
||||||
|
index 1a639ef71..49a080076 100644
|
||||||
|
--- a/target/product/generic_system.mk
|
||||||
|
+++ b/target/product/generic_system.mk
|
||||||
|
@@ -32,7 +32,6 @@ PRODUCT_PACKAGES += \
|
||||||
|
PRODUCT_PACKAGES += \
|
||||||
|
LiveWallpapersPicker \
|
||||||
|
PartnerBookmarksProvider \
|
||||||
|
- Stk \
|
||||||
|
Tag \
|
||||||
|
|
||||||
|
# OTA support
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,389 @@
|
|||||||
|
From 891ef49e6fd43f36ef564a79fc8a485ee456caa0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 20 Jun 2021 03:39:32 +0000
|
||||||
|
Subject: [PATCH 01/21] Add MiuiNavbarOverlay
|
||||||
|
|
||||||
|
Change-Id: I0e6791abc3c9521d7dc612df2fec2b041affe7e9
|
||||||
|
---
|
||||||
|
packages/overlays/Android.mk | 1 +
|
||||||
|
.../overlays/MiuiNavbarOverlay/Android.bp | 28 ++++++++++++++++++
|
||||||
|
.../MiuiNavbarOverlay/AndroidManifest.xml | 22 ++++++++++++++
|
||||||
|
.../res/drawable-440dpi-v4/ic_sysbar_back.png | Bin 0 -> 2756 bytes
|
||||||
|
.../ic_sysbar_back_darkmode.png | Bin 0 -> 2547 bytes
|
||||||
|
.../drawable-440dpi-v4/ic_sysbar_docked.png | Bin 0 -> 3642 bytes
|
||||||
|
.../ic_sysbar_docked_darkmode.png | Bin 0 -> 2810 bytes
|
||||||
|
.../res/drawable-440dpi-v4/ic_sysbar_home.png | Bin 0 -> 1362 bytes
|
||||||
|
.../ic_sysbar_home_darkmode.png | Bin 0 -> 980 bytes
|
||||||
|
.../drawable-440dpi-v4/ic_sysbar_recent.png | Bin 0 -> 278 bytes
|
||||||
|
.../ic_sysbar_recent_darkmode.png | Bin 0 -> 205 bytes
|
||||||
|
11 files changed, 51 insertions(+)
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/Android.bp
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/AndroidManifest.xml
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_back.png
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_back_darkmode.png
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_docked.png
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_docked_darkmode.png
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_home.png
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_home_darkmode.png
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_recent.png
|
||||||
|
create mode 100644 packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_recent_darkmode.png
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/Android.mk b/packages/overlays/Android.mk
|
||||||
|
index 36ec11af3068..c5ee8556b75a 100644
|
||||||
|
--- a/packages/overlays/Android.mk
|
||||||
|
+++ b/packages/overlays/Android.mk
|
||||||
|
@@ -26,6 +26,7 @@ LOCAL_REQUIRED_MODULES := \
|
||||||
|
DisplayCutoutEmulationTallOverlay \
|
||||||
|
DisplayCutoutEmulationWaterfallOverlay \
|
||||||
|
FontNotoSerifSourceOverlay \
|
||||||
|
+ MiuiNavbarOverlay \
|
||||||
|
NavigationBarMode3ButtonOverlay \
|
||||||
|
NavigationBarModeGesturalOverlay \
|
||||||
|
NavigationBarModeGesturalOverlayNarrowBack \
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/Android.bp b/packages/overlays/MiuiNavbarOverlay/Android.bp
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..fc724fb7a686
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/packages/overlays/MiuiNavbarOverlay/Android.bp
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+//
|
||||||
|
+// Copyright 2021, The Android Open Source 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
|
||||||
|
+//
|
||||||
|
+// 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.
|
||||||
|
+// See the License for the specific language governing permissions and
|
||||||
|
+// limitations under the License.
|
||||||
|
+//
|
||||||
|
+package {
|
||||||
|
+ // See: http://go/android-license-faq
|
||||||
|
+ // A large-scale-change added 'default_applicable_licenses' to import
|
||||||
|
+ // all of the 'license_kinds' from "frameworks_base_license"
|
||||||
|
+ // to get the below license kinds:
|
||||||
|
+ // SPDX-license-identifier-Apache-2.0
|
||||||
|
+ default_applicable_licenses: ["frameworks_base_license"],
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+runtime_resource_overlay {
|
||||||
|
+ name: "MiuiNavbarOverlay",
|
||||||
|
+ product_specific: true,
|
||||||
|
+}
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/AndroidManifest.xml b/packages/overlays/MiuiNavbarOverlay/AndroidManifest.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..3f10e2e03675
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/packages/overlays/MiuiNavbarOverlay/AndroidManifest.xml
|
||||||
|
@@ -0,0 +1,22 @@
|
||||||
|
+<!--
|
||||||
|
+ ~ Copyright (C) 2021 The Android Open Source 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
|
||||||
|
+ ~
|
||||||
|
+ ~ 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.
|
||||||
|
+ ~ See the License for the specific language governing permissions and
|
||||||
|
+ ~ limitations under the License.
|
||||||
|
+ -->
|
||||||
|
+
|
||||||
|
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
+ package="com.miui.systemui.navbar.overlay"
|
||||||
|
+ android:versionCode="1"
|
||||||
|
+ android:versionName="1.0">
|
||||||
|
+ <overlay android:targetPackage="com.android.systemui" android:priority="1337" android:isStatic="true"/>
|
||||||
|
+</manifest>
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_back.png b/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_back.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..be2b145b4c698679bfdfdc3e5834ad12a56724c0
|
||||||
|
GIT binary patch
|
||||||
|
literal 2756
|
||||||
|
zcmcgu3s4hx8V?1-3OZnL5L?tGprz_2n-D@036KXu)CfXOJj=t)?k3rRWWy$qfRADd
|
||||||
|
zhu~RzrHmZ`k!wBAa-g0-rC<@UbSw%?@2-FjLbWI3sc4FiE8=+@UZak6oX*Yd%<lg8
|
||||||
|
z|Nnj8_xql+C5ap3=6k*A#b7YztKyYO^xNUO0Ve${b@zQjzvi0be`{edy!~9a8{=SQ
|
||||||
|
z0E02-I-%KO-J;$gK}jPA!ALF6u^Y`an!$*Swwn<&6Ssm|Tu+#!?7J;(Y>>dD?38dd
|
||||||
|
ztTrof0}-E3;mP?MHE4b&D#qB+QDCH9LMt%hRs^&gvrHC=UCN%+E1}n}Z7v&}gjh4B
|
||||||
|
zY?;d-xJ8`^Do6?k!#P3-<q7y;gqXt<!eYK)HOPl~5nMQe%L{{Go&*+3!o=Y8#ip%M
|
||||||
|
zm`;+UTsv)x{*tl{R;yXU<=SjEjxCHsQhF{=EEaQNK9|pjXar=*Gg%QkWU>U$Xi(x7
|
||||||
|
zlp@Slf;53Hjfj@au}axA(<v8>=2^8S%XFCNfN|}JnaktAE|(^O7&?nH=TKRb#xazO
|
||||||
|
zXW>TNWVO&(-YnK^Ag!duK>mX2+2iL7(4keUXKlQci_ti1!eWihrQMhg$V<@{O`aL&
|
||||||
|
zCgBz`heGk#T$*OE%Nw&qLE(s%q%<U%HIt~s8OoqS;Yy4M3{4?S7-_S-^Nb9xM69@!
|
||||||
|
z&4>9g1PdUZSi=)Z;4q0mv<jvd@Dx-{VuUX5c_<&&z+wr^e-1~N42D>dS0gc0q9Z9I
|
||||||
|
zLVHUX5k1Z|oAhjOHii-fnMG2xNt##Kv->KAB9S6>L>7HuNs5z$s#t}PCl(4JK8H6+
|
||||||
|
zRIQe%OcpC*LUEN+%BCa3AqY&Oi@?J$Ow5Nc1V$i!xIhPKg(wU~XoZ+CLZFL41n7*s
|
||||||
|
zl0<V{`Ja);Xn7tSCgcf3;dFTT0*D_WKq0M&r-igAj_`Ftfmj4%Gx7-(LH8e$^{e%`
|
||||||
|
zy3$oRl6b;Gr!;T6Z<6us=~Wg1PS%P9L0vr{Wuva-<1~Y*ZQ>;ncs&oM<ZT9=R{DyH
|
||||||
|
zn1WeIoz;d=xJ*w+>vf8b`%C;SNbalIzh3@c#{R`3{gu?GBa0dklOCsMDwpkYhU=O>
|
||||||
|
zQ+eUOn6k;UXC~DQoF0F!<?P(0KV~O4ZlYCF^j!XUap^q<!=qTGlxgghcLpzI2I7Hd
|
||||||
|
zop&1=Rb{C=O13WFv&cEW&Z{wW;e<Q&?MZ<+BoVl;U0-vbb#Cc)|K)p_8jp83c{$Qs
|
||||||
|
zf#$i|iq9(c4X9IU6PsEtnf9^*eRi@sPh4r$f7vp`odAP8ZY+*k++U>^ZVLS7lRN7l
|
||||||
|
zGj9J74={mtxg3rG{8<h+`H2sG=lME{3bz&bt`6~VFWeRs6aad7&uwP}ZTX)=m&8A2
|
||||||
|
z<bEDn+B8vnHu!AKy$90a>eHA0^M}}$j0Nn&!DSa(^KN}#w`^tkw+ViJesRq{pPnhb
|
||||||
|
zetNmiJ2qydzrX+F*1FBVSA4B?vU;l?=0D88{Gim=ZOI}|s)%}cdtiN9T3S#2#PE$v
|
||||||
|
z718cb|70_~Q{Hs`<9eWKq`PVjExG8r^3<tQ%iQ<7J^n7e=TLQ9gAX_dsM2>==4BGZ
|
||||||
|
zu@9BzC*uzicE4Tlr0%{ayKp?GGHU1ezBRVdAIpHh4&2tewg0R3&kcRSg@f;(a14JD
|
||||||
|
z;%IJe?&)Lu%KdusfwggQ`!y@ee+~z}x_$Fz9tFJ-BydIo?Z=XjrXSa=w5UAB#>O(j
|
||||||
|
z<zV58Lu-NG6&Ghf2f7AA97RP%U4w&z2~#JMC6U?J&UgKj%FCVaAir0*&`d!05%AN`
|
||||||
|
z6Xp9r+EfCo{X*H>87s@zrIZ0)Md!+|UcGuW!Vv?gBUb@TCNq6?`MS0h3s!SDyZZY2
|
||||||
|
z9$j3!0H`VP6!i`bJ>79kGrqiJxO3lIL!|$1--Gso`c%#%ge8lre(JpULr0I%U$#bW
|
||||||
|
zIM%X1JMeD8uC~_J3ERS0V`Dqkbp*=xJPvp=Jv}o*4|M%4v)=2iT}OILNAQjj?j84j
|
||||||
|
z8PGd?=6!k1y*oPIXJ?iMW%;}j^G$DW@2Z@u>WTcYfbY`x`!@Nw9Y!(i$HsL>eu|!V
|
||||||
|
zYcRuC?!BRE^Qh>?M*&oGYR8%n<c8fu;-D00P960={75z_mFq8Ob;wx?VMSd_P%NO1
|
||||||
|
zy7hNM^|g?aouxE-ASTDg>A84uN0N`?@~s8uMrC^ny2nO(+S2Marz|s+To)apFUHaY
|
||||||
|
zZTxnryk82`26T3Ie(;;xe+-oc)TgyP+{BualgDfAM>p3#ImztsJp1Xt3)YWyuh?7A
|
||||||
|
z?Q}YAnT?mLRr8XQlkd7$5y#_z?e55&j+zZCEEA)HE$`LEg!=D2Ky(yuOO7sB81xtI
|
||||||
|
zX}j~9^U4=wM%vb`2P-Nocld}taaHOcjg{w%KR515?39hZm&k0m>4`VY^SF`@H7YJN
|
||||||
|
h9r{0Z;ER1d?z2;NqUud$cCPC`Qx&^WSufw__%Gd*;i3Ql
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_back_darkmode.png b/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_back_darkmode.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..4873f84ff7f4750fa3adc70428ffb123502c1051
|
||||||
|
GIT binary patch
|
||||||
|
literal 2547
|
||||||
|
zcmb_eeQeZZ81J!-O&ofY7;XsC6~zzi_3L(9o89Ji-N!}lm~(+4Q|z_9t?aJ7wPkn1
|
||||||
|
zfy<Q1N5sVaL5?ZINzkZ#i3x{-Y|2E!v6)~*5ZF)|2|5SPgf9`_?&AVxDjF|o`}Xbc
|
||||||
|
z`8~hq<9%|gOFhMtCrz6KLC|DZ30nr9O~#cn5!}}#n6HD!9l?@?8U)=r#kfq+hSx0+
|
||||||
|
zl=PESUZGdG=Q6w!uyTUp6|Lbw5TGF_Codf2_!?1%y<(LlJCMPT_am?*IFJRIZrmMo
|
||||||
|
ziq%rdGF5zPnWvmzR>RW*l9vnTgc(2(5Ood?2mG?egdNB*F9X)bHip2%5WU8M<Qop*
|
||||||
|
z3U?{&R8$epwAxXgu#s>UZ6)kDP1+uVNu0>S@GOj=P@G_JJ44a%=nnzjRKdrTu|=c4
|
||||||
|
zz?%c9*7YERVWCjS8ltR<T7?lbO=CETkt7Nbs8%oQTo{$LSz`>WsPU>4)FnlR4MxtZ
|
||||||
|
zEY%$dP&yJqAQ-2Wwb3+zgkfPWh!IxY2x%B7@Nrylsp=ngF7TM>7XzZKYXD2cvB7FZ
|
||||||
|
zSF~#7FR0_6Z*c%p>vqR|jH@LOh`Z4A!a5MfXhOzCYvuJp5i1ilWvR-Gg>^vYEF+pA
|
||||||
|
z<5WdXSJZMv@sAa%bWAerbQ*=ph96!a$$}En9=XXzWI0`QAS6!WC~iXux}3;naEh^I
|
||||||
|
z&%wb0AA!0RLGsn#3MKJ!oMv#6!HHX-plbw9=l&5a@QhDU100B13UE~-7L=<HIG#zy
|
||||||
|
zsrVHYI0ovdoA+H#XQ`_ABtQ6|l@%Aju0p4spzU^)v=YN|-EPJuYdR<MqKkDPAU{?~
|
||||||
|
z5*Q!n&BA${LP-(NMrofd3-x+QaO3TnbS6)6w2d6IXBB>_(FJ4nf?>~lMcU3$XeKX^
|
||||||
|
zC{5YCD2-?0C_&PkS0rsbne7|1pQlRT6mtIm%wwEQqkWhXNdtwgA3Z%!iM69EzXT6=
|
||||||
|
z48!rpNpK*%(E_4?jBZQgW#G0V7@-YSi-7cR`eFp8DLy^KsbYQ=$ky$&9`;xIHLmU-
|
||||||
|
z)ZbS9##28|tNuszqsir~Ik`#%!xck}crarOjg$uabJd2w-88bs;9w3K%lH5WFYysB
|
||||||
|
z%79u01Ns?xr3r!(wz}B-^6={er+U|J(JTiqUYb=r=?+)j*+%v?w(NOt*UUFdHlyw5
|
||||||
|
zewov1Kk?#Ly5gAsp5x!BkN<A+KDn+0K~`^eKX8v{`o-)h)=(Ad^0W*NeA2sp*Ojk4
|
||||||
|
z$L0?1Ydf)g%fk2P&)M9vZ04p~Jkiv=$(u4EHNVT8XlYuLk%A}Q>oh-?@@O;MVJ=V2
|
||||||
|
zZ_Ied(gZn6iT@dxz2}l?QDA3<|9p?wU)Pu3XY1=ft6n)i|8!<uZdzmP<ix$ElTc+s
|
||||||
|
z&X<?kZ=C+g`9*BVf<$*jde7^gtX+3yP(4Y{CR>;EFHfs|=cwyc%>Gg==jDv1wXO9i
|
||||||
|
za{teI*@9iE0OJeO(an)d#Rr^kc+Sgp8Md^_6WwXGFTCAS#LdqT`WJT8bcjb9py>9V
|
||||||
|
z!taSzGdVQ34-eK;c_x;P{l0rsHv(uA!uLkoBW)9Ywl{VD0E8S(N1`7@?w$~u*1350
|
||||||
|
zjDo_TCHiipEvYWOv#4eAn@Bi4`cdR=Q^?Y}b9Q=xZ{wuBiIv~RdI<KyqPF)w5A1x}
|
||||||
|
z{Udhp>eZ`{bj;~k=UZ`q^g(3B_1$e%OM2J8Kz2R!scbL0fIMXBobD!GdTald#UE8(
|
||||||
|
z%%i%@UpIy}ys9K^?2aAT$BVOPPc2}7OFfyg_uJTRQ}Qck2Hn=g##NVBpE*@Dm^n1i
|
||||||
|
z(ein)p(WJ>BP)beXRiBBC*{bg2RHarptOq#pB+Ase57IO4mtHcH)B|BJag#6lT>d)
|
||||||
|
z&e!MKYd16)pcy-+T#iQ8NA~PL>UxV>Ywqi@Y)j6S`k$w?tzd_2HABdEi<&LDf&OGl
|
||||||
|
zTMQD)&(DC^16irql!1BVKzD548=h$^kFSKxX^W`?7wW0OL$Ts(m0$Hf=7d(Q+HUb)
|
||||||
|
zZja176mx*WEKzSvUf!OU*cv&PpiG!*8*(2$`^!o+r{-7RHTJTToo?Eeu+BEr?K!7Y
|
||||||
|
z*9^Z;G+Rzj%oUn%d}G_QeqvzVy#Kj5|3$lBneo8k53^T$kGYM%Wv)UGyRG24rau72
|
||||||
|
C-gtlj
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_docked.png b/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_docked.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..1c88fc5d571d0ec91b735082cb9c512603b9ceec
|
||||||
|
GIT binary patch
|
||||||
|
literal 3642
|
||||||
|
zcmd5<c|4T)AAgXLtU?sZ>`;z1=4ec27}t!mFecWOW6V65n4>u|Nyt(m{I-K4RF+T?
|
||||||
|
zD;v2IE9>Y`v5jG4)vknAtz6k>N?yCa-~O)sYv(o3Jm2U0eSbg4`}_WUW+sK=?xeCt
|
||||||
|
zdkp{pDlX1sDs)ejUW%)s&s4c}i_lGp>+Ht|0A+RQB?IJ~+Xw*ix=b%$fv?*x0-eJ$
|
||||||
|
zqcJ$4pqYrph0p+CWh3I!=#iiR77B(l*+lr{%_caE$sodg%-v9KToM?;bdKSHyJOtF
|
||||||
|
z=rNIWJOgfH4YLvvAOkE=K!b@`QEWazM1;S$OMu4GX(Sx>9wLY&!tJCEVZLq@7>UCJ
|
||||||
|
zVdiEy1RagVz;@ux&^QzxgEfU=Q0N^<)D9$iI|79!pm2okc-Zm_4te7-!U$Bd<FYU4
|
||||||
|
zi3pDn2)G0!GCDfiEPA^chZl}S<MDVT3WLO85D)^vKfo5yL<lxt|Dy#m$fxs|Tmh5A
|
||||||
|
zhDj~bLODVK5e`NAAq5t9#Vnh@OcO*HQbgk-(Pk)VO7DRT`U;LK<VC%A&Y&Z~D3ArR
|
||||||
|
z1$+pLUcquBI06nog7a@ouPpz;0Yt5v+lr4rjfKTpalscj?1$1=Cge}ie6Iss5J?63
|
||||||
|
z93hVmI_!tS)R$(%C6IU^O~B!KaX3*Q4~p_JWEhDgJs1m^kq?v2;6(F{f42uD(*z(9
|
||||||
|
zjzM8i2ox59#(QBf1aor&8v7Z_f`CGOfVy!Q%&-Ih3f)dXLvP$4ppa@9Gy(0uf*Eu|
|
||||||
|
z7>CEAK{+#7v~Uo~WrxFID@+ndoG1<tatuYc{rB@OBoc+k31db<3w)}RJ<P>{ghS(T
|
||||||
|
zI0VKF{XSebH-ZbBFQBpMpbMD@hxjpLG8u$WIxRE|2Z9JRnt?{(vDi=qEewl6phC?-
|
||||||
|
z9NIh-1%hE8_meqvp;QGQ_cQ*_{T@6fRE4ytzidZZn^O4@oSA&+U=J);&u(zv@+gW4
|
||||||
|
zd#@M*jV`SOBAhOj0LXwZPc#2A10T#rM}Uyg|DcNxFg_<t5KZHOcHt0P|BLjHQ2a<~
|
||||||
|
z*?vd``OjItU;AB&e}qGQLpoe(SkS{t%LCa^pW{Idtrjhl4*-g-E@V3|(Ycp-tO$+S
|
||||||
|
z&FxK=+vlxrqVESZoEf;j@ym6`TKrmdN42#hk`pIQVr1+tAak^g?MGujO?qpO{vqvD
|
||||||
|
zHRYZ@)@0Cf=sFkqkax9h%U4c?&Y?!xhLT5C<2_vy<2|I{u6V)m>NPj(CVp9L&g@tS
|
||||||
|
z-yi+VrXX+DW}!c6PoMm!)CSdrdOgZ2*#!7H83!0(B)k6a@^F|sDOZw3F?#K~J^@wF
|
||||||
|
z-woWEO3H4<*{t)OyK%TkFGEo$LH;~E3%OXB=D5_PrGm5vf)gHIkL-&ZkVqCw%gXXP
|
||||||
|
z7(6GeHtRHqU;oL`lc^UCNEiOG3aBz|H*lc>&HK)!vc%hf8|9IHS>9K?O#F+e#yQ2a
|
||||||
|
z4^hXj6f>93=I1vGhg(w)0$33hTO(s#{sJdZv<HSqMn(!od9?>8#BF|lezimlrb^HD
|
||||||
|
z3UjP-P=WGBNkn#Za#B50JUjlTuM+oDU84mS`%rG5&mo`Z^EL1v>(UQ}D<4QtLMSUM
|
||||||
|
z_gNAMahe04n`QTX{r&hib>+y&oSHo*ryuVuI^k)mseHnqR!2uiUR=WhC>jnfmwL-a
|
||||||
|
zEG{rGXH&`W4w2Ph&aQ1@Z||4=jfdvr96V3lnkmT5y;*l~W+GVb&W;%3V@c~?xdaS>
|
||||||
|
z5YsFSG@MEnhJ}SSj!#Yw$(>iR)wWf$)g63kwFU-<o3;dJrXEroHfI6>3JMA{J$LU8
|
||||||
|
ztsUH8+KHK)o3maGdvtS4S$TVmo~;V`n535fe8(;2*Hce#>j2iaES=jlz%nZ<i>+W2
|
||||||
|
z$>aT^1)PfMBVE70c0|#YkT>z#CrWG<STA}dn_w=I)cbqNT#Fg`Hhub5%Vx{{f{RKq
|
||||||
|
z!QHULugb>U<3XYD&8^YSY%NNFQmn}(_q;iuO5fOLTGiFnvB$QRv>&mN0o*T8d|&za
|
||||||
|
z2L#OM5@V`2bDjriTgShP^|0D9G^VAoCRw*$=F*YkP2_7h98Pm#gM+79_}%<PL;_;U
|
||||||
|
zaYJOX?0F%VJCznf!{sh+87!fbdNtq!4F_k;Wc6bu5=nuFheyGSmoFC;Z9hxUs1It+
|
||||||
|
zeZ4WUVfBWfiVLiekdT@2@$pFlbX;Tc87%Q=X=!PEp%OVFXJ1lLQBlPcu~;EdoZ2@0
|
||||||
|
zbrf!1)vZ@kIk_d3nWIxzuBF>vDGcm0Iqljuv?I^`@(F|Ftu80pEbL7*(~8tn$d2BR
|
||||||
|
zGBIbn44-m+RT`HHoif=1p>T1Hu2V_8BAiaAE4cOUi5^;igmz`Es_IP3&BBKbTguYw
|
||||||
|
z^lTp){;*zlUBQ_%KLrN{E>673t|ahk2PF6J-<ONHSbHQ)gtb~yALLsLr=N8fL__Ru
|
||||||
|
zRZGbr!z+o}>1<Dpt)IG3_jsN%0`64lo;ENZZ|biym25ao^UI=%YnbBwm3z#zT#Fv`
|
||||||
|
zQcGWB3+^Jjy1HWd3vXXF$r-^=^ZiqA`lk%1_F5;dsz}ybzf-B=nSMy`gS*73eX^Y)
|
||||||
|
zD7_1Z`_EC-$ZFz+B9D99qI=_VgC{#5_WQ)CcN?@!x1Q?g==g$2Bo-9+{@mkhT7%F`
|
||||||
|
zW2KSd#(r5NRi;iG99)2)Onr;Ojl0|{O*;j;mm;8`a-P-EHhQeR?RzdacV7JT_R*!a
|
||||||
|
zllLi(Un_b}I=Wt855qw!hh=w47UNYK{IAv3%}H8Y$u{-hcTsjfq&KLZA5))FRD}rC
|
||||||
|
zK2rJ1T&J(juHHR*Iy#n$6$t7~ObIThsParcWO<}K@MgxUZ@f)5Aac9oE;FCZ9HB9G
|
||||||
|
z7Ev1^Iu`7<w(m2UjSZTfQ9XM5DFahF_l4{Ii0ZAUT@RI%?RDCA62I;o9Y`1*9j%C-
|
||||||
|
z7?|A&ykHmlFdE#h-~i{NpKN{t`ekie__n8~C(ay&x|gn%Vr&w$B`mJ@$5R>!j|T?_
|
||||||
|
z_1rx?mTpN-0sN;e$<|mqYkP_6`PJ~GilBxV3!_^tEiHXOO<_$sZBuj2{LJK%@ms%d
|
||||||
|
z*b;&~?DI)!3bY3<Jq(PVymE1I@t|X9s!GV>KrNr11#XI??cAxXzI#ypD=(8bhnuLT
|
||||||
|
zngw}ye%R{4W{<0t<-tvj^))rW-a|SUQFrY+;K7BeC*QERb>!96Y_q^8%IHmA^iwAd
|
||||||
|
zJ@(gJzb>4Y&nZS6PBEU8e>~Ejsg)@2l%b24tN7A)=Ozu{>LrhYclKGM&riC|#=c_}
|
||||||
|
zwKW8cNt{dV=$>OQUd%%Z)9*i)TTsx1x3IXO)%<zAb9g+I{KooQaGSh_t4&SucOji+
|
||||||
|
zPZS4zaV9zHZ4jyVxPDhp&%4IUmtRc(fa|P!ZRnA|u)DX~A+Rqyt!>!9cF$vBAkz87
|
||||||
|
zkI$wLbXS=w0}Q{c0DpgK#z@leD-l#+TSF`RHNCyXCp#Dix1F3dP)mtYYFru~9u6j0
|
||||||
|
zT4pAWD85lWjDfmy;fuM8^BE|&>9aR<ux)ojA>PN-MRrjP24m^F@4jQrjEbYXJ4Sgk
|
||||||
|
z-?q2gkkq@)v7Lo7BJ_MoP%UrNY5v!j^C@LzHqHiWXCtt62;EQGZ$G_OX5?z6vBtQ$
|
||||||
|
zv%@%J#J7f(4M1JEy~?zKTKZEBOQ)Dw{&U?s-`?tE1=TIF{PF(ErbLKVt)-Ep7>)Y3
|
||||||
|
zmB;;;C`Ss;J@85~Rzb>^s&u0=Z1)0xudnCjUkeLb#35AXG~LEX`tQ!g!JS-gACmYR
|
||||||
|
D=8d64
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_docked_darkmode.png b/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_docked_darkmode.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..fe51e11921ecb35c5535e7c446769af7f66be893
|
||||||
|
GIT binary patch
|
||||||
|
literal 2810
|
||||||
|
zcmcIm3se(V8jh_}EK8-jfcRpFisopZKuAUc4GBuXuz*;Bl4?jMA>=V}5=f#b5>wH&
|
||||||
|
zNOz?^0L5da^%X&CG(sC#P&iP~WhtQrr3fM-rHFt=DYz3}$L@Bwk8?Wb+_`t|{qFa_
|
||||||
|
z|1$?7BQ`j{x#&#{2II^LWk;j4-aZ^1(Dz?ocNs&cxysNu6$az9z&>VSa`P8rFmskj
|
||||||
|
zVq(>?+>M|BmJ|3wI1wUf<w_Kd!2|?pm3)B|QUi&QSfXHH2g=H^fJDf^Zt>%ixJnk3
|
||||||
|
zBnjPtK$~_%#0Yjs1#}@cC=dwHf+&F;Qu6_=T&7TgS_XE47ev?gZ6X$!fT*PmEYmI!
|
||||||
|
zh~-8CEEs_RKLQmmAp24Pe>#CoCDAFqYXJ(0>`x^56Ujb!5*Z{>K_5CW^<YtHh)@JZ
|
||||||
|
zv)50_LcbW;B(+)z5{Vj(hM@5wz=)Vgrqk&}5`{>i;86r#rBkT+TD(HFe42p`sRW2b
|
||||||
|
zsg}SBz|P1|gj3WEEUM|G33BBOtwJ^BCe&d>Eni6_6G(QGCV)c03{IJX$R>mf1w=>&
|
||||||
|
z$svVWg<{DwSY;BdhE+-M|Dc{Z{)qt8wOsCujGxs-E}s#hQir6XW=uKcXVIz{of0BO
|
||||||
|
zLn=505kMiSsG7^|)+j+10`b)_5(C4s=|DwJs|>JM_Q249)mtPAA*@m1UbzFY`D%!P
|
||||||
|
zrI08jJjoYNrpHhypr0Q|_FY4wfh5u-lnV<bBHe#OeLyk=B>VgXie`<Fujc<ESSSER
|
||||||
|
zFe2xpHcRAuF+@}<#8_a)lOPM0!3ZiC)z0VDeGZEiiNGR>3_VaqZwLlBAuKAHPNm{0
|
||||||
|
z1oDKsTrS8_sMLIg0OGJ2SkylRi9`sBXk?nNfF{5T{i$TU(AO8j(?nD{o=Q)INCJ^R
|
||||||
|
z**8%%eV+{rQtVkUeP8$+@BamnpjF71{caw6ZQ9cZ43((R!0M)|XA`u2Y9*5Z6Bz^Y
|
||||||
|
z1@=l{U<LLRfP~noZOQNUz$C3E2|`K#PhL#IRIo^`;Uf@JjC$+Wq#hB~pJ*@JNmGdb
|
||||||
|
zY30P(D<wV+NBf3-In%JvkC~PSDbPNLpbgCy>ah>)lLii(8Kcebzsuc!V$0GuI>awl
|
||||||
|
zKKQ(mz4v(ayJf{4l_4t~-GU<TTtDl?GrKVT^|zvu@hjKN-ORof>8>}smVR9r8}m<W
|
||||||
|
zh&#{G^<3);?tT+Dw<xTy#!Ty>z@Ih*BLgSu?>&<}_;O%Z&v;M!^X~kild63eWir`*
|
||||||
|
zGgOwo$4p=0m@(U{bhg(=0Q)E~d%oe}e8W3>7oOfF)a7)z%WHFk)pLUZ=6(XxafM^!
|
||||||
|
z%0C9IY)gHK87eL*K^nT^`^L1GfodMj!1yM6m)W$nbg^c*tL1TW(75}hj*rJjmfY$r
|
||||||
|
zvTeq7XE*Iw{$tOoHLNcVEHlLSeQEOwyj+1Sws}~h!|369Wm9ZiT$Ge|b6~rc0~J(V
|
||||||
|
zj;?$Dc3_oP>AoM<wJ+4W4~FMgI+^!eFyARCH@qC~YAe3xInY#^b&c=(EXi0uUMv0X
|
||||||
|
z;D*60o#jA3g?+HtVzHbbD-rMgz&T*wg2J3FMWb0SGvoVarMYj-&9~_HN~O}GhEJ+f
|
||||||
|
z7ZrxsK5B5O=qk+F&=Yqm2bs0?lF71k-qWU?O3#zW#m0V8U4K_&?cnCLof)R94ziRC
|
||||||
|
z(-F}PAb=O9(?xv{hD)zJUVBc1KX0XE%{Me1?i!UEHH7n#<sl3TeWderGQMdwljcWn
|
||||||
|
z&)nb^E0tbTz2FwL^4EK;4K&`x)jNDRuQ{H0Z)agnOHb4(Yw3Gs3!dM(KO8jpeZc$a
|
||||||
|
zWzO42zgd-YvO;_<AjP4)Vra~Ey5aiXHLWpE>fi78tTx79DA|(dPy6s$XBVxwd&HAi
|
||||||
|
zm?k&eR_3_PT4voHm+9SesKd$W{If4^wx3wryjn23Fz2w1bTU5pdO=r4bX|D(S<|1Z
|
||||||
|
z)Xtks*6h}VT?sdt#&h3g@y1Gc+OO`n5jxAqY$aFc>o(^d3Ct{)8Y|#%-0h8h&VwF@
|
||||||
|
z9(#9IJ2&~=$nr=mwt4fa-ncSYc~|=x^-0jS&!xwVl=jY6*PFc$a^hN)9z@B7qpJq<
|
||||||
|
zqU(x28(E*UIrHHn@5P(m9TcP`|6^rArF%Fo-J5Ba4C@SgTdQ-*j>bIov~9z6-*+sy
|
||||||
|
z=fY!Y?kr|0nQh0OxXbUSM@b)v4~M<HdYv;z(Q@Pnx*j!M-(NP!X}LsR@~@|>Hi{Q%
|
||||||
|
zE_%fqMn*<>@j>I(+Fs9&zeU$I>%Kl~YR|~L!a39HaBQd5YK^!x8F%w-lb7~%&XZ=H
|
||||||
|
z+e4|_s$}En<A&Wk=G0ta-akY|gU)+zndjDR#+oaapa%~}2zNN^=T@%st`UdfZsX5K
|
||||||
|
z;<{ab<Ri&aN6nciy)qR^J7axe32}Y2(=D4DaiX-{w61nFQ_KIVYk||nl!UxvxgJ=@
|
||||||
|
zPyXaq(EQZ>``&ENi>7hMdC%_F_+PY^hPRo)r3OWZW=K2MPrcDED2RL!Xt8vkJE)zX
|
||||||
|
z-V~oT)Oux5R;-E33*V;tVNb)yb+5NR>W-2ZRjJp$7KAHI+dUEV4C~Ug_)(`b$H#2-
|
||||||
|
z`bQ_KuDK1jhWpnoWa7F50`&#S+^1N^Ir+wKLF%`c_w_FNG}$;%Q}cLP|G-;sNxL%F
|
||||||
|
zjkdIn7B)5DillcP<S(B8-D*l`w7N#LCG5&?4-_@xs>vH$T>QQN$hPt;8`hqev)+b-
|
||||||
|
VfHkC3x%R(PPDlj%Qt&qYzX3LdVM71_
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_home.png b/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_home.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..20f1d887aedebaadec7f31184bdfe3e662401522
|
||||||
|
GIT binary patch
|
||||||
|
literal 1362
|
||||||
|
zcma)5dsvcZ6eq3COPOfdW%DV^ZrZSmmu5@DVMeK8>Y7WZW@(O;T+M9eB{VT<`aG7k
|
||||||
|
zn)f@oE<`v`G!hdlR3b#c8xe|l8>DE0=1%!ff9^cb_kQR6zW4o|-#O>~uHt;XmYJ+I
|
||||||
|
zK_C#zum>?m;Z6Mb7#YIa&@1aeAQowH-T|Hv{vWHXtnBFM=<e<w92^`Q8&j**TCH|w
|
||||||
|
zW=5ye&3!WP0UQ|_Q79BrskFVly|A!wfjKuf7x4M{d8JaBnwknAkw}F7z<|f&A$<GE
|
||||||
|
z#9}dz$7^nGX0cc_8jVh;L(;OcvZ|`8#>Pg#+uGV-5Af^tdQj5Y*@;G@7g7WV2lw^$
|
||||||
|
z&Cbrcy1D|=)YK%ANCpN5N=ix~<n#IPDIy{wJ3E`nWcKv*3=a<jJ~cJf+S&>ZaQ652
|
||||||
|
zkB^VPe*JoAXb4sSfdMK7NivzNx3?D%jYb1`<#IVVU0q$En!#X*L?S?ds;;h1AP_)}
|
||||||
|
zAPmlOI2^#?IGhE}g|<Kzp-{LW0Lq7!LM=f-K_n8XzP_H#W&;}}s;H>Q%*+JYC=?2V
|
||||||
|
z!GL%y77OKo5-yhu+n_ns)zwrgwWXy6T1_UCp`W0EKp^Dh<v}6PaFC%=sbDCRlamt@
|
||||||
|
z6CeiW0^~4=G>fQ@x1sX<QD1+=qAyI$kd`a0R;^yM1V^rBzv>>;Oz3t0N?$cpk-RL7
|
||||||
|
z-Curq>S*LLrm$bkV3lSj#D<6Y;{swYW|gxi%Zs*{e(6A+T4!*U^3;3jAJaPzMpw75
|
||||||
|
z7$ut5KkB^M^5?QL0f}~RdGFoYzGCL-{5n-sF6Va91!l$rZes=YHif6k(V{Rhzm^#u
|
||||||
|
zalK`;ZDwOVJvHuRU~uxaZ`Dc^TF`p)x#X>!QNDJ?g&SrFgh3=0gAPcLj)}XDS)x}j
|
||||||
|
zQJ<v!mA=U?%l=1~tj%`B)z`KbFE+KKzBz$GdPW=@wWdy+ogj$E`&FZwuZ!Zp<C4}~
|
||||||
|
zVm#p%keE^NFI+55ke}Hcsp&xT<5FtE)tFl*wILQcp5N@wHNu;kTknn!mb^C}u(Xb{
|
||||||
|
zz`fa%H*memyTCaq1Ap2W>D!)vB`lDpEI*IgAvkB_L`bG*pdVVjPYM(XQGXx5K?%)o
|
||||||
|
zLs2>$w}*(t!qJq_*t<Eng8LR58%v)#oqHZo6K-pf@#;>Nf;aRca6{9uQ_PEv<)W-?
|
||||||
|
z(KCaVz2Og5`HT(EW0DOY#`%Z2w?rbt$vWfcc*OArS@cn<@fq^g9Guwf{7Pas%bMNJ
|
||||||
|
zdS?{t^03BBAX+^7!xLN9zWoH>T^@;-lRUM^DZ}5M%WCC|WMSxw>0+B=^sbRM4jZXO
|
||||||
|
z$_Lnf*!02(cHH5lbT?VLt;YvjoU;yD7jgjM%PiY#eFT3yJ0;{s)Z^`kQt+<!k~_Qu
|
||||||
|
zviuCA6KQS^l4A0z$7lHCo-;d7g&3e}+$(1}x<hC;kGbLH_zAlm>$e4s;^kW?4ngm_
|
||||||
|
zE`Q~cX8O<Z(zEsV8qXf?Mb7nT$Cn62o198j$sS3_dA5Umo!g_|H>CWM;Mc75nWk1-
|
||||||
|
zsTCC62DdZ&CLU}r=+K8QH9PflBu(;$$CuS~(S5S#8@}fRZa&GnX#a%YkXXbwx5=MX
|
||||||
|
z``wiJ|MZgXydqYc;eH`$&5TsFXJu)BBv++(-ld-NA|wj=+9rOa!u0;M{>s}ZN=&zg
|
||||||
|
jp|o;zi!=ZHCR`6amaD0~y#7)m{38ggr!VHdM;P%x23q9L
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_home_darkmode.png b/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_home_darkmode.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..96dc83e4a42d70c1b11ac5a55ea5eb8cd75e1e20
|
||||||
|
GIT binary patch
|
||||||
|
literal 980
|
||||||
|
zcmeAS@N?(olHy`uVBq!ia0vp^O(4v{3?%p7eQ=(EfiWY%C&U%V?H>iS4*_MFJ{MqE
|
||||||
|
zmzM<j1v8iwPFQ>B+}+pje*SoQ_Tb9?Tpg9&|JF;%JijfpWO-*ypo^KYc~ESA_nHsA
|
||||||
|
ztz3e$KC_1!6n_!c@R_*xN!py_HCyTq=gggUaniy|?MuCzA69H^h|Zp|b=B<p2PGc`
|
||||||
|
z0>b30*|@*0n4jWq;gIy|zKGh99kpj}USHgEp;$&A80||uT^vIyZoR$k8h+S8g!O?F
|
||||||
|
zcj^bHLXDPyjKZ$qJ6m_`-hKM-Z=Y)^yB^s@+{vH0dq%aAaitu;AQIT=<@xp3rAvP$
|
||||||
|
zy;7MXy;6S{7k&Q3%$mf?)m#uB5~Fl^!4@93r=m)tT64E<TJ6;MO6v5gt#7SPb6q!g
|
||||||
|
zS=4*(tJ=ib0ZZOj6rVo7V5@I<#(RMk0++cf?<&vlvtrdMVZ3YmE^z(23+e$2<s}SK
|
||||||
|
z3ljnsIEfmhoN8+nY~)&eV1{Nl6Oi%vK#S&VmSrqjKFn8_<*>~VU17l9;(OC(gF?VT
|
||||||
|
zew|sHRA+K^s)$ZwynjDjB9%2Z@o9hj@z9yqKg!oksmhKrP8D1bl-3+)o+@o5{UvQu
|
||||||
|
za+deA^S<)eZhOAF(C5HfE5hn~GjCG+m+o&3f0++AEUdr7$EqdsvefBVI!p9|LmNK}
|
||||||
|
z*BAXVwz%BS@myD^`ADnrrX%|0>yoZt>&?Br{aWc8JyVg;b6@KwX1@Ay&*p-y%_*L#
|
||||||
|
z{^ysm=`T&%{PpeY3#V^a$E?)Zo3}Wqvw!=8=ht19w|5|cm|EtWFQ%k?JmTvKOfn3f
|
||||||
|
Lu6{1-oD!M<_NCyP
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_recent.png b/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_recent.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..4f0d314e2621d018c3cd2e4267cf4cf82a78943f
|
||||||
|
GIT binary patch
|
||||||
|
literal 278
|
||||||
|
zcmeAS@N?(olHy`uVBq!ia0vp^O(4v{3?%p7eQ+K~IR*HHxB_W3aOlvXS731D$dNyP
|
||||||
|
z{`~&^8>ry@`}c3(z6CO@t*tk0+O&D|W?NfZAou_O|I!nsR|8q1B|(0{3``sX!dw~0
|
||||||
|
z&!m6(D0J#1t5jH`B>TrxD!+gV@;qG}Ln>~)y?T=OumO*&<LOWDj(nQ-FWQ&&(?pJ@
|
||||||
|
znOy%Gk7P>$)d4|WP*!pH)Y~Ek3+0ck%$oDNf%ERC$_@LN)Si65+@j0wqw%{iOg5Zz
|
||||||
|
u=kcQOsZZh^l}((KO_)H0lQP7Be}}|<Jmh~yiM-bb33$5txvX<aXaWF$9A~fq
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
diff --git a/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_recent_darkmode.png b/packages/overlays/MiuiNavbarOverlay/res/drawable-440dpi-v4/ic_sysbar_recent_darkmode.png
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..f53ec649e615e8491fb6abb63d169ab7e0faa1ce
|
||||||
|
GIT binary patch
|
||||||
|
literal 205
|
||||||
|
zcmeAS@N?(olHy`uVBq!ia0vp^O(4v{3?%p7eQ+K~DF*n2xB}^ZynuIaZ52=vS4ogx
|
||||||
|
zFoXa0-5=lXWwUX~o_?MiC>rSL;uunK>+RLuyayBnTpaC=HT>3}!PR$SSH`j?-mt2r
|
||||||
|
zKs7+%uwa{9mTBst&#^sIIN#?w`Oh@C&bRjEiUzlg7B>c|g@RIyV08!V`R32zx~(4j
|
||||||
|
Q*9XM+boFyt=akR{0CQqV3jhEB
|
||||||
|
|
||||||
|
literal 0
|
||||||
|
HcmV?d00001
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From aa57f00821e0ec7ee6fc38a20bb4f86f83d74d94 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hikari-no-Tenshi <kyryljan.serhij@gmail.com>
|
||||||
|
Date: Thu, 30 Jan 2020 22:20:54 +0200
|
||||||
|
Subject: [PATCH 02/21] Disable Bluetooth by default
|
||||||
|
|
||||||
|
Change-Id: Iea5d24f977928bf01cd7a46b98c75c0a4bd6a23c
|
||||||
|
---
|
||||||
|
packages/SettingsProvider/res/values/defaults.xml | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
|
||||||
|
index 7732da40aac2..1d2c343a4514 100644
|
||||||
|
--- a/packages/SettingsProvider/res/values/defaults.xml
|
||||||
|
+++ b/packages/SettingsProvider/res/values/defaults.xml
|
||||||
|
@@ -36,7 +36,7 @@
|
||||||
|
<fraction name="def_window_transition_scale">100%</fraction>
|
||||||
|
<bool name="def_haptic_feedback">true</bool>
|
||||||
|
|
||||||
|
- <bool name="def_bluetooth_on">true</bool>
|
||||||
|
+ <bool name="def_bluetooth_on">false</bool>
|
||||||
|
<bool name="def_wifi_display_on">false</bool>
|
||||||
|
<bool name="def_install_non_market_apps">false</bool>
|
||||||
|
<!-- 0 == off, 3 == on -->
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From 99dcde5dd0b72aa0e1c3efa37176db236135d252 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Mon, 27 Sep 2021 16:30:00 +0000
|
||||||
|
Subject: [PATCH 03/21] Disable cursor drag by default for editable TextViews
|
||||||
|
|
||||||
|
Requested by @TadiT7
|
||||||
|
|
||||||
|
Change-Id: Id54e38ee418174af8cde4113c849bc292f5fc96d
|
||||||
|
---
|
||||||
|
core/java/android/widget/WidgetFlags.java | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/core/java/android/widget/WidgetFlags.java b/core/java/android/widget/WidgetFlags.java
|
||||||
|
index fb40ee5ec843..c0c6fb6e9431 100644
|
||||||
|
--- a/core/java/android/widget/WidgetFlags.java
|
||||||
|
+++ b/core/java/android/widget/WidgetFlags.java
|
||||||
|
@@ -38,7 +38,7 @@ public final class WidgetFlags {
|
||||||
|
/**
|
||||||
|
* Default value for the flag {@link #ENABLE_CURSOR_DRAG_FROM_ANYWHERE}.
|
||||||
|
*/
|
||||||
|
- public static final boolean ENABLE_CURSOR_DRAG_FROM_ANYWHERE_DEFAULT = true;
|
||||||
|
+ public static final boolean ENABLE_CURSOR_DRAG_FROM_ANYWHERE_DEFAULT = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Threshold for the direction of a swipe gesture in order for it to be handled as a cursor drag
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,47 @@
|
|||||||
|
From 63879a514c40c02d119950d347ff00c7420f23e3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AndyCGYan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Fri, 22 Mar 2019 00:41:20 +0800
|
||||||
|
Subject: [PATCH 04/21] Disable FP lockouts
|
||||||
|
|
||||||
|
Both timed and permanent lockouts - GET THE FUCK OUT
|
||||||
|
Now targeting LockoutFramework, introduced in Android 12
|
||||||
|
|
||||||
|
Change-Id: I2d4b091f3546d4d7903bfb4d5585629212dc9915
|
||||||
|
---
|
||||||
|
.../fingerprint/hidl/LockoutFrameworkImpl.java | 17 +----------------
|
||||||
|
1 file changed, 1 insertion(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/LockoutFrameworkImpl.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/LockoutFrameworkImpl.java
|
||||||
|
index a0befea8e085..325e1fcecc2b 100644
|
||||||
|
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/LockoutFrameworkImpl.java
|
||||||
|
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/LockoutFrameworkImpl.java
|
||||||
|
@@ -100,25 +100,10 @@ public class LockoutFrameworkImpl implements LockoutTracker {
|
||||||
|
mLockoutResetCallback.onLockoutReset(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
- void addFailedAttemptForUser(int userId) {
|
||||||
|
- mFailedAttempts.put(userId, mFailedAttempts.get(userId, 0) + 1);
|
||||||
|
- mTimedLockoutCleared.put(userId, false);
|
||||||
|
-
|
||||||
|
- if (getLockoutModeForUser(userId) != LOCKOUT_NONE) {
|
||||||
|
- scheduleLockoutResetForUser(userId);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ void addFailedAttemptForUser(int userId) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @LockoutMode int getLockoutModeForUser(int userId) {
|
||||||
|
- final int failedAttempts = mFailedAttempts.get(userId, 0);
|
||||||
|
- if (failedAttempts >= MAX_FAILED_ATTEMPTS_LOCKOUT_PERMANENT) {
|
||||||
|
- return LOCKOUT_PERMANENT;
|
||||||
|
- } else if (failedAttempts > 0
|
||||||
|
- && !mTimedLockoutCleared.get(userId, false)
|
||||||
|
- && (failedAttempts % MAX_FAILED_ATTEMPTS_LOCKOUT_TIMED == 0)) {
|
||||||
|
- return LOCKOUT_TIMED;
|
||||||
|
- }
|
||||||
|
return LOCKOUT_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
From 560136af642a5155d82571b96afd62b55e89cffd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 3 Jul 2022 00:08:42 +0000
|
||||||
|
Subject: [PATCH 05/21] Disable "RESTRICTED bucket" toast
|
||||||
|
|
||||||
|
Change-Id: I20a328d3c77962f3a6095bfca42d0b165a093ce8
|
||||||
|
---
|
||||||
|
.../server/usage/AppStandbyController.java | 20 +------------------
|
||||||
|
1 file changed, 1 insertion(+), 19 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
|
||||||
|
index 9e3e3553c125..ec43489d70e4 100644
|
||||||
|
--- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
|
||||||
|
+++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
|
||||||
|
@@ -1738,25 +1738,7 @@ public class AppStandbyController
|
||||||
|
.noteRestrictionAttempt(packageName, userId, elapsedRealtime, reason);
|
||||||
|
|
||||||
|
if (isForcedByUser) {
|
||||||
|
- // Only user force can bypass the delay restriction. If the user forced the
|
||||||
|
- // app into the RESTRICTED bucket, then a toast confirming the action
|
||||||
|
- // shouldn't be surprising.
|
||||||
|
- // Exclude REASON_SUB_FORCED_USER_FLAG_INTERACTION since the RESTRICTED bucket
|
||||||
|
- // isn't directly visible in that flow.
|
||||||
|
- if (Build.IS_DEBUGGABLE
|
||||||
|
- && (reason & REASON_SUB_MASK)
|
||||||
|
- != REASON_SUB_FORCED_USER_FLAG_INTERACTION) {
|
||||||
|
- Toast.makeText(mContext,
|
||||||
|
- // Since AppStandbyController sits low in the lock hierarchy,
|
||||||
|
- // make sure not to call out with the lock held.
|
||||||
|
- mHandler.getLooper(),
|
||||||
|
- mContext.getResources().getString(
|
||||||
|
- R.string.as_app_forced_to_restricted_bucket, packageName),
|
||||||
|
- Toast.LENGTH_SHORT)
|
||||||
|
- .show();
|
||||||
|
- } else {
|
||||||
|
- Slog.i(TAG, packageName + " restricted by user");
|
||||||
|
- }
|
||||||
|
+ Slog.i(TAG, packageName + " restricted by user");
|
||||||
|
} else {
|
||||||
|
final long timeUntilRestrictPossibleMs = app.lastUsedByUserElapsedTime
|
||||||
|
+ mInjector.getAutoRestrictedBucketDelayMs() - elapsedRealtime;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,142 @@
|
|||||||
|
From 051a47e9e9e79b7897658a2ac5f5f9d56fa24e6c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 2 Sep 2021 16:15:19 +0000
|
||||||
|
Subject: [PATCH 06/21] Keyguard: Adjust clock style
|
||||||
|
|
||||||
|
Thinner font, less padding and unintrusive colors
|
||||||
|
|
||||||
|
Change-Id: I21e5d5bf37d724e75ebce4cd89349e0cc4dfc910
|
||||||
|
---
|
||||||
|
.../SystemUI/res-keyguard/layout/keyguard_clock_switch.xml | 7 ++++---
|
||||||
|
.../SystemUI/res-keyguard/layout/keyguard_slice_view.xml | 2 +-
|
||||||
|
packages/SystemUI/res-keyguard/values/dimens.xml | 6 +++---
|
||||||
|
packages/SystemUI/res-keyguard/values/styles.xml | 2 --
|
||||||
|
packages/SystemUI/res/layout/keyguard_status_bar.xml | 2 +-
|
||||||
|
packages/SystemUI/res/values/styles.xml | 4 ++--
|
||||||
|
.../src/com/android/keyguard/AnimatableClockView.kt | 2 +-
|
||||||
|
7 files changed, 12 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
|
||||||
|
index 87a9825af1cb..93e827ac540e 100644
|
||||||
|
--- a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
|
||||||
|
+++ b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
|
||||||
|
@@ -38,10 +38,10 @@
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:gravity="start"
|
||||||
|
android:textSize="@dimen/clock_text_size"
|
||||||
|
- android:fontFamily="@font/clock"
|
||||||
|
+ android:fontFamily="sans-serif-thin"
|
||||||
|
android:elegantTextHeight="false"
|
||||||
|
android:singleLine="true"
|
||||||
|
- android:fontFeatureSettings="pnum"
|
||||||
|
+ android:fontFeatureSettings="tnum"
|
||||||
|
chargeAnimationDelay="350"
|
||||||
|
dozeWeight="200"
|
||||||
|
lockScreenWeight="400"
|
||||||
|
@@ -60,9 +60,10 @@
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:textSize="@dimen/large_clock_text_size"
|
||||||
|
- android:fontFamily="@font/clock"
|
||||||
|
+ android:fontFamily="sans-serif-thin"
|
||||||
|
android:typeface="monospace"
|
||||||
|
android:elegantTextHeight="false"
|
||||||
|
+ android:fontFeatureSettings="tnum"
|
||||||
|
chargeAnimationDelay="200"
|
||||||
|
dozeWeight="200"
|
||||||
|
lockScreenWeight="400"
|
||||||
|
diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_slice_view.xml b/packages/SystemUI/res-keyguard/layout/keyguard_slice_view.xml
|
||||||
|
index 7c5dbc247428..64657547621f 100644
|
||||||
|
--- a/packages/SystemUI/res-keyguard/layout/keyguard_slice_view.xml
|
||||||
|
+++ b/packages/SystemUI/res-keyguard/layout/keyguard_slice_view.xml
|
||||||
|
@@ -38,7 +38,7 @@
|
||||||
|
android:id="@+id/row"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:orientation="horizontal"
|
||||||
|
+ android:orientation="vertical"
|
||||||
|
android:gravity="start"
|
||||||
|
/>
|
||||||
|
</com.android.keyguard.KeyguardSliceView>
|
||||||
|
diff --git a/packages/SystemUI/res-keyguard/values/dimens.xml b/packages/SystemUI/res-keyguard/values/dimens.xml
|
||||||
|
index 77f1803523a8..ed0bca225550 100644
|
||||||
|
--- a/packages/SystemUI/res-keyguard/values/dimens.xml
|
||||||
|
+++ b/packages/SystemUI/res-keyguard/values/dimens.xml
|
||||||
|
@@ -91,10 +91,10 @@
|
||||||
|
<dimen name="num_pad_key_margin_end">12dp</dimen>
|
||||||
|
|
||||||
|
<!-- additional offset for clock switch area items -->
|
||||||
|
- <dimen name="clock_padding_start">28dp</dimen>
|
||||||
|
- <dimen name="below_clock_padding_start">32dp</dimen>
|
||||||
|
+ <dimen name="clock_padding_start">22dp</dimen>
|
||||||
|
+ <dimen name="below_clock_padding_start">28dp</dimen>
|
||||||
|
<dimen name="below_clock_padding_end">16dp</dimen>
|
||||||
|
- <dimen name="below_clock_padding_start_icons">28dp</dimen>
|
||||||
|
+ <dimen name="below_clock_padding_start_icons">22dp</dimen>
|
||||||
|
|
||||||
|
<!-- Proportion of the screen height to use to set the maximum height of the bouncer to when
|
||||||
|
the device is in the DEVICE_POSTURE_HALF_OPENED posture, for the PIN/pattern entry. 0 will
|
||||||
|
diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml
|
||||||
|
index 625ffd3aa3ec..0f7d931f4fdc 100644
|
||||||
|
--- a/packages/SystemUI/res-keyguard/values/styles.xml
|
||||||
|
+++ b/packages/SystemUI/res-keyguard/values/styles.xml
|
||||||
|
@@ -117,8 +117,6 @@
|
||||||
|
<item name="android:ellipsize">end</item>
|
||||||
|
<item name="android:maxLines">2</item>
|
||||||
|
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
|
||||||
|
- <item name="android:shadowColor">@color/keyguard_shadow_color</item>
|
||||||
|
- <item name="android:shadowRadius">?attr/shadowRadius</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.Keyguard.Secondary">
|
||||||
|
diff --git a/packages/SystemUI/res/layout/keyguard_status_bar.xml b/packages/SystemUI/res/layout/keyguard_status_bar.xml
|
||||||
|
index e47eed9ea04a..fe4f0a6e1104 100644
|
||||||
|
--- a/packages/SystemUI/res/layout/keyguard_status_bar.xml
|
||||||
|
+++ b/packages/SystemUI/res/layout/keyguard_status_bar.xml
|
||||||
|
@@ -92,7 +92,7 @@
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:textDirection="locale"
|
||||||
|
- android:textAppearance="@style/TextAppearance.StatusBar.Clock"
|
||||||
|
+ android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textColor="?attr/wallpaperTextColorSecondary"
|
||||||
|
android:singleLine="true"
|
||||||
|
systemui:showMissingSim="true"
|
||||||
|
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
|
||||||
|
index 4d8e3529c5b5..15e3738f2a86 100644
|
||||||
|
--- a/packages/SystemUI/res/values/styles.xml
|
||||||
|
+++ b/packages/SystemUI/res/values/styles.xml
|
||||||
|
@@ -296,7 +296,7 @@
|
||||||
|
<item name="darkIconTheme">@style/DualToneDarkTheme</item>
|
||||||
|
<item name="wallpaperTextColor">@*android:color/primary_text_material_dark</item>
|
||||||
|
<item name="wallpaperTextColorSecondary">@*android:color/secondary_text_material_dark</item>
|
||||||
|
- <item name="wallpaperTextColorAccent">@color/material_dynamic_primary90</item>
|
||||||
|
+ <item name="wallpaperTextColorAccent">@*android:color/primary_text_material_dark</item>
|
||||||
|
<item name="android:colorError">@*android:color/error_color_material_dark</item>
|
||||||
|
<item name="*android:lockPatternStyle">@style/LockPatternStyle</item>
|
||||||
|
<item name="passwordStyle">@style/PasswordTheme</item>
|
||||||
|
@@ -312,7 +312,7 @@
|
||||||
|
<style name="Theme.SystemUI.LightWallpaper">
|
||||||
|
<item name="wallpaperTextColor">@*android:color/primary_text_material_light</item>
|
||||||
|
<item name="wallpaperTextColorSecondary">@*android:color/secondary_text_material_light</item>
|
||||||
|
- <item name="wallpaperTextColorAccent">@color/material_dynamic_secondary40</item>
|
||||||
|
+ <item name="wallpaperTextColorAccent">@*android:color/primary_text_material_light</item>
|
||||||
|
<item name="android:colorError">@*android:color/error_color_material_light</item>
|
||||||
|
<item name="shadowRadius">0</item>
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt b/packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt
|
||||||
|
index e22386e78359..a4154c2bcd8e 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt
|
||||||
|
+++ b/packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt
|
||||||
|
@@ -126,7 +126,7 @@ class AnimatableClockView @JvmOverloads constructor(
|
||||||
|
fun refreshTime() {
|
||||||
|
time.timeInMillis = System.currentTimeMillis()
|
||||||
|
contentDescription = DateFormat.format(descFormat, time)
|
||||||
|
- val formattedText = DateFormat.format(format, time)
|
||||||
|
+ val formattedText = DateFormat.format(format, time).toString() + ' '
|
||||||
|
// Setting text actually triggers a layout pass (because the text view is set to
|
||||||
|
// wrap_content width and TextView always relayouts for this). Avoid needless
|
||||||
|
// relayout if the text didn't actually change.
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From 3c619ea3fbec83453d6386dd2aa8f94a97693994 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 2 Nov 2019 06:41:03 +0000
|
||||||
|
Subject: [PATCH 07/21] Keyguard: Hide padlock unless UDFPS is in use
|
||||||
|
|
||||||
|
Fair enough Google, but don't give me that otherwise
|
||||||
|
|
||||||
|
Change-Id: Ie91e80ca5c6637a51a8acc72fb28cd6ac2a7abb6
|
||||||
|
---
|
||||||
|
.../com/android/keyguard/LockIconViewController.java | 12 +++---------
|
||||||
|
1 file changed, 3 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
|
||||||
|
index 0097196fd841..149d6ca48edf 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
|
||||||
|
@@ -255,20 +255,14 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- boolean wasShowingFpIcon = mUdfpsEnrolled && !mShowUnlockIcon && !mShowLockIcon
|
||||||
|
+ boolean wasShowingFpIcon = mUdfpsEnrolled && !mShowUnlockIcon
|
||||||
|
&& !mShowAodUnlockedIcon && !mShowAodLockIcon;
|
||||||
|
- mShowLockIcon = !mCanDismissLockScreen && !mUserUnlockedWithBiometric && isLockScreen()
|
||||||
|
- && (!mUdfpsEnrolled || !mRunningFPS);
|
||||||
|
- mShowUnlockIcon = (mCanDismissLockScreen || mUserUnlockedWithBiometric) && isLockScreen();
|
||||||
|
+ mShowUnlockIcon = (mCanDismissLockScreen || mUserUnlockedWithBiometric) && isLockScreen() && mUdfpsEnrolled;
|
||||||
|
mShowAodUnlockedIcon = mIsDozing && mUdfpsEnrolled && !mRunningFPS && mCanDismissLockScreen;
|
||||||
|
mShowAodLockIcon = mIsDozing && mUdfpsEnrolled && !mRunningFPS && !mCanDismissLockScreen;
|
||||||
|
|
||||||
|
final CharSequence prevContentDescription = mView.getContentDescription();
|
||||||
|
- if (mShowLockIcon) {
|
||||||
|
- mView.updateIcon(ICON_LOCK, false);
|
||||||
|
- mView.setContentDescription(mLockedLabel);
|
||||||
|
- mView.setVisibility(View.VISIBLE);
|
||||||
|
- } else if (mShowUnlockIcon) {
|
||||||
|
+ if (mShowUnlockIcon) {
|
||||||
|
if (wasShowingFpIcon) {
|
||||||
|
// fp icon was shown by UdfpsView, and now we still want to animate the transition
|
||||||
|
// in this drawable
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From ebb782f9444aa9057bced3609f938ab570279c97 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Wed, 1 Sep 2021 14:41:53 +0000
|
||||||
|
Subject: [PATCH 08/21] Keyguard: Never switch to large clock
|
||||||
|
|
||||||
|
It looks alright actually, but as always breaks under landscape
|
||||||
|
|
||||||
|
Change-Id: I434d033ecae597ed2a7b2ed71e96ba1a963e9cc3
|
||||||
|
---
|
||||||
|
.../src/com/android/keyguard/KeyguardClockSwitchController.java | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
|
||||||
|
index 5c9dd5ec26e7..08e006fd3cca 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
|
||||||
|
@@ -454,7 +454,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
|
||||||
|
|
||||||
|
private void updateDoubleLineClock() {
|
||||||
|
mCanShowDoubleLineClock = mSecureSettings.getIntForUser(
|
||||||
|
- Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK, 1,
|
||||||
|
+ Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK, 0,
|
||||||
|
UserHandle.USER_CURRENT) != 0;
|
||||||
|
|
||||||
|
if (!mCanShowDoubleLineClock) {
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,133 @@
|
|||||||
|
From 7ebf4555ffb7184d67c15546616a6feb9217649d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 2 Nov 2019 08:31:36 +0000
|
||||||
|
Subject: [PATCH 09/21] Keyguard: Refine indication text
|
||||||
|
|
||||||
|
Change-Id: Ib771c35610f712a1de34736e817bcfe616ac37d8
|
||||||
|
---
|
||||||
|
packages/SystemUI/res-keyguard/values/styles.xml | 2 --
|
||||||
|
.../SystemUI/res/layout/keyguard_bottom_area.xml | 1 +
|
||||||
|
packages/SystemUI/res/values/dimens.xml | 3 +--
|
||||||
|
.../KeyguardIndicationRotateTextViewController.java | 12 +++++++++++-
|
||||||
|
.../statusbar/KeyguardIndicationController.java | 7 ++++---
|
||||||
|
.../statusbar/phone/KeyguardIndicationTextView.java | 2 +-
|
||||||
|
6 files changed, 18 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml
|
||||||
|
index 0f7d931f4fdc..19004a4c28da 100644
|
||||||
|
--- a/packages/SystemUI/res-keyguard/values/styles.xml
|
||||||
|
+++ b/packages/SystemUI/res-keyguard/values/styles.xml
|
||||||
|
@@ -132,8 +132,6 @@
|
||||||
|
<item name="android:maxLines">1</item>
|
||||||
|
<item name="android:gravity">center</item>
|
||||||
|
<item name="android:textColor">?attr/wallpaperTextColor</item>
|
||||||
|
- <item name="android:shadowColor">@color/keyguard_shadow_color</item>
|
||||||
|
- <item name="android:shadowRadius">?attr/shadowRadius</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.Keyguard.BottomArea.Button">
|
||||||
|
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
|
||||||
|
index 8f8993f3c8d9..be49748b8fb8 100644
|
||||||
|
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
|
||||||
|
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
|
||||||
|
@@ -35,6 +35,7 @@
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
+ android:minHeight="48dp"
|
||||||
|
android:paddingStart="@dimen/keyguard_indication_text_padding"
|
||||||
|
android:paddingEnd="@dimen/keyguard_indication_text_padding"
|
||||||
|
android:textAppearance="@style/TextAppearance.Keyguard.BottomArea"
|
||||||
|
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
|
||||||
|
index 32bc89c875e9..d124bfbf8cd8 100644
|
||||||
|
--- a/packages/SystemUI/res/values/dimens.xml
|
||||||
|
+++ b/packages/SystemUI/res/values/dimens.xml
|
||||||
|
@@ -717,11 +717,10 @@
|
||||||
|
<dimen name="keyguard_lock_height">42dp</dimen>
|
||||||
|
<dimen name="keyguard_lock_padding">20dp</dimen>
|
||||||
|
|
||||||
|
- <dimen name="keyguard_indication_margin_bottom">32dp</dimen>
|
||||||
|
+ <dimen name="keyguard_indication_margin_bottom">16dp</dimen>
|
||||||
|
<dimen name="lock_icon_margin_bottom">110dp</dimen>
|
||||||
|
<dimen name="ambient_indication_margin_bottom">71dp</dimen>
|
||||||
|
|
||||||
|
-
|
||||||
|
<!-- How much two taps can be apart to still be recognized as a double tap on the lockscreen -->
|
||||||
|
<dimen name="double_tap_slop">32dp</dimen>
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
|
||||||
|
index 5aedbdc20b31..6f4405a8329c 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
|
||||||
|
@@ -216,12 +216,22 @@ public class KeyguardIndicationRotateTextViewController extends
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
- * @return true if there are available indications to show
|
||||||
|
+ * @return true if there are available non-resting indications to show.
|
||||||
|
*/
|
||||||
|
public boolean hasIndications() {
|
||||||
|
+ if (hasIndication(INDICATION_TYPE_RESTING)) {
|
||||||
|
+ return mIndicationMessages.keySet().size() > 1;
|
||||||
|
+ }
|
||||||
|
return mIndicationMessages.keySet().size() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * @return true if there is an indication of the following type.
|
||||||
|
+ */
|
||||||
|
+ public boolean hasIndication(@IndicationType int type) {
|
||||||
|
+ return mIndicationMessages.containsKey(type);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Clears all messages in the queue and sets the current message to an empty string.
|
||||||
|
*/
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
|
||||||
|
index 9e029095ea6b..6c64743aa1d7 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
|
||||||
|
@@ -255,10 +255,12 @@ public class KeyguardIndicationController {
|
||||||
|
public void handleMessage(Message msg) {
|
||||||
|
if (msg.what == MSG_HIDE_TRANSIENT) {
|
||||||
|
hideTransientIndication();
|
||||||
|
+ updateLockScreenIndications(false /* animate */, KeyguardUpdateMonitor.getCurrentUser());
|
||||||
|
} else if (msg.what == MSG_SHOW_ACTION_TO_UNLOCK) {
|
||||||
|
showActionToUnlock();
|
||||||
|
} else if (msg.what == MSG_HIDE_BIOMETRIC_MESSAGE) {
|
||||||
|
hideBiometricMessage();
|
||||||
|
+ updateLockScreenIndications(false /* animate */, KeyguardUpdateMonitor.getCurrentUser());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@@ -559,12 +561,11 @@ public class KeyguardIndicationController {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateLockScreenRestingMsg() {
|
||||||
|
- if (!TextUtils.isEmpty(mRestingIndication)
|
||||||
|
- && !mRotateTextViewController.hasIndications()) {
|
||||||
|
+ if (!mRotateTextViewController.hasIndications()) {
|
||||||
|
mRotateTextViewController.updateIndication(
|
||||||
|
INDICATION_TYPE_RESTING,
|
||||||
|
new KeyguardIndication.Builder()
|
||||||
|
- .setMessage(mRestingIndication)
|
||||||
|
+ .setMessage(mContext.getResources().getString(R.string.keyguard_unlock))
|
||||||
|
.setTextColor(mInitialTextColorState)
|
||||||
|
.build(),
|
||||||
|
false);
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
|
||||||
|
index 339f371c0d12..bd1432303463 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
|
||||||
|
@@ -44,7 +44,7 @@ public class KeyguardIndicationTextView extends TextView {
|
||||||
|
@StyleRes
|
||||||
|
private static int sButtonStyleId = R.style.TextAppearance_Keyguard_BottomArea_Button;
|
||||||
|
|
||||||
|
- private boolean mAnimationsEnabled = true;
|
||||||
|
+ private boolean mAnimationsEnabled = false;
|
||||||
|
private CharSequence mMessage;
|
||||||
|
private KeyguardIndication mKeyguardIndicationInfo;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,263 @@
|
|||||||
|
From 849272eeabd70c3898d8d714934e7dac65aafe4e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 20 Mar 2021 10:35:14 +0000
|
||||||
|
Subject: [PATCH 10/21] Keyguard/UI: Fix status bar / quick settings margins
|
||||||
|
and paddings
|
||||||
|
|
||||||
|
Last revised on 2022/09/24, targeting T
|
||||||
|
|
||||||
|
The way I think SB/QS margins/paddings should work:
|
||||||
|
- Devices with left notch: [notch_definition][status_bar_padding_start][content]...[content][status_bar_padding_end][rounded_corner_content_padding]
|
||||||
|
- Devices with center or no notch: [rounded_corner_content_padding][status_bar_padding_start][content]...[content][status_bar_padding_end][rounded_corner_content_padding]
|
||||||
|
Key point being:
|
||||||
|
- SB (including keyguard) and QS should always act uniformly
|
||||||
|
- Notch definition should only be the notch itself, without additional padding
|
||||||
|
- Instead, these paddings should be covered by status_bar_padding_{start|end}
|
||||||
|
As a result, below changes have been made:
|
||||||
|
- Change keyguard_carrier_text_margin into a padding
|
||||||
|
- Link keyguard paddings to status_bar_padding_{start|end}
|
||||||
|
- Add status_bar_padding_{start|end} to quick settings header
|
||||||
|
- Remove several unnecessary margins and paddings
|
||||||
|
- Animate padding for new QS clock in s-qpr1
|
||||||
|
|
||||||
|
Change-Id: Ic91fa398813e1907297bb0892c444d96405950e7
|
||||||
|
---
|
||||||
|
.../res/layout/keyguard_status_bar.xml | 2 +-
|
||||||
|
.../res/layout/quick_qs_status_icons.xml | 6 ---
|
||||||
|
.../quick_status_bar_header_date_privacy.xml | 5 +-
|
||||||
|
.../SystemUI/res/values-sw600dp/dimens.xml | 3 --
|
||||||
|
packages/SystemUI/res/values/dimens.xml | 2 +-
|
||||||
|
.../systemui/qs/QuickStatusBarHeader.java | 50 ++++++++++++-------
|
||||||
|
.../phone/KeyguardStatusBarView.java | 7 ---
|
||||||
|
7 files changed, 35 insertions(+), 40 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res/layout/keyguard_status_bar.xml b/packages/SystemUI/res/layout/keyguard_status_bar.xml
|
||||||
|
index fe4f0a6e1104..c8936a195a49 100644
|
||||||
|
--- a/packages/SystemUI/res/layout/keyguard_status_bar.xml
|
||||||
|
+++ b/packages/SystemUI/res/layout/keyguard_status_bar.xml
|
||||||
|
@@ -87,7 +87,7 @@
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:paddingTop="@dimen/status_bar_padding_top"
|
||||||
|
- android:layout_marginStart="@dimen/keyguard_carrier_text_margin"
|
||||||
|
+ android:paddingStart="@dimen/keyguard_carrier_text_margin"
|
||||||
|
android:layout_toStartOf="@id/system_icons_container"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
diff --git a/packages/SystemUI/res/layout/quick_qs_status_icons.xml b/packages/SystemUI/res/layout/quick_qs_status_icons.xml
|
||||||
|
index 7a370d8cbc48..0247eebea131 100644
|
||||||
|
--- a/packages/SystemUI/res/layout/quick_qs_status_icons.xml
|
||||||
|
+++ b/packages/SystemUI/res/layout/quick_qs_status_icons.xml
|
||||||
|
@@ -21,7 +21,6 @@
|
||||||
|
android:layout_height="@*android:dimen/quick_qs_offset_height"
|
||||||
|
android:clipChildren="false"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
- android:minHeight="@dimen/qs_header_row_min_height"
|
||||||
|
android:clickable="false"
|
||||||
|
android:focusable="true"
|
||||||
|
android:theme="@style/QSHeaderTheme">
|
||||||
|
@@ -39,10 +38,7 @@
|
||||||
|
android:id="@+id/clock"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
- android:minHeight="@dimen/qs_header_row_min_height"
|
||||||
|
android:gravity="center_vertical|start"
|
||||||
|
- android:paddingStart="@dimen/status_bar_left_clock_starting_padding"
|
||||||
|
- android:paddingEnd="@dimen/status_bar_left_clock_end_padding"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAppearance="@style/TextAppearance.QS.Status" />
|
||||||
|
|
||||||
|
@@ -50,7 +46,6 @@
|
||||||
|
android:id="@+id/date_clock"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
- android:layout_marginStart="@dimen/status_bar_left_clock_end_padding"
|
||||||
|
android:gravity="center_vertical|start"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAppearance="@style/TextAppearance.QS.Status"
|
||||||
|
@@ -64,7 +59,6 @@
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
- android:minHeight="@dimen/qs_header_row_min_height"
|
||||||
|
android:minWidth="48dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_gravity="end|center_vertical"
|
||||||
|
diff --git a/packages/SystemUI/res/layout/quick_status_bar_header_date_privacy.xml b/packages/SystemUI/res/layout/quick_status_bar_header_date_privacy.xml
|
||||||
|
index 60bc3732cde0..6ba9382bea94 100644
|
||||||
|
--- a/packages/SystemUI/res/layout/quick_status_bar_header_date_privacy.xml
|
||||||
|
+++ b/packages/SystemUI/res/layout/quick_status_bar_header_date_privacy.xml
|
||||||
|
@@ -25,14 +25,12 @@
|
||||||
|
android:gravity="center"
|
||||||
|
android:layout_gravity="top"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
- android:clickable="true"
|
||||||
|
- android:minHeight="48dp">
|
||||||
|
+ android:clickable="true">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/date_container"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
- android:minHeight="48dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center_vertical|start" >
|
||||||
|
|
||||||
|
@@ -64,7 +62,6 @@
|
||||||
|
android:id="@+id/privacy_container"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
- android:minHeight="48dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center_vertical|end" >
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml
|
||||||
|
index 008299bd9b1c..271c6d3de672 100644
|
||||||
|
--- a/packages/SystemUI/res/values-sw600dp/dimens.xml
|
||||||
|
+++ b/packages/SystemUI/res/values-sw600dp/dimens.xml
|
||||||
|
@@ -27,9 +27,6 @@
|
||||||
|
<!-- The width of user avatar when on Keyguard -->
|
||||||
|
<dimen name="multi_user_avatar_keyguard_size">30dp</dimen>
|
||||||
|
|
||||||
|
- <!-- Margin on the left side of the carrier text on Keyguard -->
|
||||||
|
- <dimen name="keyguard_carrier_text_margin">24dp</dimen>
|
||||||
|
-
|
||||||
|
<!-- The width/height of the phone/camera/unlock icon on keyguard. -->
|
||||||
|
<dimen name="keyguard_affordance_height">80dp</dimen>
|
||||||
|
<dimen name="keyguard_affordance_width">120dp</dimen>
|
||||||
|
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
|
||||||
|
index d124bfbf8cd8..b91143e9d6bb 100644
|
||||||
|
--- a/packages/SystemUI/res/values/dimens.xml
|
||||||
|
+++ b/packages/SystemUI/res/values/dimens.xml
|
||||||
|
@@ -693,7 +693,7 @@
|
||||||
|
<dimen name="kg_framed_avatar_size">32dp</dimen>
|
||||||
|
|
||||||
|
<!-- Margin on the left side of the carrier text on Keyguard -->
|
||||||
|
- <dimen name="keyguard_carrier_text_margin">16dp</dimen>
|
||||||
|
+ <dimen name="keyguard_carrier_text_margin">@dimen/status_bar_padding_start</dimen>
|
||||||
|
|
||||||
|
<!-- Additional translation (downwards) for appearing notifications when going to the full shade
|
||||||
|
from Keyguard. -->
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
|
||||||
|
index 614b0c03c696..55d7336e5c39 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
|
||||||
|
@@ -106,6 +106,10 @@ public class QuickStatusBarHeader extends FrameLayout implements TunerService.Tu
|
||||||
|
private StatusBarContentInsetsProvider mInsetsProvider;
|
||||||
|
|
||||||
|
private int mRoundedCornerPadding = 0;
|
||||||
|
+ private int mStatusBarPaddingStart;
|
||||||
|
+ private int mStatusBarPaddingEnd;
|
||||||
|
+ private int mHeaderPaddingLeft;
|
||||||
|
+ private int mHeaderPaddingRight;
|
||||||
|
private int mWaterfallTopInset;
|
||||||
|
private int mCutOutPaddingLeft;
|
||||||
|
private int mCutOutPaddingRight;
|
||||||
|
@@ -269,6 +273,11 @@ public class QuickStatusBarHeader extends FrameLayout implements TunerService.Tu
|
||||||
|
mRoundedCornerPadding = resources.getDimensionPixelSize(
|
||||||
|
R.dimen.rounded_corner_content_padding);
|
||||||
|
|
||||||
|
+ mStatusBarPaddingStart = resources.getDimensionPixelSize(
|
||||||
|
+ R.dimen.status_bar_padding_start);
|
||||||
|
+ mStatusBarPaddingEnd = resources.getDimensionPixelSize(
|
||||||
|
+ R.dimen.status_bar_padding_end);
|
||||||
|
+
|
||||||
|
int qsOffsetHeight = SystemBarUtils.getQuickQsOffsetHeight(mContext);
|
||||||
|
|
||||||
|
mDatePrivacyView.getLayoutParams().height =
|
||||||
|
@@ -359,6 +368,9 @@ public class QuickStatusBarHeader extends FrameLayout implements TunerService.Tu
|
||||||
|
.addFloat(mDateView, "alpha", 0, 0, 1)
|
||||||
|
.addFloat(mClockDateView, "alpha", 1, 0, 0)
|
||||||
|
.addFloat(mQSCarriers, "alpha", 0, 1)
|
||||||
|
+ // Use statusbar paddings when collapsed, align with QS when expanded, and animate translation
|
||||||
|
+ .addFloat(mClockContainer, "translationX", mHeaderPaddingLeft + mStatusBarPaddingStart, 0)
|
||||||
|
+ .addFloat(mRightLayout, "translationX", -(mHeaderPaddingRight + mStatusBarPaddingEnd), 0)
|
||||||
|
.setListener(new TouchAnimator.ListenerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void onAnimationAtEnd() {
|
||||||
|
@@ -466,8 +478,6 @@ public class QuickStatusBarHeader extends FrameLayout implements TunerService.Tu
|
||||||
|
.getStatusBarContentInsetsForCurrentRotation();
|
||||||
|
boolean hasCornerCutout = mInsetsProvider.currentRotationHasCornerCutout();
|
||||||
|
|
||||||
|
- mDatePrivacyView.setPadding(sbInsets.first, 0, sbInsets.second, 0);
|
||||||
|
- mStatusIconsView.setPadding(sbInsets.first, 0, sbInsets.second, 0);
|
||||||
|
LinearLayout.LayoutParams datePrivacySeparatorLayoutParams =
|
||||||
|
(LinearLayout.LayoutParams) mDatePrivacySeparator.getLayoutParams();
|
||||||
|
LinearLayout.LayoutParams mClockIconsSeparatorLayoutParams =
|
||||||
|
@@ -531,34 +541,38 @@ public class QuickStatusBarHeader extends FrameLayout implements TunerService.Tu
|
||||||
|
private void updateHeadersPadding() {
|
||||||
|
setContentMargins(mDatePrivacyView, 0, 0);
|
||||||
|
setContentMargins(mStatusIconsView, 0, 0);
|
||||||
|
- int paddingLeft = 0;
|
||||||
|
- int paddingRight = 0;
|
||||||
|
|
||||||
|
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
|
||||||
|
+ // Note: these are supposedly notification_side_paddings
|
||||||
|
int leftMargin = lp.leftMargin;
|
||||||
|
int rightMargin = lp.rightMargin;
|
||||||
|
|
||||||
|
// The clock might collide with cutouts, let's shift it out of the way.
|
||||||
|
- // We only do that if the inset is bigger than our own padding, since it's nicer to
|
||||||
|
- // align with
|
||||||
|
- if (mCutOutPaddingLeft > 0) {
|
||||||
|
- // if there's a cutout, let's use at least the rounded corner inset
|
||||||
|
- int cutoutPadding = Math.max(mCutOutPaddingLeft, mRoundedCornerPadding);
|
||||||
|
- paddingLeft = Math.max(cutoutPadding - leftMargin, 0);
|
||||||
|
+ // Margin will be the reference point of paddings/translations
|
||||||
|
+ // and will have to be subtracted from cutout paddings
|
||||||
|
+ boolean headerPaddingUpdated = false;
|
||||||
|
+ int headerPaddingLeft = Math.max(mCutOutPaddingLeft, mRoundedCornerPadding) - leftMargin;
|
||||||
|
+ if (headerPaddingLeft != mHeaderPaddingLeft) {
|
||||||
|
+ mHeaderPaddingLeft = headerPaddingLeft;
|
||||||
|
+ headerPaddingUpdated = true;
|
||||||
|
}
|
||||||
|
- if (mCutOutPaddingRight > 0) {
|
||||||
|
- // if there's a cutout, let's use at least the rounded corner inset
|
||||||
|
- int cutoutPadding = Math.max(mCutOutPaddingRight, mRoundedCornerPadding);
|
||||||
|
- paddingRight = Math.max(cutoutPadding - rightMargin, 0);
|
||||||
|
+ int headerPaddingRight = Math.max(mCutOutPaddingRight, mRoundedCornerPadding) - rightMargin;
|
||||||
|
+ if (headerPaddingRight != mHeaderPaddingRight) {
|
||||||
|
+ mHeaderPaddingRight = headerPaddingRight;
|
||||||
|
+ headerPaddingUpdated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
- mDatePrivacyView.setPadding(paddingLeft,
|
||||||
|
+ // Update header animator with new paddings
|
||||||
|
+ if (headerPaddingUpdated) {
|
||||||
|
+ updateAnimators();
|
||||||
|
+ }
|
||||||
|
+ mDatePrivacyView.setPadding(mHeaderPaddingLeft + mStatusBarPaddingStart,
|
||||||
|
mWaterfallTopInset,
|
||||||
|
- paddingRight,
|
||||||
|
+ mHeaderPaddingRight + mStatusBarPaddingEnd,
|
||||||
|
0);
|
||||||
|
- mStatusIconsView.setPadding(paddingLeft,
|
||||||
|
+ mStatusIconsView.setPadding(0,
|
||||||
|
mWaterfallTopInset,
|
||||||
|
- paddingRight,
|
||||||
|
+ 0,
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
|
||||||
|
index cc8b2d5c0913..f829fb421fc7 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
|
||||||
|
@@ -157,14 +157,7 @@ public class KeyguardStatusBarView extends RelativeLayout {
|
||||||
|
mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX,
|
||||||
|
getResources().getDimensionPixelSize(
|
||||||
|
com.android.internal.R.dimen.text_size_small_material));
|
||||||
|
- lp = (MarginLayoutParams) mCarrierLabel.getLayoutParams();
|
||||||
|
|
||||||
|
- int marginStart = calculateMargin(
|
||||||
|
- getResources().getDimensionPixelSize(R.dimen.keyguard_carrier_text_margin),
|
||||||
|
- mPadding.first);
|
||||||
|
- lp.setMarginStart(marginStart);
|
||||||
|
-
|
||||||
|
- mCarrierLabel.setLayoutParams(lp);
|
||||||
|
updateKeyguardStatusBarHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 8e54cfb859e4a6bdd99290108095974922cecc81 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 17 Apr 2022 08:48:42 +0000
|
||||||
|
Subject: [PATCH 11/21] Replace NTP server
|
||||||
|
|
||||||
|
Change-Id: I938ab46026d841e7536d8fc02b0ef6b28ebb6ea1
|
||||||
|
---
|
||||||
|
core/res/res/values/config.xml | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
||||||
|
index a1b97506b1f5..3accbddbe38b 100644
|
||||||
|
--- a/core/res/res/values/config.xml
|
||||||
|
+++ b/core/res/res/values/config.xml
|
||||||
|
@@ -2352,7 +2352,7 @@
|
||||||
|
<bool name="config_actionMenuItemAllCaps">true</bool>
|
||||||
|
|
||||||
|
<!-- Remote server that can provide NTP responses. -->
|
||||||
|
- <string translatable="false" name="config_ntpServer">time.android.com</string>
|
||||||
|
+ <string translatable="false" name="config_ntpServer">cn.pool.ntp.org</string>
|
||||||
|
<!-- Normal polling frequency in milliseconds -->
|
||||||
|
<integer name="config_ntpPollingInterval">64800000</integer>
|
||||||
|
<!-- Try-again polling interval in milliseconds, in case the network request failed -->
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
From c125258153937e30bbeeaa9666af7ac3d2b03366 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Tue, 31 May 2022 00:00:08 +0000
|
||||||
|
Subject: [PATCH 12/21] Revert "SystemUI: Add left padding for keyguard slices"
|
||||||
|
|
||||||
|
This reverts commit 4a7a4426944e28e70a3eca6a696ff6c7599fb896.
|
||||||
|
---
|
||||||
|
.../src/com/android/keyguard/KeyguardSliceView.java | 9 +++------
|
||||||
|
1 file changed, 3 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
|
||||||
|
index 31d22eb38a24..65a71664e245 100644
|
||||||
|
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
|
||||||
|
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
|
||||||
|
@@ -49,7 +49,6 @@ import com.android.internal.graphics.ColorUtils;
|
||||||
|
import com.android.settingslib.Utils;
|
||||||
|
import com.android.systemui.R;
|
||||||
|
import com.android.systemui.animation.Interpolators;
|
||||||
|
-import com.android.systemui.keyguard.KeyguardSliceProvider;
|
||||||
|
import com.android.systemui.util.wakelock.KeepAwakeAnimationListener;
|
||||||
|
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
@@ -446,15 +445,13 @@ public class KeyguardSliceView extends LinearLayout {
|
||||||
|
|
||||||
|
private void updatePadding() {
|
||||||
|
boolean hasText = !TextUtils.isEmpty(getText());
|
||||||
|
- boolean isDate = Uri.parse(KeyguardSliceProvider.KEYGUARD_DATE_URI).equals(getTag());
|
||||||
|
int padding = (int) getContext().getResources()
|
||||||
|
.getDimension(R.dimen.widget_horizontal_padding) / 2;
|
||||||
|
- int iconPadding = (int) mContext.getResources()
|
||||||
|
- .getDimension(R.dimen.widget_icon_padding);
|
||||||
|
// orientation is vertical, so add padding to top & bottom
|
||||||
|
- setPadding(!isDate ? iconPadding : 0, padding, 0, hasText ? padding : 0);
|
||||||
|
+ setPadding(0, padding, 0, hasText ? padding : 0);
|
||||||
|
|
||||||
|
- setCompoundDrawablePadding(iconPadding);
|
||||||
|
+ setCompoundDrawablePadding((int) mContext.getResources()
|
||||||
|
+ .getDimension(R.dimen.widget_icon_padding));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,273 @@
|
|||||||
|
From 6dbe76e67aa9fb8ad6285b3730093af49cde6a4d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 5 Sep 2021 01:20:12 +0000
|
||||||
|
Subject: [PATCH 13/21] Revert "Update RAT icons to match Silk design"
|
||||||
|
|
||||||
|
This reverts commit 084c13c8216f6a899cd3eda04fc1d7acff3d1248.
|
||||||
|
---
|
||||||
|
.../res/drawable/ic_3g_mobiledata.xml | 19 ++++++-----
|
||||||
|
.../res/drawable/ic_4g_mobiledata.xml | 19 ++++++-----
|
||||||
|
.../res/drawable/ic_5g_mobiledata.xml | 20 +++++------
|
||||||
|
.../res/drawable/ic_5g_uc_mobiledata.xml | 33 -------------------
|
||||||
|
.../res/drawable/ic_5g_uw_mobiledata.xml | 33 -------------------
|
||||||
|
.../res/drawable/ic_carrier_wifi.xml | 15 +++++----
|
||||||
|
.../res/drawable/ic_lte_mobiledata.xml | 23 +++++++------
|
||||||
|
.../res/drawable/stat_sys_roaming_large.xml | 10 +++---
|
||||||
|
8 files changed, 59 insertions(+), 113 deletions(-)
|
||||||
|
delete mode 100644 packages/SettingsLib/res/drawable/ic_5g_uc_mobiledata.xml
|
||||||
|
delete mode 100644 packages/SettingsLib/res/drawable/ic_5g_uw_mobiledata.xml
|
||||||
|
|
||||||
|
diff --git a/packages/SettingsLib/res/drawable/ic_3g_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_3g_mobiledata.xml
|
||||||
|
index 413a3873f438..0c942bdf993c 100644
|
||||||
|
--- a/packages/SettingsLib/res/drawable/ic_3g_mobiledata.xml
|
||||||
|
+++ b/packages/SettingsLib/res/drawable/ic_3g_mobiledata.xml
|
||||||
|
@@ -14,14 +14,17 @@
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:width="21dp"
|
||||||
|
- android:height="16dp"
|
||||||
|
- android:viewportWidth="21.0"
|
||||||
|
- android:viewportHeight="16.0">
|
||||||
|
+ android:width="12.35dp"
|
||||||
|
+ android:height="15dp"
|
||||||
|
+ android:viewportWidth="14"
|
||||||
|
+ android:viewportHeight="17">
|
||||||
|
+
|
||||||
|
+ <path
|
||||||
|
+ android:fillColor="#FFFFFFFF"
|
||||||
|
+ android:pathData="M1.9,7.88h0.77c0.5,0,0.88-0.15,1.15-0.46s0.4-0.72,0.4-1.25c0-1.17-0.45-1.75-1.35-1.75c-0.43,0-0.77,0.16-1.02,0.47 S1.49,5.62,1.49,6.13h-1.2c0-0.8,0.24-1.46,0.73-1.97s1.11-0.78,1.86-0.78c0.78,0,1.41,0.25,1.87,0.73S5.43,5.31,5.43,6.2 c0,0.46-0.12,0.89-0.36,1.29S4.52,8.18,4.14,8.37c0.94,0.35,1.41,1.12,1.41,2.33c0,0.89-0.25,1.6-0.74,2.12 c-0.49,0.53-1.14,0.79-1.94,0.79c-0.79,0-1.43-0.25-1.91-0.75c-0.49-0.5-0.73-1.17-0.73-2.01h1.21c0,0.53,0.13,0.95,0.38,1.26 c0.26,0.31,0.6,0.47,1.05,0.47c0.45,0,0.81-0.15,1.08-0.46s0.4-0.77,0.4-1.39c0-1.21-0.57-1.81-1.72-1.81H1.9V7.88z" />
|
||||||
|
<path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M5.29,13.22c-0.57,0 -1.09,-0.11 -1.57,-0.34c-0.47,-0.22 -0.85,-0.54 -1.16,-0.95C2.25,11.52 2.07,11.01 2,10.42l1.47,-0.34c0.07,0.51 0.27,0.92 0.59,1.23c0.32,0.31 0.73,0.46 1.23,0.46c0.52,0 0.94,-0.15 1.26,-0.46c0.33,-0.31 0.49,-0.71 0.49,-1.22c0,-0.51 -0.18,-0.92 -0.53,-1.22c-0.35,-0.31 -0.8,-0.46 -1.36,-0.46H4.37V7.06h0.73c0.47,0 0.86,-0.13 1.18,-0.38c0.32,-0.26 0.48,-0.63 0.48,-1.11c0,-0.42 -0.14,-0.77 -0.41,-1.04C6.08,4.27 5.7,4.14 5.21,4.14c-0.43,0 -0.79,0.13 -1.08,0.38C3.85,4.76 3.67,5.08 3.6,5.48L2.17,5.3C2.23,4.81 2.4,4.38 2.67,4c0.27,-0.38 0.62,-0.69 1.05,-0.91c0.44,-0.22 0.94,-0.34 1.5,-0.34c0.62,0 1.15,0.12 1.6,0.35c0.45,0.23 0.79,0.55 1.04,0.95C8.1,4.46 8.23,4.9 8.23,5.4C8.23,6 8.1,6.48 7.84,6.81C7.58,7.14 7.29,7.4 6.97,7.6v0.08c0.46,0.2 0.84,0.5 1.13,0.91c0.3,0.4 0.45,0.93 0.45,1.58c0,0.58 -0.14,1.1 -0.42,1.55c-0.27,0.46 -0.65,0.82 -1.15,1.09C6.5,13.09 5.93,13.22 5.29,13.22z"/>
|
||||||
|
+ android:fillColor="#FFFFFFFF"
|
||||||
|
+ android:pathData="M13.77,12.24l-0.22,0.27c-0.63,0.73-1.55,1.1-2.76,1.1c-1.08,0-1.92-0.36-2.53-1.07c-0.61-0.71-0.93-1.72-0.94-3.02V7.56 c0-1.39,0.28-2.44,0.84-3.13s1.39-1.04,2.51-1.04c0.95,0,1.69,0.26,2.23,0.79s0.83,1.28,0.89,2.26h-1.25 C12.47,5.82,12.3,5.33,12,4.98s-0.74-0.52-1.34-0.52c-0.72,0-1.24,0.23-1.57,0.7S8.59,6.37,8.58,7.4v2.03c0,1,0.19,1.77,0.57,2.31 c0.38,0.54,0.93,0.8,1.65,0.8c0.67,0,1.19-0.16,1.54-0.49l0.18-0.17V9.59H10.7V8.52h3.07V12.24z" />
|
||||||
|
<path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M14.44,13.22c-0.88,0 -1.66,-0.21 -2.34,-0.64c-0.67,-0.44 -1.2,-1.05 -1.6,-1.83c-0.38,-0.79 -0.57,-1.71 -0.57,-2.76c0,-1.05 0.21,-1.96 0.62,-2.74c0.41,-0.79 0.97,-1.4 1.67,-1.83c0.7,-0.44 1.5,-0.66 2.39,-0.66c1.09,0 2.01,0.25 2.74,0.76c0.75,0.5 1.22,1.21 1.41,2.11L17.3,6.01c-0.17,-0.56 -0.48,-1 -0.94,-1.32c-0.45,-0.33 -1.03,-0.49 -1.75,-0.49c-0.57,0 -1.09,0.14 -1.57,0.43c-0.48,0.29 -0.85,0.71 -1.13,1.27s-0.42,1.25 -0.42,2.07c0,0.81 0.14,1.5 0.41,2.07c0.28,0.56 0.65,0.98 1.11,1.27c0.47,0.29 0.98,0.43 1.54,0.43c0.57,0 1.06,-0.11 1.47,-0.34c0.42,-0.23 0.75,-0.55 0.99,-0.94c0.25,-0.4 0.41,-0.85 0.46,-1.36h-2.88V7.79h4.37c0,0.87 0,1.74 0,2.6c0,0.87 0,1.74 0,2.6h-1.41v-1.4h-0.08c-0.28,0.49 -0.67,0.88 -1.18,1.18C15.78,13.07 15.17,13.22 14.44,13.22z"/>
|
||||||
|
+ android:pathData="M 0 0 H 14 V 17 H 0 V 0 Z" />
|
||||||
|
</vector>
|
||||||
|
diff --git a/packages/SettingsLib/res/drawable/ic_4g_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_4g_mobiledata.xml
|
||||||
|
index 1de7d78ff5f2..535f3589ea6b 100644
|
||||||
|
--- a/packages/SettingsLib/res/drawable/ic_4g_mobiledata.xml
|
||||||
|
+++ b/packages/SettingsLib/res/drawable/ic_4g_mobiledata.xml
|
||||||
|
@@ -14,14 +14,17 @@
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:width="22dp"
|
||||||
|
- android:height="16dp"
|
||||||
|
- android:viewportWidth="22.0"
|
||||||
|
- android:viewportHeight="16.0">
|
||||||
|
+ android:width="12.35dp"
|
||||||
|
+ android:height="15dp"
|
||||||
|
+ android:viewportWidth="14"
|
||||||
|
+ android:viewportHeight="17">
|
||||||
|
+
|
||||||
|
+ <path
|
||||||
|
+ android:fillColor="#FFFFFFFF"
|
||||||
|
+ android:pathData="M5.07,10.13h1.11v1.03H5.07v2.31H3.86v-2.31H0.1v-0.75l3.7-6.9h1.27V10.13z M1.44,10.13h2.42V5.4L1.44,10.13z" />
|
||||||
|
<path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M2,10.98V9.81l4.28,-6.83h1.6v6.59h1.19v1.41H7.88V13H6.4v-2.02H2zM3.68,9.57H6.4V5.33H6.31L3.68,9.57z"/>
|
||||||
|
+ android:fillColor="#FFFFFFFF"
|
||||||
|
+ android:pathData="M13.9,12.24l-0.22,0.27c-0.63,0.73-1.55,1.1-2.76,1.1c-1.08,0-1.92-0.36-2.53-1.07c-0.61-0.71-0.93-1.72-0.94-3.02V7.56 c0-1.39,0.28-2.44,0.84-3.13s1.39-1.04,2.51-1.04c0.95,0,1.69,0.26,2.23,0.79s0.83,1.28,0.89,2.26h-1.25 c-0.05-0.62-0.22-1.1-0.52-1.45s-0.74-0.52-1.34-0.52c-0.72,0-1.24,0.23-1.57,0.7S8.72,6.37,8.71,7.4v2.03 c0,1,0.19,1.77,0.57,2.31c0.38,0.54,0.93,0.8,1.65,0.8c0.67,0,1.19-0.16,1.54-0.49l0.18-0.17V9.59h-1.82V8.52h3.07V12.24z" />
|
||||||
|
<path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M15,13.22c-0.88,0 -1.66,-0.21 -2.34,-0.64c-0.67,-0.44 -1.2,-1.05 -1.6,-1.83c-0.38,-0.79 -0.57,-1.71 -0.57,-2.76c0,-1.05 0.21,-1.96 0.62,-2.74c0.41,-0.79 0.97,-1.4 1.67,-1.83c0.7,-0.44 1.5,-0.66 2.39,-0.66c1.09,0 2.01,0.25 2.74,0.76c0.75,0.5 1.22,1.21 1.41,2.11l-1.47,0.39c-0.17,-0.56 -0.48,-1 -0.94,-1.32c-0.45,-0.33 -1.03,-0.49 -1.75,-0.49c-0.57,0 -1.09,0.14 -1.57,0.43c-0.48,0.29 -0.85,0.71 -1.13,1.27c-0.28,0.56 -0.42,1.25 -0.42,2.07c0,0.81 0.14,1.5 0.41,2.07c0.28,0.56 0.65,0.98 1.11,1.27c0.47,0.29 0.98,0.43 1.54,0.43c0.57,0 1.06,-0.11 1.47,-0.34c0.42,-0.23 0.75,-0.55 0.99,-0.94c0.25,-0.4 0.41,-0.85 0.46,-1.36h-2.88V7.79h4.37c0,0.87 0,1.74 0,2.6c0,0.87 0,1.74 0,2.6h-1.41v-1.4h-0.08c-0.28,0.49 -0.67,0.88 -1.18,1.18C16.34,13.07 15.73,13.22 15,13.22z"/>
|
||||||
|
+ android:pathData="M 0 0 H 14 V 17 H 0 V 0 Z" />
|
||||||
|
</vector>
|
||||||
|
diff --git a/packages/SettingsLib/res/drawable/ic_5g_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_5g_mobiledata.xml
|
||||||
|
index d961c6c2266f..2aa6e57f6f82 100644
|
||||||
|
--- a/packages/SettingsLib/res/drawable/ic_5g_mobiledata.xml
|
||||||
|
+++ b/packages/SettingsLib/res/drawable/ic_5g_mobiledata.xml
|
||||||
|
@@ -14,14 +14,14 @@
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:width="21dp"
|
||||||
|
- android:height="16dp"
|
||||||
|
- android:viewportWidth="21.0"
|
||||||
|
- android:viewportHeight="16.0">
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M5.3,13.22c-0.57,0 -1.1,-0.11 -1.58,-0.34c-0.48,-0.22 -0.87,-0.55 -1.18,-0.98C2.24,11.47 2.06,10.93 2,10.3l1.48,-0.2c0.07,0.5 0.25,0.92 0.56,1.25c0.32,0.32 0.74,0.48 1.26,0.48c0.57,0 1.02,-0.18 1.34,-0.55c0.33,-0.37 0.49,-0.87 0.49,-1.48c0,-0.61 -0.16,-1.09 -0.49,-1.46C6.32,7.96 5.88,7.78 5.32,7.78C5,7.78 4.7,7.85 4.42,8C4.15,8.14 3.93,8.33 3.76,8.56L2.28,7.92l0.6,-4.94h5.26v1.36H4.1L3.72,7.02l0.08,0.03C4,6.87 4.25,6.73 4.55,6.62c0.3,-0.12 0.63,-0.18 1.01,-0.18c0.6,0 1.13,0.14 1.6,0.41C7.62,7.11 7.98,7.5 8.24,8c0.27,0.5 0.41,1.1 0.41,1.79c0,0.66 -0.14,1.26 -0.43,1.78c-0.28,0.51 -0.67,0.92 -1.18,1.22C6.55,13.08 5.97,13.22 5.3,13.22z"/>
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M14.51,13.22c-0.88,0 -1.66,-0.21 -2.34,-0.64c-0.67,-0.44 -1.2,-1.05 -1.6,-1.83C10.19,9.95 10,9.03 10,7.99c0,-1.05 0.21,-1.96 0.62,-2.74c0.41,-0.79 0.97,-1.4 1.67,-1.83c0.7,-0.44 1.5,-0.66 2.39,-0.66c1.09,0 2.01,0.25 2.74,0.76c0.75,0.5 1.22,1.21 1.41,2.11l-1.47,0.39c-0.17,-0.56 -0.48,-1 -0.94,-1.32c-0.45,-0.33 -1.03,-0.49 -1.75,-0.49c-0.57,0 -1.09,0.14 -1.57,0.43c-0.48,0.29 -0.85,0.71 -1.13,1.27s-0.42,1.25 -0.42,2.07c0,0.81 0.14,1.5 0.41,2.07c0.28,0.56 0.65,0.98 1.11,1.27c0.47,0.29 0.98,0.43 1.54,0.43c0.57,0 1.06,-0.11 1.47,-0.34c0.42,-0.23 0.75,-0.55 0.99,-0.94c0.25,-0.4 0.41,-0.85 0.46,-1.36h-2.88V7.79h4.37c0,0.87 0,1.74 0,2.6c0,0.87 0,1.74 0,2.6H17.6v-1.4h-0.08c-0.28,0.49 -0.67,0.88 -1.18,1.18C15.85,13.07 15.24,13.22 14.51,13.22z"/>
|
||||||
|
+ android:width="14dp"
|
||||||
|
+ android:height="17dp"
|
||||||
|
+ android:viewportWidth="14"
|
||||||
|
+ android:viewportHeight="17">
|
||||||
|
+ <path
|
||||||
|
+ android:fillColor="#FF000000"
|
||||||
|
+ android:pathData="M13.9,12.24l-0.22,0.27c-0.63,0.73 -1.55,1.1 -2.76,1.1c-1.08,0 -1.92,-0.36 -2.53,-1.07s-0.93,-1.72 -0.94,-3.02V7.56c0,-1.39 0.28,-2.44 0.84,-3.13s1.39,-1.04 2.51,-1.04c0.95,0 1.69,0.26 2.23,0.79s0.83,1.28 0.89,2.26h-1.25c-0.05,-0.62 -0.22,-1.1 -0.52,-1.45s-0.74,-0.52 -1.34,-0.52c-0.72,0 -1.24,0.23 -1.57,0.7S8.72,6.37 8.71,7.4v2.03c0,1 0.19,1.77 0.57,2.31c0.38,0.54 0.93,0.8 1.65,0.8c0.67,0 1.19,-0.16 1.54,-0.49l0.18,-0.17V9.59h-1.82V8.52h3.07V12.24z"/>
|
||||||
|
+ <path
|
||||||
|
+ android:fillColor="#FF000000"
|
||||||
|
+ android:pathData="M1.15,8.47l0.43,-4.96h4.33v1.17H2.6L2.37,7.39C2.78,7.1 3.22,6.96 3.69,6.96c0.77,0 1.38,0.3 1.83,0.9s0.66,1.41 0.66,2.43c0,1.03 -0.24,1.84 -0.72,2.43S4.32,13.6 3.48,13.6c-0.75,0 -1.36,-0.24 -1.83,-0.73s-0.74,-1.16 -0.81,-2.02h1.13c0.07,0.57 0.23,1 0.49,1.29c0.26,0.29 0.59,0.43 1.01,0.43c0.47,0 0.84,-0.2 1.1,-0.61c0.26,-0.41 0.4,-0.96 0.4,-1.65c0,-0.65 -0.14,-1.18 -0.43,-1.59S3.88,8.09 3.4,8.09c-0.4,0 -0.72,0.1 -0.96,0.31L2.11,8.73L1.15,8.47z"/>
|
||||||
|
</vector>
|
||||||
|
diff --git a/packages/SettingsLib/res/drawable/ic_5g_uc_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_5g_uc_mobiledata.xml
|
||||||
|
deleted file mode 100644
|
||||||
|
index 93fcad298c3f..000000000000
|
||||||
|
--- a/packages/SettingsLib/res/drawable/ic_5g_uc_mobiledata.xml
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,33 +0,0 @@
|
||||||
|
-<!--
|
||||||
|
- Copyright (C) 2021 The Android Open Source 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
|
||||||
|
-
|
||||||
|
- 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.
|
||||||
|
- See the License for the specific language governing permissions and
|
||||||
|
- limitations under the License.
|
||||||
|
--->
|
||||||
|
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:width="27dp"
|
||||||
|
- android:height="16dp"
|
||||||
|
- android:viewportWidth="27.0"
|
||||||
|
- android:viewportHeight="16.0">
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M5.3,13.22c-0.57,0 -1.1,-0.11 -1.58,-0.34c-0.48,-0.22 -0.87,-0.55 -1.18,-0.98C2.24,11.47 2.06,10.93 2,10.3l1.48,-0.2c0.07,0.5 0.25,0.92 0.56,1.25c0.32,0.32 0.74,0.48 1.26,0.48c0.57,0 1.02,-0.18 1.34,-0.55c0.33,-0.37 0.49,-0.87 0.49,-1.48c0,-0.61 -0.16,-1.09 -0.49,-1.46C6.32,7.96 5.88,7.78 5.32,7.78C5,7.78 4.7,7.85 4.42,8C4.15,8.14 3.93,8.33 3.76,8.56L2.28,7.92l0.6,-4.94h5.26v1.36H4.1L3.72,7.02l0.08,0.03C4,6.87 4.25,6.73 4.55,6.62c0.3,-0.12 0.63,-0.18 1.01,-0.18c0.6,0 1.13,0.14 1.6,0.41C7.62,7.11 7.98,7.5 8.24,8c0.27,0.5 0.41,1.1 0.41,1.79c0,0.66 -0.14,1.26 -0.43,1.78c-0.28,0.51 -0.67,0.92 -1.18,1.22C6.55,13.08 5.97,13.22 5.3,13.22z"/>
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M14.51,13.22c-0.88,0 -1.66,-0.21 -2.34,-0.64c-0.67,-0.44 -1.2,-1.05 -1.6,-1.83C10.19,9.95 10,9.03 10,7.99c0,-1.05 0.21,-1.96 0.62,-2.74c0.41,-0.79 0.97,-1.4 1.67,-1.83c0.7,-0.44 1.5,-0.66 2.39,-0.66c1.09,0 2.01,0.25 2.74,0.76c0.75,0.5 1.22,1.21 1.41,2.11l-1.47,0.39c-0.17,-0.56 -0.48,-1 -0.94,-1.32c-0.45,-0.33 -1.03,-0.49 -1.75,-0.49c-0.57,0 -1.09,0.14 -1.57,0.43c-0.48,0.29 -0.85,0.71 -1.13,1.27s-0.42,1.25 -0.42,2.07c0,0.81 0.14,1.5 0.41,2.07c0.28,0.56 0.65,0.98 1.11,1.27c0.47,0.29 0.98,0.43 1.54,0.43c0.57,0 1.06,-0.11 1.47,-0.34c0.42,-0.23 0.75,-0.55 0.99,-0.94c0.25,-0.4 0.41,-0.85 0.46,-1.36h-2.88V7.79h4.37c0,0.87 0,1.74 0,2.6c0,0.87 0,1.74 0,2.6H17.6v-1.4h-0.08c-0.28,0.49 -0.67,0.88 -1.18,1.18C15.85,13.07 15.24,13.22 14.51,13.22z"/>
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M23,7.39c-0.53,0 -0.94,-0.16 -1.25,-0.47C21.45,6.6 21.3,6.16 21.3,5.6V3h0.8v2.66c0,0.3 0.08,0.54 0.23,0.71C22.48,6.54 22.7,6.62 23,6.62c0.3,0 0.52,-0.08 0.67,-0.25c0.15,-0.17 0.23,-0.41 0.23,-0.71V3h0.8v2.6c0,0.36 -0.07,0.67 -0.2,0.94s-0.33,0.48 -0.58,0.62C23.65,7.32 23.35,7.39 23,7.39z"/>
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M22.99,13.1c-0.39,0 -0.73,-0.09 -1.03,-0.28c-0.3,-0.19 -0.53,-0.45 -0.7,-0.79C21.08,11.7 21,11.3 21,10.85c0,-0.46 0.08,-0.85 0.25,-1.19c0.17,-0.34 0.41,-0.6 0.71,-0.78c0.3,-0.18 0.65,-0.28 1.04,-0.28c0.31,0 0.59,0.05 0.86,0.16c0.26,0.11 0.48,0.27 0.65,0.48c0.18,0.21 0.28,0.48 0.32,0.8l-0.83,0.14c-0.06,-0.26 -0.17,-0.46 -0.35,-0.6C23.49,9.44 23.27,9.37 23,9.37c-0.22,0 -0.42,0.06 -0.61,0.17c-0.18,0.11 -0.32,0.28 -0.43,0.5c-0.1,0.22 -0.16,0.49 -0.16,0.81c0,0.32 0.05,0.58 0.16,0.8s0.25,0.39 0.43,0.5c0.18,0.11 0.38,0.17 0.61,0.17c0.26,0 0.47,-0.07 0.65,-0.21c0.18,-0.14 0.3,-0.34 0.35,-0.59l0.85,0.09c-0.06,0.29 -0.17,0.54 -0.32,0.77c-0.15,0.22 -0.36,0.39 -0.61,0.52C23.66,13.03 23.35,13.1 22.99,13.1z"/>
|
||||||
|
-</vector>
|
||||||
|
diff --git a/packages/SettingsLib/res/drawable/ic_5g_uw_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_5g_uw_mobiledata.xml
|
||||||
|
deleted file mode 100644
|
||||||
|
index ca47b6ff2edb..000000000000
|
||||||
|
--- a/packages/SettingsLib/res/drawable/ic_5g_uw_mobiledata.xml
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,33 +0,0 @@
|
||||||
|
-<!--
|
||||||
|
- Copyright (C) 2021 The Android Open Source 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
|
||||||
|
-
|
||||||
|
- 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.
|
||||||
|
- See the License for the specific language governing permissions and
|
||||||
|
- limitations under the License.
|
||||||
|
--->
|
||||||
|
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:width="27dp"
|
||||||
|
- android:height="16dp"
|
||||||
|
- android:viewportWidth="27.0"
|
||||||
|
- android:viewportHeight="16.0">
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M5.3,13.22c-0.57,0 -1.1,-0.11 -1.58,-0.34c-0.48,-0.22 -0.87,-0.55 -1.18,-0.98C2.24,11.47 2.06,10.93 2,10.3l1.48,-0.2c0.07,0.5 0.25,0.92 0.56,1.25c0.32,0.32 0.74,0.48 1.26,0.48c0.57,0 1.02,-0.18 1.34,-0.55c0.33,-0.37 0.49,-0.87 0.49,-1.48c0,-0.61 -0.16,-1.09 -0.49,-1.46C6.32,7.96 5.88,7.78 5.32,7.78C5,7.78 4.7,7.85 4.42,8C4.15,8.14 3.93,8.33 3.76,8.56L2.28,7.92l0.6,-4.94h5.26v1.36H4.1L3.72,7.02l0.08,0.03C4,6.87 4.25,6.73 4.55,6.62c0.3,-0.12 0.63,-0.18 1.01,-0.18c0.6,0 1.13,0.14 1.6,0.41C7.62,7.11 7.98,7.5 8.24,8c0.27,0.5 0.41,1.1 0.41,1.79c0,0.66 -0.14,1.26 -0.43,1.78c-0.28,0.51 -0.67,0.92 -1.18,1.22C6.55,13.08 5.97,13.22 5.3,13.22z"/>
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M14.51,13.22c-0.88,0 -1.66,-0.21 -2.34,-0.64c-0.67,-0.44 -1.2,-1.05 -1.6,-1.83C10.19,9.95 10,9.03 10,7.99c0,-1.05 0.21,-1.96 0.62,-2.74c0.41,-0.79 0.97,-1.4 1.67,-1.83c0.7,-0.44 1.5,-0.66 2.39,-0.66c1.09,0 2.01,0.25 2.74,0.76c0.75,0.5 1.22,1.21 1.41,2.11l-1.47,0.39c-0.17,-0.56 -0.48,-1 -0.94,-1.32c-0.45,-0.33 -1.03,-0.49 -1.75,-0.49c-0.57,0 -1.09,0.14 -1.57,0.43c-0.48,0.29 -0.85,0.71 -1.13,1.27s-0.42,1.25 -0.42,2.07c0,0.81 0.14,1.5 0.41,2.07c0.28,0.56 0.65,0.98 1.11,1.27c0.47,0.29 0.98,0.43 1.54,0.43c0.57,0 1.06,-0.11 1.47,-0.34c0.42,-0.23 0.75,-0.55 0.99,-0.94c0.25,-0.4 0.41,-0.85 0.46,-1.36h-2.88V7.79h4.37c0,0.87 0,1.74 0,2.6c0,0.87 0,1.74 0,2.6H17.6v-1.4h-0.08c-0.28,0.49 -0.67,0.88 -1.18,1.18C15.85,13.07 15.24,13.22 14.51,13.22z"/>
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M23,7.39c-0.53,0 -0.94,-0.16 -1.25,-0.47C21.45,6.6 21.3,6.16 21.3,5.6V3h0.8v2.66c0,0.3 0.08,0.54 0.23,0.71C22.48,6.54 22.7,6.62 23,6.62c0.3,0 0.52,-0.08 0.67,-0.25c0.15,-0.17 0.23,-0.41 0.23,-0.71V3h0.8v2.6c0,0.36 -0.07,0.67 -0.2,0.94s-0.33,0.48 -0.58,0.62C23.65,7.32 23.35,7.39 23,7.39z"/>
|
||||||
|
- <path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M21.41,13L20.3,8.7h0.73l0.64,2.78l0.07,0.38h0.04l0.09,-0.38l0.81,-2.78h0.66l0.79,2.78l0.09,0.37h0.04l0.07,-0.37l0.65,-2.78h0.72L24.59,13H23.9l-0.78,-2.84l-0.1,-0.41h-0.04l-0.1,0.41L22.08,13H21.41z"/>
|
||||||
|
-</vector>
|
||||||
|
diff --git a/packages/SettingsLib/res/drawable/ic_carrier_wifi.xml b/packages/SettingsLib/res/drawable/ic_carrier_wifi.xml
|
||||||
|
index 22bcf7b8c8a3..ed9d85e3cbe4 100644
|
||||||
|
--- a/packages/SettingsLib/res/drawable/ic_carrier_wifi.xml
|
||||||
|
+++ b/packages/SettingsLib/res/drawable/ic_carrier_wifi.xml
|
||||||
|
@@ -14,14 +14,17 @@
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:width="24dp"
|
||||||
|
- android:height="16dp"
|
||||||
|
- android:viewportWidth="24.0"
|
||||||
|
- android:viewportHeight="16.0">
|
||||||
|
+ android:width="38dp"
|
||||||
|
+ android:height="24dp"
|
||||||
|
+ android:viewportWidth="38.0"
|
||||||
|
+ android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M4.59,13L2,2.98h1.69l1.5,6.48l0.17,0.88h0.08l0.21,-0.88l1.89,-6.48h1.54l1.83,6.48l0.21,0.87h0.08l0.15,-0.87l1.51,-6.48h1.68L12.01,13H10.4L8.58,6.36L8.36,5.4H8.27L8.05,6.36L6.16,13H4.59z"/>
|
||||||
|
+ android:pathData="M9.45,14.48h1.8c-0.05,0.98 -0.24,1.82 -0.6,2.53c-0.35,0.7 -0.85,1.24 -1.51,1.62c-0.66,0.38 -1.48,0.57 -2.47,0.57c-0.71,0 -1.35,-0.14 -1.92,-0.42c-0.57,-0.28 -1.06,-0.68 -1.47,-1.2c-0.4,-0.53 -0.71,-1.16 -0.93,-1.89c-0.21,-0.74 -0.32,-1.56 -0.32,-2.48v-2.63c0,-0.91 0.11,-1.74 0.32,-2.47c0.22,-0.74 0.54,-1.36 0.95,-1.88C3.71,5.69 4.21,5.29 4.8,5.01c0.6,-0.28 1.28,-0.42 2.03,-0.42c0.92,0 1.71,0.19 2.34,0.56c0.64,0.36 1.14,0.9 1.48,1.61c0.35,0.7 0.55,1.57 0.59,2.59h-1.8C9.41,8.59 9.29,7.98 9.1,7.52C8.91,7.04 8.63,6.69 8.26,6.47C7.9,6.24 7.42,6.13 6.84,6.13c-0.52,0 -0.97,0.1 -1.36,0.31C5.1,6.65 4.79,6.95 4.54,7.34C4.3,7.72 4.12,8.19 3.99,8.74c-0.12,0.54 -0.18,1.15 -0.18,1.82v2.65c0,0.62 0.05,1.21 0.15,1.75c0.1,0.54 0.27,1.02 0.49,1.43c0.23,0.4 0.52,0.72 0.89,0.95c0.36,0.23 0.81,0.34 1.33,0.34c0.66,0 1.18,-0.11 1.56,-0.32c0.38,-0.21 0.67,-0.56 0.85,-1.03C9.27,15.85 9.39,15.23 9.45,14.48z"/>
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M15.77,9.85V8.56h2.46V6.1h1.3v2.46H22v1.29h-2.46v2.46h-1.3V9.85H15.77z"/>
|
||||||
|
+ android:pathData="M24.87,4.78l-1.74,9.72l-0.2,1.64l-0.29,-1.44l-2.21,-9.92l-0.2,0l-1.06,0l-0.22,0l-2.28,9.92l-0.28,1.4l-0.18,-1.59l-1.78,-9.73l-1.79,0l2.83,14.22l0.34,0l0.92,0l0.35,0l2.48,-10.36l0.14,-0.84l0.15,0.84l2.36,10.36l0.36,0l0.92,0l0.34,0l2.82,-14.22z"/>
|
||||||
|
+ <path
|
||||||
|
+ android:fillColor="#FF000000"
|
||||||
|
+ android:pathData="M35.72,6.32l0,-1.54l-5.61,0l-0.34,0l-1.45,0l0,14.22l1.79,0l0,-6.28l4.8,0l0,-1.54l-4.8,0l0,-4.86z"/>
|
||||||
|
</vector>
|
||||||
|
diff --git a/packages/SettingsLib/res/drawable/ic_lte_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_lte_mobiledata.xml
|
||||||
|
index 739e29d886c2..e6b4fb698242 100644
|
||||||
|
--- a/packages/SettingsLib/res/drawable/ic_lte_mobiledata.xml
|
||||||
|
+++ b/packages/SettingsLib/res/drawable/ic_lte_mobiledata.xml
|
||||||
|
@@ -14,17 +14,20 @@
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:width="26dp"
|
||||||
|
- android:height="16dp"
|
||||||
|
- android:viewportWidth="26.0"
|
||||||
|
- android:viewportHeight="16.0">
|
||||||
|
+ android:width="15.88dp"
|
||||||
|
+ android:height="15dp"
|
||||||
|
+ android:viewportWidth="18"
|
||||||
|
+ android:viewportHeight="17">
|
||||||
|
+
|
||||||
|
+ <path
|
||||||
|
+ android:fillColor="#FFFFFFFF"
|
||||||
|
+ android:pathData="M1.34,12.4h3.9v1.07H0.08V3.52h1.26V12.4z" />
|
||||||
|
<path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M2,13V2.98h1.53v8.57H8.3V13H2z"/>
|
||||||
|
+ android:fillColor="#FFFFFFFF"
|
||||||
|
+ android:pathData="M11.1,4.6H8.48v8.88H7.23V4.6H4.62V3.52h6.48V4.6z" />
|
||||||
|
<path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M11.24,13V4.43H8.19V2.98h7.63v1.46h-3.05V13H11.24z"/>
|
||||||
|
+ android:fillColor="#FFFFFFFF"
|
||||||
|
+ android:pathData="M17.34,8.88h-3.52v3.53h4.1v1.07h-5.35V3.52h5.28V4.6h-4.03V7.8h3.52V8.88z" />
|
||||||
|
<path
|
||||||
|
- android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M17.41,13V2.98h6.36v1.46h-4.83v2.65h4.4v1.46h-4.4v3.01h4.83V13H17.41z"/>
|
||||||
|
+ android:pathData="M 0 0 H 18 V 17 H 0 V 0 Z" />
|
||||||
|
</vector>
|
||||||
|
diff --git a/packages/SystemUI/res/drawable/stat_sys_roaming_large.xml b/packages/SystemUI/res/drawable/stat_sys_roaming_large.xml
|
||||||
|
index 48faeb22416f..1511659ea42f 100644
|
||||||
|
--- a/packages/SystemUI/res/drawable/stat_sys_roaming_large.xml
|
||||||
|
+++ b/packages/SystemUI/res/drawable/stat_sys_roaming_large.xml
|
||||||
|
@@ -14,11 +14,11 @@
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:width="16dp"
|
||||||
|
- android:height="16dp"
|
||||||
|
- android:viewportWidth="16.0"
|
||||||
|
- android:viewportHeight="16.0">
|
||||||
|
+ android:width="@dimen/signal_icon_size"
|
||||||
|
+ android:height="@dimen/signal_icon_size"
|
||||||
|
+ android:viewportWidth="24.0"
|
||||||
|
+ android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
- android:pathData="M4.5,13.02V3h3.93c0.97,0 1.75,0.27 2.34,0.81c0.6,0.53 0.9,1.28 0.9,2.25c0,0.63 -0.19,1.2 -0.56,1.74c-0.37,0.53 -0.95,0.91 -1.74,1.12l2.45,4.02v0.08h-1.69L7.75,9.09H6.03v3.93H4.5zM8.46,4.44H6.03v3.23h2.44c0.49,0 0.9,-0.14 1.2,-0.41c0.31,-0.28 0.46,-0.69 0.46,-1.22s-0.15,-0.93 -0.45,-1.2C9.38,4.58 8.98,4.44 8.46,4.44z"/>
|
||||||
|
+ android:pathData="M14.21,12.81c0.36,-0.16 0.69,-0.36 0.97,-0.61c0.41,-0.38 0.72,-0.83 0.94,-1.37c0.21,-0.54 0.32,-1.14 0.32,-1.79c0,-0.92 -0.16,-1.7 -0.49,-2.33c-0.32,-0.64 -0.79,-1.12 -1.43,-1.45c-0.62,-0.33 -1.4,-0.49 -2.32,-0.49H8.23V19h1.8v-5.76h2.5L15.06,19h1.92v-0.12L14.21,12.81zM10.03,11.71V6.32h2.18c0.59,0 1.06,0.11 1.42,0.34c0.36,0.22 0.62,0.54 0.78,0.95c0.16,0.41 0.24,0.89 0.24,1.44c0,0.49 -0.09,0.93 -0.27,1.34c-0.18,0.4 -0.46,0.73 -0.82,0.97c-0.36,0.23 -0.82,0.35 -1.37,0.35H10.03z"/>
|
||||||
|
</vector>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
From ea9a73648e61b2ab2e35aaefae7a27e92dea210b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 29 Sep 2022 11:27:57 +0000
|
||||||
|
Subject: [PATCH 14/21] Revert "Use the default top clock margin on h800
|
||||||
|
devices"
|
||||||
|
|
||||||
|
This reverts commits 50ba380f4d8d1c2523e0f76295ca556038796bfd
|
||||||
|
and 2a254b4d479029aec46f79a0ed14ffab6d0424bc.
|
||||||
|
---
|
||||||
|
packages/SystemUI/res/values-h800dp/dimens.xml | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res/values-h800dp/dimens.xml b/packages/SystemUI/res/values-h800dp/dimens.xml
|
||||||
|
index 94fe20955ce6..1d6f279afc66 100644
|
||||||
|
--- a/packages/SystemUI/res/values-h800dp/dimens.xml
|
||||||
|
+++ b/packages/SystemUI/res/values-h800dp/dimens.xml
|
||||||
|
@@ -15,6 +15,9 @@
|
||||||
|
-->
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
+ <!-- Minimum margin between clock and top of screen or ambient indication -->
|
||||||
|
+ <dimen name="keyguard_clock_top_margin">38dp</dimen>
|
||||||
|
+
|
||||||
|
<!-- Large clock maximum font size (dp is intentional, to prevent any further scaling) -->
|
||||||
|
<dimen name="large_clock_text_size">200dp</dimen>
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,59 @@
|
|||||||
|
From c4f2d8931a870eaf3faff1d73da630ba7ab339f4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Wed, 7 Oct 2020 14:00:35 +0000
|
||||||
|
Subject: [PATCH 15/21] UI: Always render windows into cutouts
|
||||||
|
|
||||||
|
Eliminates black/white letterboxing
|
||||||
|
Quick and dirty way to do the latter - wait for proper fix from Google
|
||||||
|
|
||||||
|
Change-Id: I4661c7979bfa7de453329fcddbaeefc2009e2da3
|
||||||
|
---
|
||||||
|
.../com/android/server/wm/DisplayFrames.java | 19 ++++---------------
|
||||||
|
.../com/android/server/wm/DisplayPolicy.java | 1 +
|
||||||
|
2 files changed, 5 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/wm/DisplayFrames.java b/services/core/java/com/android/server/wm/DisplayFrames.java
|
||||||
|
index fd0631320520..97989e086c74 100644
|
||||||
|
--- a/services/core/java/com/android/server/wm/DisplayFrames.java
|
||||||
|
+++ b/services/core/java/com/android/server/wm/DisplayFrames.java
|
||||||
|
@@ -99,21 +99,10 @@ public class DisplayFrames {
|
||||||
|
state.setRoundedCorners(roundedCorners);
|
||||||
|
state.setPrivacyIndicatorBounds(indicatorBounds);
|
||||||
|
state.getDisplayCutoutSafe(safe);
|
||||||
|
- if (!cutout.isEmpty()) {
|
||||||
|
- state.getSource(ITYPE_LEFT_DISPLAY_CUTOUT).setFrame(
|
||||||
|
- unrestricted.left, unrestricted.top, safe.left, unrestricted.bottom);
|
||||||
|
- state.getSource(ITYPE_TOP_DISPLAY_CUTOUT).setFrame(
|
||||||
|
- unrestricted.left, unrestricted.top, unrestricted.right, safe.top);
|
||||||
|
- state.getSource(ITYPE_RIGHT_DISPLAY_CUTOUT).setFrame(
|
||||||
|
- safe.right, unrestricted.top, unrestricted.right, unrestricted.bottom);
|
||||||
|
- state.getSource(ITYPE_BOTTOM_DISPLAY_CUTOUT).setFrame(
|
||||||
|
- unrestricted.left, safe.bottom, unrestricted.right, unrestricted.bottom);
|
||||||
|
- } else {
|
||||||
|
- state.removeSource(ITYPE_LEFT_DISPLAY_CUTOUT);
|
||||||
|
- state.removeSource(ITYPE_TOP_DISPLAY_CUTOUT);
|
||||||
|
- state.removeSource(ITYPE_RIGHT_DISPLAY_CUTOUT);
|
||||||
|
- state.removeSource(ITYPE_BOTTOM_DISPLAY_CUTOUT);
|
||||||
|
- }
|
||||||
|
+ state.removeSource(ITYPE_LEFT_DISPLAY_CUTOUT);
|
||||||
|
+ state.removeSource(ITYPE_TOP_DISPLAY_CUTOUT);
|
||||||
|
+ state.removeSource(ITYPE_RIGHT_DISPLAY_CUTOUT);
|
||||||
|
+ state.removeSource(ITYPE_BOTTOM_DISPLAY_CUTOUT);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
|
||||||
|
index 6363479d318f..7c3df487b208 100644
|
||||||
|
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
|
||||||
|
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
|
||||||
|
@@ -1594,6 +1594,7 @@ public class DisplayPolicy {
|
||||||
|
displayFrames = win.getDisplayFrames(displayFrames);
|
||||||
|
|
||||||
|
final WindowManager.LayoutParams attrs = win.getLayoutingAttrs(displayFrames.mRotation);
|
||||||
|
+ attrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||||
|
final Rect attachedWindowFrame = attached != null ? attached.getFrame() : null;
|
||||||
|
|
||||||
|
// If this window has different LayoutParams for rotations, we cannot trust its requested
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From 7e637a2930dd450bbed631e29a46d96ec2cde12f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Wed, 1 Sep 2021 14:10:50 +0000
|
||||||
|
Subject: [PATCH 16/21] UI: Kill rounded corners in notification scrim
|
||||||
|
|
||||||
|
Rounded corners in S is nicely implemented, but this is one occasion where it looks out of place
|
||||||
|
|
||||||
|
Change-Id: I09ed59e0e658ebd512a9d02a8ef3edfe2c9888da
|
||||||
|
---
|
||||||
|
packages/SystemUI/res/values/dimens.xml | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
|
||||||
|
index b91143e9d6bb..790e5d7044b6 100644
|
||||||
|
--- a/packages/SystemUI/res/values/dimens.xml
|
||||||
|
+++ b/packages/SystemUI/res/values/dimens.xml
|
||||||
|
@@ -626,7 +626,7 @@
|
||||||
|
<!-- Burmese line spacing multiplier between hours and minutes of the keyguard clock -->
|
||||||
|
<item name="keyguard_clock_line_spacing_scale_burmese" type="dimen" format="float">1</item>
|
||||||
|
|
||||||
|
- <dimen name="notification_scrim_corner_radius">32dp</dimen>
|
||||||
|
+ <dimen name="notification_scrim_corner_radius">0dp</dimen>
|
||||||
|
|
||||||
|
<!-- The minimum amount the user needs to swipe to go to the camera / phone. -->
|
||||||
|
<dimen name="keyguard_min_swipe_amount">110dp</dimen>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
From f3cda7c608ba6fd49024c7e2920d70e22b4c93ee Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Mon, 26 Oct 2020 14:06:56 +0000
|
||||||
|
Subject: [PATCH 17/21] UI: Reconfigure power menu items
|
||||||
|
|
||||||
|
Change-Id: I32cca6e2c6bb64d891efee959127edf7c0802cbc
|
||||||
|
---
|
||||||
|
core/res/res/values/config.xml | 5 +----
|
||||||
|
1 file changed, 1 insertion(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
||||||
|
index 3accbddbe38b..b461c062396d 100644
|
||||||
|
--- a/core/res/res/values/config.xml
|
||||||
|
+++ b/core/res/res/values/config.xml
|
||||||
|
@@ -3178,13 +3178,10 @@
|
||||||
|
"logout" = Logout the current user
|
||||||
|
-->
|
||||||
|
<string-array translatable="false" name="config_globalActionsList">
|
||||||
|
- <item>emergency</item>
|
||||||
|
- <item>lockdown</item>
|
||||||
|
<item>power</item>
|
||||||
|
<item>restart</item>
|
||||||
|
- <item>logout</item>
|
||||||
|
<item>screenshot</item>
|
||||||
|
- <item>bugreport</item>
|
||||||
|
+ <item>airplane</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Number of milliseconds to hold a wake lock to ensure that drawing is fully
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 2c0b16610475573d1aaecfbb6c7ce15aa35f3121 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 5 Mar 2022 01:43:37 +0000
|
||||||
|
Subject: [PATCH 18/21] UI: Reconfigure quick settings tiles
|
||||||
|
|
||||||
|
Change-Id: I743f52ef3a95db0ca2c02ae973faa4629e41885d
|
||||||
|
---
|
||||||
|
packages/SystemUI/res/values/config.xml | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
|
||||||
|
index 22ca3a2c637c..3f4ab235b37e 100644
|
||||||
|
--- a/packages/SystemUI/res/values/config.xml
|
||||||
|
+++ b/packages/SystemUI/res/values/config.xml
|
||||||
|
@@ -74,7 +74,7 @@
|
||||||
|
|
||||||
|
<!-- The default tiles to display in QuickSettings -->
|
||||||
|
<string name="quick_settings_tiles_default" translatable="false">
|
||||||
|
- internet,bt,flashlight,dnd,alarm,airplane,controls,wallet,rotation,battery,cast,screenrecord,mictoggle,cameratoggle
|
||||||
|
+ wifi,cell,hotspot,location,rotation,flashlight
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<!-- The class path of the Safety Quick Settings Tile -->
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From 83a3672002f098bf37101915387bd13d99ca2b4b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Tue, 29 Jun 2021 22:57:01 +0000
|
||||||
|
Subject: [PATCH 19/21] UI: Relax requirement for HINT_SUPPORTS_DARK_TEXT
|
||||||
|
|
||||||
|
I decide what's good enough for a wallpaper!
|
||||||
|
|
||||||
|
Change-Id: I5ccd85b3df12e53746a4ac6cbc37ba8d11f6c336
|
||||||
|
---
|
||||||
|
core/java/android/app/WallpaperColors.java | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/core/java/android/app/WallpaperColors.java b/core/java/android/app/WallpaperColors.java
|
||||||
|
index 067a4c3c047e..a8d3c14e1d9d 100644
|
||||||
|
--- a/core/java/android/app/WallpaperColors.java
|
||||||
|
+++ b/core/java/android/app/WallpaperColors.java
|
||||||
|
@@ -577,7 +577,7 @@ public final class WallpaperColors implements Parcelable {
|
||||||
|
|
||||||
|
int hints = 0;
|
||||||
|
double meanLuminance = totalLuminance / pixels.length;
|
||||||
|
- if (meanLuminance > BRIGHT_IMAGE_MEAN_LUMINANCE && darkPixels < maxDarkPixels) {
|
||||||
|
+ if (meanLuminance > BRIGHT_IMAGE_MEAN_LUMINANCE) {
|
||||||
|
hints |= HINT_SUPPORTS_DARK_TEXT;
|
||||||
|
}
|
||||||
|
if (meanLuminance < DARK_THEME_MEAN_LUMINANCE) {
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 5efc5dd187e73421399e1190eb22eef2d735b80e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Tue, 19 Oct 2021 12:09:34 +0000
|
||||||
|
Subject: [PATCH 20/21] UI: Remove privacy dot padding
|
||||||
|
|
||||||
|
Change-Id: I5d2e2b3e36f027b4348a83030d4b4d3c4f0209d1
|
||||||
|
---
|
||||||
|
packages/SystemUI/res/values/dimens.xml | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
|
||||||
|
index 790e5d7044b6..06d13fc2b9f3 100644
|
||||||
|
--- a/packages/SystemUI/res/values/dimens.xml
|
||||||
|
+++ b/packages/SystemUI/res/values/dimens.xml
|
||||||
|
@@ -960,7 +960,7 @@
|
||||||
|
<dimen name="ongoing_appops_chip_animation_in_status_bar_translation_x">15dp</dimen>
|
||||||
|
<dimen name="ongoing_appops_chip_animation_out_status_bar_translation_x">7dp</dimen>
|
||||||
|
<!-- Total minimum padding to enforce to ensure that the dot can always show -->
|
||||||
|
- <dimen name="ongoing_appops_dot_min_padding">20dp</dimen>
|
||||||
|
+ <dimen name="ongoing_appops_dot_min_padding">0dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="ongoing_appops_dialog_side_margins">@dimen/notification_shade_content_margin_horizontal</dimen>
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,47 @@
|
|||||||
|
From 1d61f2f34fbf2df23f5bb506f86cd6f59675ebb4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Fri, 30 Sep 2022 16:02:16 +0000
|
||||||
|
Subject: [PATCH 21/21] UI: Revert to HSL luminance for wallpaper dark hints
|
||||||
|
|
||||||
|
Y U no test for consistency, Google?
|
||||||
|
|
||||||
|
Change-Id: Ie5663bdf518b4ef93d6deb634e707a32d052ac55
|
||||||
|
---
|
||||||
|
core/java/android/app/WallpaperColors.java | 8 ++++----
|
||||||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/core/java/android/app/WallpaperColors.java b/core/java/android/app/WallpaperColors.java
|
||||||
|
index a8d3c14e1d9d..88609f3d7052 100644
|
||||||
|
--- a/core/java/android/app/WallpaperColors.java
|
||||||
|
+++ b/core/java/android/app/WallpaperColors.java
|
||||||
|
@@ -552,15 +552,15 @@ public final class WallpaperColors implements Parcelable {
|
||||||
|
float[] tmpHsl = new float[3];
|
||||||
|
for (int i = 0; i < pixels.length; i++) {
|
||||||
|
int pixelColor = pixels[i];
|
||||||
|
- ColorUtils.colorToHSL(pixelColor, tmpHsl);
|
||||||
|
final int alpha = Color.alpha(pixelColor);
|
||||||
|
|
||||||
|
// Apply composite colors where the foreground is a black layer with an alpha value of
|
||||||
|
// the dim amount and the background is the wallpaper pixel color.
|
||||||
|
int compositeColors = ColorUtils.compositeColors(blackTransparent, pixelColor);
|
||||||
|
|
||||||
|
- // Calculate the adjusted luminance of the dimmed wallpaper pixel color.
|
||||||
|
- double adjustedLuminance = ColorUtils.calculateLuminance(compositeColors);
|
||||||
|
+ // Calculate the luminance of the dimmed wallpaper pixel color.
|
||||||
|
+ ColorUtils.colorToHSL(compositeColors, tmpHsl);
|
||||||
|
+ double luminance = tmpHsl[2];
|
||||||
|
|
||||||
|
// Make sure we don't have a dark pixel mass that will
|
||||||
|
// make text illegible.
|
||||||
|
@@ -572,7 +572,7 @@ public final class WallpaperColors implements Parcelable {
|
||||||
|
pixels[i] = Color.RED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- totalLuminance += adjustedLuminance;
|
||||||
|
+ totalLuminance += luminance;
|
||||||
|
}
|
||||||
|
|
||||||
|
int hints = 0;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
From f6baebedc09b503e477f7f4f1d83ac494d5028d3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Tue, 8 Jun 2021 12:00:26 +0000
|
||||||
|
Subject: [PATCH] Telephony: Disable SPN retrieval
|
||||||
|
|
||||||
|
Kills "double carrier name" on lock screen
|
||||||
|
Not ideal, but not worth wasting more time on
|
||||||
|
|
||||||
|
Change-Id: I06dd17989194590972e526de85dbacf74eff805e
|
||||||
|
---
|
||||||
|
.../internal/telephony/uicc/IccRecords.java | 25 +++++--------------
|
||||||
|
1 file changed, 6 insertions(+), 19 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/java/com/android/internal/telephony/uicc/IccRecords.java b/src/java/com/android/internal/telephony/uicc/IccRecords.java
|
||||||
|
index b33e899b9..220ed875d 100644
|
||||||
|
--- a/src/java/com/android/internal/telephony/uicc/IccRecords.java
|
||||||
|
+++ b/src/java/com/android/internal/telephony/uicc/IccRecords.java
|
||||||
|
@@ -717,35 +717,22 @@ public abstract class IccRecords extends Handler implements IccConstants {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
- * Return Service Provider Name stored in SIM (EF_SPN=0x6F46) or in RUIM (EF_RUIM_SPN=0x6F41).
|
||||||
|
+ * Return null, disabling Service Provider Name.
|
||||||
|
*
|
||||||
|
- * @return null if SIM is not yet ready or no RUIM entry
|
||||||
|
+ * @return null
|
||||||
|
*/
|
||||||
|
public String getServiceProviderName() {
|
||||||
|
- if (mCarrierTestOverride.isInTestMode()) {
|
||||||
|
- String fakeSpn = mCarrierTestOverride.getFakeSpn();
|
||||||
|
- if (fakeSpn != null) {
|
||||||
|
- return fakeSpn;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- return mSpn;
|
||||||
|
+ return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
- * Return Service Provider Name stored in SIM (EF_SPN=0x6F46) or in RUIM (EF_RUIM_SPN=0x6F41) or
|
||||||
|
- * the brand override. The brand override has higher priority than the SPN from SIM.
|
||||||
|
+ * Return null, disabling Service Provider Name.
|
||||||
|
*
|
||||||
|
- * @return service provider name.
|
||||||
|
+ * @return null
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public String getServiceProviderNameWithBrandOverride() {
|
||||||
|
- if (mParentApp != null && mParentApp.getUiccProfile() != null) {
|
||||||
|
- String brandOverride = mParentApp.getUiccProfile().getOperatorBrandOverride();
|
||||||
|
- if (!TextUtils.isEmpty(brandOverride)) {
|
||||||
|
- return brandOverride;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- return mSpn;
|
||||||
|
+ return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setServiceProviderName(String spn) {
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
From 8a3d38d3148713836c12d85f7fc4a6a366cc00e4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AndyCGYan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Mon, 4 Mar 2019 14:27:56 +0800
|
||||||
|
Subject: [PATCH] sdk: Do not warn about SELinux and build signature status
|
||||||
|
|
||||||
|
Change-Id: I6e1ca9f2c2f7763364a9a370f444dfe8059d0563
|
||||||
|
---
|
||||||
|
.../org/lineageos/platform/internal/TrustInterfaceService.java | 9 ---------
|
||||||
|
1 file changed, 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/TrustInterfaceService.java b/lineage/lib/main/java/org/lineageos/platform/internal/TrustInterfaceService.java
|
||||||
|
index 2dcb938..e9f2dca 100644
|
||||||
|
--- a/lineage/lib/main/java/org/lineageos/platform/internal/TrustInterfaceService.java
|
||||||
|
+++ b/lineage/lib/main/java/org/lineageos/platform/internal/TrustInterfaceService.java
|
||||||
|
@@ -197,15 +197,6 @@ public class TrustInterfaceService extends LineageSystemService {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void runTestInternal() {
|
||||||
|
- int selinuxStatus = getSELinuxStatus();
|
||||||
|
- if (selinuxStatus != TrustInterface.TRUST_FEATURE_LEVEL_GOOD) {
|
||||||
|
- postNotificationForFeatureInternal(TrustInterface.TRUST_WARN_SELINUX);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- int keysStatus = getKeysStatus();
|
||||||
|
- if (keysStatus != TrustInterface.TRUST_FEATURE_LEVEL_GOOD) {
|
||||||
|
- postNotificationForFeatureInternal(TrustInterface.TRUST_WARN_PUBLIC_KEY);
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Utils */
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
From 2e7478c72aa7c3b6585ec64bd61d9df6366e1c48 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 5 Sep 2021 00:30:33 +0000
|
||||||
|
Subject: [PATCH 1/3] DeskClock: Remove night mode
|
||||||
|
|
||||||
|
Change-Id: I885f39027e78fcda397f1be59d17bc24bc66671a
|
||||||
|
---
|
||||||
|
res/xml/screensaver_settings.xml | 8 +-------
|
||||||
|
src/com/android/deskclock/Screensaver.java | 5 ++---
|
||||||
|
src/com/android/deskclock/ScreensaverActivity.java | 2 +-
|
||||||
|
3 files changed, 4 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/res/xml/screensaver_settings.xml b/res/xml/screensaver_settings.xml
|
||||||
|
index 1680aab83..73375dcfa 100644
|
||||||
|
--- a/res/xml/screensaver_settings.xml
|
||||||
|
+++ b/res/xml/screensaver_settings.xml
|
||||||
|
@@ -24,10 +24,4 @@
|
||||||
|
android:key="screensaver_clock_style"
|
||||||
|
android:title="@string/clock_style" />
|
||||||
|
|
||||||
|
- <CheckBoxPreference
|
||||||
|
- android:defaultValue="true"
|
||||||
|
- android:key="screensaver_night_mode"
|
||||||
|
- android:summary="@string/night_mode_summary"
|
||||||
|
- android:title="@string/night_mode_title" />
|
||||||
|
-
|
||||||
|
-</PreferenceScreen>
|
||||||
|
\ No newline at end of file
|
||||||
|
+</PreferenceScreen>
|
||||||
|
diff --git a/src/com/android/deskclock/Screensaver.java b/src/com/android/deskclock/Screensaver.java
|
||||||
|
index 29cc13ff9..8def22b30 100644
|
||||||
|
--- a/src/com/android/deskclock/Screensaver.java
|
||||||
|
+++ b/src/com/android/deskclock/Screensaver.java
|
||||||
|
@@ -141,9 +141,8 @@ public final class Screensaver extends DreamService {
|
||||||
|
|
||||||
|
private void setClockStyle() {
|
||||||
|
Utils.setScreensaverClockStyle(mDigitalClock, mAnalogClock);
|
||||||
|
- final boolean dimNightMode = DataModel.getDataModel().getScreensaverNightModeOn();
|
||||||
|
- Utils.dimClockView(dimNightMode, mMainClockView);
|
||||||
|
- setScreenBright(!dimNightMode);
|
||||||
|
+ Utils.dimClockView(false, mMainClockView);
|
||||||
|
+ setScreenBright(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
diff --git a/src/com/android/deskclock/ScreensaverActivity.java b/src/com/android/deskclock/ScreensaverActivity.java
|
||||||
|
index cf770086b..7a756df7d 100644
|
||||||
|
--- a/src/com/android/deskclock/ScreensaverActivity.java
|
||||||
|
+++ b/src/com/android/deskclock/ScreensaverActivity.java
|
||||||
|
@@ -107,7 +107,7 @@ public class ScreensaverActivity extends BaseActivity {
|
||||||
|
Utils.setClockIconTypeface(mMainClockView);
|
||||||
|
Utils.setTimeFormat((TextClock) digitalClock, false);
|
||||||
|
Utils.setClockStyle(digitalClock, analogClock);
|
||||||
|
- Utils.dimClockView(true, mMainClockView);
|
||||||
|
+ Utils.dimClockView(false, mMainClockView);
|
||||||
|
analogClock.enableSeconds(false);
|
||||||
|
|
||||||
|
mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,587 @@
|
|||||||
|
From e72a06f095a0363085f32d631597611b96e6c160 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Wed, 19 Jan 2022 18:04:36 +0000
|
||||||
|
Subject: [PATCH 2/3] DeskClock: Adapt digital clocks to S style
|
||||||
|
|
||||||
|
Lollipop is so yesterday...
|
||||||
|
Bring the layouts of various digital clocks (app, widget, daydream)
|
||||||
|
in-line, and adjust their styles to match the custom keyguard on S
|
||||||
|
|
||||||
|
Caveats/TODO:
|
||||||
|
- Widget swallows all touch events, even when touching an empty area
|
||||||
|
- World clocks in widgets are left untouched
|
||||||
|
|
||||||
|
Change-Id: I10c6fa213c89ac2f6e342be13fdd6390f7f787b0
|
||||||
|
---
|
||||||
|
res/layout-land/main_clock_frame.xml | 19 ++---
|
||||||
|
res/layout/date_and_next_alarm_time.xml | 57 +++++++-------
|
||||||
|
res/layout/desk_clock_saver.xml | 12 +--
|
||||||
|
res/layout/digital_widget.xml | 71 ++++++++---------
|
||||||
|
res/layout/digital_widget_sizer.xml | 77 ++++++++-----------
|
||||||
|
res/layout/main_clock_frame.xml | 23 +++---
|
||||||
|
res/values/dimens.xml | 12 ++-
|
||||||
|
res/values/styles.xml | 19 +++++
|
||||||
|
.../alarmclock/DigitalAppWidgetProvider.java | 31 ++++----
|
||||||
|
src/com/android/deskclock/AlarmUtils.java | 2 +-
|
||||||
|
10 files changed, 167 insertions(+), 156 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/res/layout-land/main_clock_frame.xml b/res/layout-land/main_clock_frame.xml
|
||||||
|
index 6abfdddd6..8ad98c0cf 100644
|
||||||
|
--- a/res/layout-land/main_clock_frame.xml
|
||||||
|
+++ b/res/layout-land/main_clock_frame.xml
|
||||||
|
@@ -21,10 +21,11 @@
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
- <FrameLayout
|
||||||
|
+ <LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
- android:layout_height="0dp"
|
||||||
|
- android:layout_weight="1">
|
||||||
|
+ android:layout_height="wrap_content"
|
||||||
|
+ android:gravity="center_vertical|start"
|
||||||
|
+ android:orientation="vertical">
|
||||||
|
|
||||||
|
<com.android.deskclock.AnalogClock
|
||||||
|
android:id="@+id/analog_clock"
|
||||||
|
@@ -38,19 +39,13 @@
|
||||||
|
|
||||||
|
<com.android.deskclock.widget.AutoSizingTextClock
|
||||||
|
android:id="@+id/digital_clock"
|
||||||
|
- style="@style/display_time"
|
||||||
|
+ style="@style/sc_keyguard_clock"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textSize="@dimen/main_clock_digital_font_size"
|
||||||
|
tools:text="01:23" />
|
||||||
|
|
||||||
|
- </FrameLayout>
|
||||||
|
+ <include layout="@layout/date_and_next_alarm_time" />
|
||||||
|
|
||||||
|
- <include layout="@layout/date_and_next_alarm_time"
|
||||||
|
- android:layout_width="wrap_content"
|
||||||
|
- android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center_horizontal"/>
|
||||||
|
+ </LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
diff --git a/res/layout/date_and_next_alarm_time.xml b/res/layout/date_and_next_alarm_time.xml
|
||||||
|
index 23df1cd3b..b29ffedcf 100644
|
||||||
|
--- a/res/layout/date_and_next_alarm_time.xml
|
||||||
|
+++ b/res/layout/date_and_next_alarm_time.xml
|
||||||
|
@@ -18,36 +18,41 @@
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
- android:layout_gravity="center_vertical"
|
||||||
|
- android:gravity="center">
|
||||||
|
+ android:gravity="center_vertical|start"
|
||||||
|
+ android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/date"
|
||||||
|
- style="@style/body"
|
||||||
|
+ style="@style/sc_keyguard_row"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:textAllCaps="true"
|
||||||
|
+ android:paddingTop="@dimen/sc_keyguard_status_area_top_padding"
|
||||||
|
+ android:paddingStart="@dimen/sc_keyguard_row_date_start_padding"
|
||||||
|
tools:text="Sa., 01.01."/>
|
||||||
|
|
||||||
|
- <TextView
|
||||||
|
- android:id="@+id/nextAlarmIcon"
|
||||||
|
- style="@style/body"
|
||||||
|
- android:layout_width="wrap_content"
|
||||||
|
- android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center"
|
||||||
|
- android:layout_marginEnd="@dimen/alarm_icon_padding"
|
||||||
|
- android:layout_marginStart="@dimen/alarm_icon_padding"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
- android:maxLines="1"
|
||||||
|
- android:text="@string/clock_emoji" />
|
||||||
|
-
|
||||||
|
- <TextView
|
||||||
|
- android:id="@+id/nextAlarm"
|
||||||
|
- style="@style/body"
|
||||||
|
- android:layout_width="wrap_content"
|
||||||
|
- android:layout_height="wrap_content"
|
||||||
|
- android:textAllCaps="true"
|
||||||
|
- tools:text="Mo., 07:00"/>
|
||||||
|
-
|
||||||
|
-</LinearLayout>
|
||||||
|
\ No newline at end of file
|
||||||
|
+ <LinearLayout
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
+ android:layout_height="wrap_content"
|
||||||
|
+ android:paddingTop="@dimen/sc_keyguard_row_top_padding"
|
||||||
|
+ android:paddingStart="@dimen/sc_keyguard_row_alarm_start_padding">
|
||||||
|
+
|
||||||
|
+ <TextView
|
||||||
|
+ android:id="@+id/nextAlarmIcon"
|
||||||
|
+ style="@style/sc_keyguard_row"
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
+ android:layout_height="wrap_content"
|
||||||
|
+ android:layout_gravity="center"
|
||||||
|
+ android:layout_marginEnd="@dimen/alarm_icon_padding"
|
||||||
|
+ android:text="@string/clock_emoji"
|
||||||
|
+ android:textSize="@dimen/sc_keyguard_alarm_icon_size" />
|
||||||
|
+
|
||||||
|
+ <TextView
|
||||||
|
+ android:id="@+id/nextAlarm"
|
||||||
|
+ style="@style/sc_keyguard_row"
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
+ android:layout_height="wrap_content"
|
||||||
|
+ tools:text="Mo., 07:00"/>
|
||||||
|
+
|
||||||
|
+ </LinearLayout>
|
||||||
|
+
|
||||||
|
+</LinearLayout>
|
||||||
|
diff --git a/res/layout/desk_clock_saver.xml b/res/layout/desk_clock_saver.xml
|
||||||
|
index dafabfddf..d24219dbb 100644
|
||||||
|
--- a/res/layout/desk_clock_saver.xml
|
||||||
|
+++ b/res/layout/desk_clock_saver.xml
|
||||||
|
@@ -42,19 +42,13 @@
|
||||||
|
|
||||||
|
<TextClock
|
||||||
|
android:id="@+id/digital_clock"
|
||||||
|
- style="@style/big_thin"
|
||||||
|
+ style="@style/sc_keyguard_clock"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center"
|
||||||
|
- android:layout_marginBottom="@dimen/bottom_text_spacing_digital"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:gravity="center"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textColor="@color/white"
|
||||||
|
- android:textSize="@dimen/main_clock_font_size" />
|
||||||
|
+ android:fontFamily="sans-serif-thin" />
|
||||||
|
|
||||||
|
<include layout="@layout/date_and_next_alarm_time" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
-</FrameLayout>
|
||||||
|
\ No newline at end of file
|
||||||
|
+</FrameLayout>
|
||||||
|
diff --git a/res/layout/digital_widget.xml b/res/layout/digital_widget.xml
|
||||||
|
index c5b4837a6..e376a5a7a 100644
|
||||||
|
--- a/res/layout/digital_widget.xml
|
||||||
|
+++ b/res/layout/digital_widget.xml
|
||||||
|
@@ -19,58 +19,53 @@
|
||||||
|
android:id="@+id/digital_widget"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
- android:gravity="top|center_horizontal"
|
||||||
|
+ android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
- <TextClock
|
||||||
|
- android:id="@+id/clock"
|
||||||
|
- style="@style/widget_big_thin"
|
||||||
|
- android:layout_width="wrap_content"
|
||||||
|
- android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center_horizontal|top"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:format12Hour="@string/lock_screen_12_hour_format"
|
||||||
|
- android:format24Hour="@string/lock_screen_24_hour_format"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textColor="@color/white" />
|
||||||
|
-
|
||||||
|
<LinearLayout
|
||||||
|
+ android:id="@+id/digital_widget_actual"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center_horizontal|top">
|
||||||
|
+ android:gravity="center_vertical|start"
|
||||||
|
+ android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextClock
|
||||||
|
- android:id="@+id/date"
|
||||||
|
- style="@style/widget_label"
|
||||||
|
+ android:id="@+id/clock"
|
||||||
|
+ style="@style/sc_keyguard_clock"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textAllCaps="true"
|
||||||
|
- android:textColor="@color/white" />
|
||||||
|
+ android:format12Hour="@string/lock_screen_12_hour_format"
|
||||||
|
+ android:format24Hour="@string/lock_screen_24_hour_format" />
|
||||||
|
|
||||||
|
- <ImageView
|
||||||
|
- android:id="@+id/nextAlarmIcon"
|
||||||
|
+ <TextClock
|
||||||
|
+ android:id="@+id/date"
|
||||||
|
+ style="@style/sc_keyguard_row"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center"
|
||||||
|
- android:contentDescription="@null"
|
||||||
|
- android:scaleType="center" />
|
||||||
|
+ android:paddingTop="@dimen/sc_keyguard_status_area_top_padding"
|
||||||
|
+ android:paddingStart="@dimen/sc_keyguard_row_date_start_padding" />
|
||||||
|
|
||||||
|
- <TextView
|
||||||
|
- android:id="@+id/nextAlarm"
|
||||||
|
- style="@style/widget_label"
|
||||||
|
+ <LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textAllCaps="true"
|
||||||
|
- android:textColor="@color/white" />
|
||||||
|
+ android:paddingTop="@dimen/sc_keyguard_row_top_padding"
|
||||||
|
+ android:paddingStart="@dimen/sc_keyguard_row_alarm_start_padding">
|
||||||
|
+
|
||||||
|
+ <ImageView
|
||||||
|
+ android:id="@+id/nextAlarmIcon"
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
+ android:layout_height="wrap_content"
|
||||||
|
+ android:layout_gravity="center"
|
||||||
|
+ android:contentDescription="@null"
|
||||||
|
+ android:scaleType="center" />
|
||||||
|
+
|
||||||
|
+ <TextView
|
||||||
|
+ android:id="@+id/nextAlarm"
|
||||||
|
+ style="@style/sc_keyguard_row"
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
+ android:layout_height="wrap_content" />
|
||||||
|
+
|
||||||
|
+ </LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
@@ -82,4 +77,4 @@
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:divider="@null" />
|
||||||
|
|
||||||
|
-</LinearLayout>
|
||||||
|
\ No newline at end of file
|
||||||
|
+</LinearLayout>
|
||||||
|
diff --git a/res/layout/digital_widget_sizer.xml b/res/layout/digital_widget_sizer.xml
|
||||||
|
index f524cf536..b9a28c79f 100644
|
||||||
|
--- a/res/layout/digital_widget_sizer.xml
|
||||||
|
+++ b/res/layout/digital_widget_sizer.xml
|
||||||
|
@@ -15,64 +15,55 @@
|
||||||
|
-->
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
- android:layout_width="wrap_content"
|
||||||
|
- android:layout_height="wrap_content"
|
||||||
|
+ android:layout_width="match_parent"
|
||||||
|
+ android:layout_height="match_parent"
|
||||||
|
+ android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
- <TextClock
|
||||||
|
- android:id="@+id/clock"
|
||||||
|
- style="@style/widget_big_thin"
|
||||||
|
- android:layout_width="wrap_content"
|
||||||
|
- android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center_horizontal|top"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:format12Hour="@string/lock_screen_12_hour_format"
|
||||||
|
- android:format24Hour="@string/lock_screen_24_hour_format"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textColor="@color/white" />
|
||||||
|
-
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center_horizontal|top">
|
||||||
|
+ android:gravity="center_vertical|start"
|
||||||
|
+ android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextClock
|
||||||
|
- android:id="@+id/date"
|
||||||
|
- style="@style/widget_label"
|
||||||
|
+ android:id="@+id/clock"
|
||||||
|
+ style="@style/sc_keyguard_clock"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textAllCaps="true"
|
||||||
|
- android:textColor="@color/white" />
|
||||||
|
+ android:format12Hour="@string/lock_screen_12_hour_format"
|
||||||
|
+ android:format24Hour="@string/lock_screen_24_hour_format" />
|
||||||
|
|
||||||
|
- <!-- This view is drawn to a Bitmap and sent to the widget as an icon. -->
|
||||||
|
- <TextView
|
||||||
|
- android:id="@+id/nextAlarmIcon"
|
||||||
|
- style="@style/widget_label"
|
||||||
|
+ <TextClock
|
||||||
|
+ android:id="@+id/date"
|
||||||
|
+ style="@style/sc_keyguard_row"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:text="@string/clock_emoji"
|
||||||
|
- android:textColor="@color/white" />
|
||||||
|
+ android:paddingTop="@dimen/sc_keyguard_status_area_top_padding"
|
||||||
|
+ android:paddingStart="@dimen/sc_keyguard_row_date_start_padding" />
|
||||||
|
|
||||||
|
- <TextView
|
||||||
|
- android:id="@+id/nextAlarm"
|
||||||
|
- style="@style/widget_label"
|
||||||
|
+ <LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:layout_gravity="center"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textAllCaps="true"
|
||||||
|
- android:textColor="@color/white" />
|
||||||
|
+ android:paddingTop="@dimen/sc_keyguard_row_top_padding"
|
||||||
|
+ android:paddingStart="@dimen/sc_keyguard_row_alarm_start_padding">
|
||||||
|
+
|
||||||
|
+ <!-- This view is drawn to a Bitmap and sent to the widget as an icon. -->
|
||||||
|
+ <TextView
|
||||||
|
+ android:id="@+id/nextAlarmIcon"
|
||||||
|
+ style="@style/sc_keyguard_row"
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
+ android:layout_height="wrap_content"
|
||||||
|
+ android:layout_gravity="center"
|
||||||
|
+ android:text="@string/clock_emoji" />
|
||||||
|
+
|
||||||
|
+ <TextView
|
||||||
|
+ android:id="@+id/nextAlarm"
|
||||||
|
+ style="@style/sc_keyguard_row"
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
+ android:layout_height="wrap_content" />
|
||||||
|
+
|
||||||
|
+ </LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
diff --git a/res/layout/main_clock_frame.xml b/res/layout/main_clock_frame.xml
|
||||||
|
index 159956f19..d0701eaf0 100644
|
||||||
|
--- a/res/layout/main_clock_frame.xml
|
||||||
|
+++ b/res/layout/main_clock_frame.xml
|
||||||
|
@@ -24,11 +24,11 @@
|
||||||
|
android:layout_marginEnd="24dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
- <FrameLayout
|
||||||
|
+ <LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
- android:layout_height="0dp"
|
||||||
|
- android:layout_weight="1"
|
||||||
|
- android:layout_gravity="start">
|
||||||
|
+ android:layout_height="wrap_content"
|
||||||
|
+ android:gravity="center_vertical|start"
|
||||||
|
+ android:orientation="vertical">
|
||||||
|
|
||||||
|
<com.android.deskclock.AnalogClock
|
||||||
|
android:id="@+id/analog_clock"
|
||||||
|
@@ -42,17 +42,14 @@
|
||||||
|
|
||||||
|
<com.android.deskclock.widget.AutoSizingTextClock
|
||||||
|
android:id="@+id/digital_clock"
|
||||||
|
- style="@style/display_time"
|
||||||
|
- android:layout_width="match_parent"
|
||||||
|
+ style="@style/sc_keyguard_clock"
|
||||||
|
+ android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
- android:ellipsize="none"
|
||||||
|
- android:includeFontPadding="false"
|
||||||
|
android:paddingTop="@dimen/main_clock_digital_padding"
|
||||||
|
- android:singleLine="true"
|
||||||
|
- android:textSize="@dimen/main_clock_digital_font_size"
|
||||||
|
tools:text="01:23" />
|
||||||
|
|
||||||
|
- </FrameLayout>
|
||||||
|
+ <include layout="@layout/date_and_next_alarm_time" />
|
||||||
|
+
|
||||||
|
+ </LinearLayout>
|
||||||
|
|
||||||
|
- <include layout="@layout/date_and_next_alarm_time" />
|
||||||
|
-</LinearLayout>
|
||||||
|
\ No newline at end of file
|
||||||
|
+</LinearLayout>
|
||||||
|
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
|
||||||
|
index 856ef8241..3061e27f6 100644
|
||||||
|
--- a/res/values/dimens.xml
|
||||||
|
+++ b/res/values/dimens.xml
|
||||||
|
@@ -61,7 +61,7 @@
|
||||||
|
<dimen name="body_font_padding">4dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="alarm_label_size">14sp</dimen>
|
||||||
|
- <dimen name="alarm_icon_padding">6dp</dimen>
|
||||||
|
+ <dimen name="alarm_icon_padding">7dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="backspace_icon_size">24dp</dimen>
|
||||||
|
<dimen name="no_alarms_size">90dp</dimen>
|
||||||
|
@@ -140,4 +140,14 @@
|
||||||
|
<dimen name="alarm_clock_expanded_vertical_margin">8dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="settings_padding">4dp</dimen>
|
||||||
|
+
|
||||||
|
+ <!-- Keyguard dimens, taken from S fwb -->
|
||||||
|
+ <dimen name="sc_keyguard_clock_text_size">86dp</dimen>
|
||||||
|
+ <dimen name="sc_keyguard_row_text_size">16dp</dimen>
|
||||||
|
+ <dimen name="sc_keyguard_alarm_icon_size">21dp</dimen>
|
||||||
|
+ <!-- Padding correction values, measured from S fwb -->
|
||||||
|
+ <dimen name="sc_keyguard_status_area_top_padding">9dp</dimen>
|
||||||
|
+ <dimen name="sc_keyguard_row_top_padding">11dp</dimen>
|
||||||
|
+ <dimen name="sc_keyguard_row_date_start_padding">6dp</dimen>
|
||||||
|
+ <dimen name="sc_keyguard_row_alarm_start_padding">5.5dp</dimen>
|
||||||
|
</resources>
|
||||||
|
diff --git a/res/values/styles.xml b/res/values/styles.xml
|
||||||
|
index 7ae54c97c..73a800383 100644
|
||||||
|
--- a/res/values/styles.xml
|
||||||
|
+++ b/res/values/styles.xml
|
||||||
|
@@ -187,4 +187,23 @@
|
||||||
|
<style name="TextAppearance.Title" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
|
||||||
|
<item name="android:textSize">22.0sp</item>
|
||||||
|
</style>
|
||||||
|
+
|
||||||
|
+ <style name="sc_keyguard_clock">
|
||||||
|
+ <item name="android:fontFamily">sans-serif-light</item>
|
||||||
|
+ <item name="android:fontFeatureSettings">tnum</item>
|
||||||
|
+ <item name="android:textSize">@dimen/sc_keyguard_clock_text_size</item>
|
||||||
|
+ <item name="android:textColor">@color/white</item>
|
||||||
|
+ <item name="android:ellipsize">none</item>
|
||||||
|
+ <item name="android:includeFontPadding">false</item>
|
||||||
|
+ <item name="android:maxLines">1</item>
|
||||||
|
+ </style>
|
||||||
|
+
|
||||||
|
+ <style name="sc_keyguard_row">
|
||||||
|
+ <item name="android:textSize">@dimen/sc_keyguard_row_text_size</item>
|
||||||
|
+ <item name="android:textColor">@color/white</item>
|
||||||
|
+ <item name="android:ellipsize">none</item>
|
||||||
|
+ <item name="android:includeFontPadding">false</item>
|
||||||
|
+ <item name="android:maxLines">1</item>
|
||||||
|
+ </style>
|
||||||
|
+
|
||||||
|
</resources>
|
||||||
|
diff --git a/src/com/android/alarmclock/DigitalAppWidgetProvider.java b/src/com/android/alarmclock/DigitalAppWidgetProvider.java
|
||||||
|
index 1005f0ac0..e97bb474a 100644
|
||||||
|
--- a/src/com/android/alarmclock/DigitalAppWidgetProvider.java
|
||||||
|
+++ b/src/com/android/alarmclock/DigitalAppWidgetProvider.java
|
||||||
|
@@ -224,7 +224,7 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
if (Utils.isWidgetClickable(wm, widgetId)) {
|
||||||
|
final Intent openApp = new Intent(context, DeskClock.class);
|
||||||
|
final PendingIntent pi = PendingIntent.getActivity(context, 0, openApp, FLAG_IMMUTABLE);
|
||||||
|
- rv.setOnClickPendingIntent(R.id.digital_widget, pi);
|
||||||
|
+ rv.setOnClickPendingIntent(R.id.digital_widget_actual, pi);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure child views of the remote view.
|
||||||
|
@@ -256,7 +256,7 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
final int targetWidthPx = portrait ? minWidthPx : maxWidthPx;
|
||||||
|
final int targetHeightPx = portrait ? maxHeightPx : minHeightPx;
|
||||||
|
final int largestClockFontSizePx =
|
||||||
|
- resources.getDimensionPixelSize(R.dimen.widget_max_clock_font_size);
|
||||||
|
+ resources.getDimensionPixelSize(R.dimen.sc_keyguard_clock_text_size);
|
||||||
|
|
||||||
|
// Create a size template that describes the widget bounds.
|
||||||
|
final Sizes template = new Sizes(targetWidthPx, targetHeightPx, largestClockFontSizePx);
|
||||||
|
@@ -328,13 +328,13 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Measure the widget at the largest possible size.
|
||||||
|
- Sizes high = measure(template, template.getLargestClockFontSizePx(), sizer);
|
||||||
|
+ Sizes high = measure(context, template, template.getLargestClockFontSizePx(), sizer);
|
||||||
|
if (!high.hasViolations()) {
|
||||||
|
return high;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Measure the widget at the smallest possible size.
|
||||||
|
- Sizes low = measure(template, template.getSmallestClockFontSizePx(), sizer);
|
||||||
|
+ Sizes low = measure(context, template, template.getSmallestClockFontSizePx(), sizer);
|
||||||
|
if (low.hasViolations()) {
|
||||||
|
return low;
|
||||||
|
}
|
||||||
|
@@ -346,7 +346,7 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
return low;
|
||||||
|
}
|
||||||
|
|
||||||
|
- final Sizes midSize = measure(template, midFontSize, sizer);
|
||||||
|
+ final Sizes midSize = measure(context, template, midFontSize, sizer);
|
||||||
|
if (midSize.hasViolations()) {
|
||||||
|
high = midSize;
|
||||||
|
} else {
|
||||||
|
@@ -409,7 +409,7 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
* the offscreen {@code sizer} view. Measure the {@code sizer} view and return the resulting
|
||||||
|
* size measurements.
|
||||||
|
*/
|
||||||
|
- private static Sizes measure(Sizes template, int clockFontSize, View sizer) {
|
||||||
|
+ private static Sizes measure(Context context, Sizes template, int clockFontSize, View sizer) {
|
||||||
|
// Create a copy of the given template sizes.
|
||||||
|
final Sizes measuredSizes = template.newSize();
|
||||||
|
|
||||||
|
@@ -420,13 +420,13 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
final TextView nextAlarmIcon = (TextView) sizer.findViewById(R.id.nextAlarmIcon);
|
||||||
|
|
||||||
|
// Adjust the font sizes.
|
||||||
|
- measuredSizes.setClockFontSizePx(clockFontSize);
|
||||||
|
+ measuredSizes.setClockFontSizePx(context, clockFontSize);
|
||||||
|
clock.setText(getLongestTimeString(clock));
|
||||||
|
clock.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mClockFontSizePx);
|
||||||
|
date.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mFontSizePx);
|
||||||
|
nextAlarm.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mFontSizePx);
|
||||||
|
nextAlarmIcon.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mIconFontSizePx);
|
||||||
|
- nextAlarmIcon.setPadding(measuredSizes.mIconPaddingPx, 0, measuredSizes.mIconPaddingPx, 0);
|
||||||
|
+ nextAlarmIcon.setPadding(0, 0, measuredSizes.mIconPaddingPx, 0);
|
||||||
|
|
||||||
|
// Measure and layout the sizer.
|
||||||
|
final int widthSize = View.MeasureSpec.getSize(measuredSizes.mTargetWidthPx);
|
||||||
|
@@ -507,12 +507,17 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
private int getLargestClockFontSizePx() { return mLargestClockFontSizePx; }
|
||||||
|
private int getSmallestClockFontSizePx() { return mSmallestClockFontSizePx; }
|
||||||
|
private int getClockFontSizePx() { return mClockFontSizePx; }
|
||||||
|
- private void setClockFontSizePx(int clockFontSizePx) {
|
||||||
|
+ private void setClockFontSizePx(Context context, int clockFontSizePx) {
|
||||||
|
+ final Resources resources = context.getResources();
|
||||||
|
+ int keyguardClockTextSizePx = resources.getDimensionPixelSize(R.dimen.sc_keyguard_clock_text_size);
|
||||||
|
+ int keyguardRowTextSizePx = resources.getDimensionPixelSize(R.dimen.sc_keyguard_row_text_size);
|
||||||
|
+ int keyguardAlarmIconSizePx = resources.getDimensionPixelSize(R.dimen.sc_keyguard_alarm_icon_size);
|
||||||
|
+ int alarmIconPaddingPx = resources.getDimensionPixelSize(R.dimen.alarm_icon_padding);
|
||||||
|
mClockFontSizePx = clockFontSizePx;
|
||||||
|
- mFontSizePx = max(1, round(clockFontSizePx / 7.5f));
|
||||||
|
- mIconFontSizePx = (int) (mFontSizePx * 1.4f);
|
||||||
|
- mIconPaddingPx = mFontSizePx / 3;
|
||||||
|
- }
|
||||||
|
+ mFontSizePx = max(1, round(clockFontSizePx / (float) keyguardClockTextSizePx * (float) keyguardRowTextSizePx));
|
||||||
|
+ mIconFontSizePx = max(1, round(clockFontSizePx / (float) keyguardClockTextSizePx * (float) keyguardAlarmIconSizePx));
|
||||||
|
+ mIconPaddingPx = max(1, round(clockFontSizePx / (float) keyguardClockTextSizePx * (float) alarmIconPaddingPx));
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the amount of widget height available to the world cities list
|
||||||
|
diff --git a/src/com/android/deskclock/AlarmUtils.java b/src/com/android/deskclock/AlarmUtils.java
|
||||||
|
index db60ace95..43767d313 100644
|
||||||
|
--- a/src/com/android/deskclock/AlarmUtils.java
|
||||||
|
+++ b/src/com/android/deskclock/AlarmUtils.java
|
||||||
|
@@ -37,7 +37,7 @@ import java.util.Locale;
|
||||||
|
public class AlarmUtils {
|
||||||
|
|
||||||
|
public static String getFormattedTime(Context context, Calendar time) {
|
||||||
|
- final String skeleton = DateFormat.is24HourFormat(context) ? "EHm" : "Ehma";
|
||||||
|
+ final String skeleton = DateFormat.is24HourFormat(context) ? "Hm" : "hma";
|
||||||
|
final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton);
|
||||||
|
return (String) DateFormat.format(pattern, time);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,118 @@
|
|||||||
|
From 87509b89725d9b7439e4c14a19175a085e10b784 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 20 Jan 2022 04:42:03 +0000
|
||||||
|
Subject: [PATCH 3/3] DeskClock: Wallpaper-based text coloring for digital
|
||||||
|
clock widget
|
||||||
|
|
||||||
|
RemoteViews is such a restrictive PITA
|
||||||
|
|
||||||
|
Change-Id: Ie22c4980526575f73ebb4e56780d4c2193cc45d3
|
||||||
|
---
|
||||||
|
.../alarmclock/DigitalAppWidgetProvider.java | 57 +++++++++++++++++++
|
||||||
|
1 file changed, 57 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/com/android/alarmclock/DigitalAppWidgetProvider.java b/src/com/android/alarmclock/DigitalAppWidgetProvider.java
|
||||||
|
index e97bb474a..d52693a1b 100644
|
||||||
|
--- a/src/com/android/alarmclock/DigitalAppWidgetProvider.java
|
||||||
|
+++ b/src/com/android/alarmclock/DigitalAppWidgetProvider.java
|
||||||
|
@@ -19,6 +19,8 @@ package com.android.alarmclock;
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.AlarmManager;
|
||||||
|
import android.app.PendingIntent;
|
||||||
|
+import android.app.WallpaperColors;
|
||||||
|
+import android.app.WallpaperManager;
|
||||||
|
import android.appwidget.AppWidgetManager;
|
||||||
|
import android.appwidget.AppWidgetProvider;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
@@ -112,12 +114,40 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
/** Intent used to deliver the {@link #ACTION_ON_DAY_CHANGE} callback. */
|
||||||
|
private static final Intent DAY_CHANGE_INTENT = new Intent(ACTION_ON_DAY_CHANGE);
|
||||||
|
|
||||||
|
+ private static WallpaperManager mWallpaperManager;
|
||||||
|
+ private static boolean mDarkText;
|
||||||
|
+
|
||||||
|
+ private static void relayoutAllWidgets(Context context) {
|
||||||
|
+ final AppWidgetManager wm = AppWidgetManager.getInstance(context);
|
||||||
|
+ final ComponentName provider = new ComponentName(context, DigitalAppWidgetProvider.class);
|
||||||
|
+ final int[] widgetIds = wm.getAppWidgetIds(provider);
|
||||||
|
+ for (int widgetId : widgetIds) {
|
||||||
|
+ relayoutWidget(context, wm, widgetId, wm.getAppWidgetOptions(widgetId));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void addOnColorsChangedListener(Context context) {
|
||||||
|
+ mWallpaperManager.addOnColorsChangedListener(new WallpaperManager.OnColorsChangedListener() {
|
||||||
|
+ @Override
|
||||||
|
+ public void onColorsChanged(WallpaperColors colors, int which) {
|
||||||
|
+ relayoutAllWidgets(context);
|
||||||
|
+ }
|
||||||
|
+ }, null);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
@Override
|
||||||
|
public void onEnabled(Context context) {
|
||||||
|
super.onEnabled(context);
|
||||||
|
|
||||||
|
// Schedule the day-change callback if necessary.
|
||||||
|
updateDayChangeCallback(context);
|
||||||
|
+
|
||||||
|
+ // Listen for wallpaper color changes
|
||||||
|
+ mWallpaperManager = WallpaperManager.getInstance(context);
|
||||||
|
+ addOnColorsChangedListener(context);
|
||||||
|
+
|
||||||
|
+ // Force a relayout to pick up initial colors
|
||||||
|
+ relayoutAllWidgets(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@@ -216,6 +246,19 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
*/
|
||||||
|
private static RemoteViews relayoutWidget(Context context, AppWidgetManager wm, int widgetId,
|
||||||
|
Bundle options, boolean portrait) {
|
||||||
|
+ // Determine text colors.
|
||||||
|
+ if (mWallpaperManager == null) {
|
||||||
|
+ mWallpaperManager = WallpaperManager.getInstance(context);
|
||||||
|
+ addOnColorsChangedListener(context);
|
||||||
|
+ }
|
||||||
|
+ WallpaperColors wallpaperColors = mWallpaperManager.getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
|
||||||
|
+ // Live wallpapers might not implement the WallpaperColors API.
|
||||||
|
+ if (wallpaperColors == null) {
|
||||||
|
+ mDarkText = false;
|
||||||
|
+ } else {
|
||||||
|
+ mDarkText = (wallpaperColors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// Create a remote view for the digital clock.
|
||||||
|
final String packageName = context.getPackageName();
|
||||||
|
final RemoteViews rv = new RemoteViews(packageName, R.layout.digital_widget);
|
||||||
|
@@ -273,6 +316,17 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
rv.setTextViewTextSize(R.id.nextAlarm, COMPLEX_UNIT_PX, sizes.mFontSizePx);
|
||||||
|
rv.setTextViewTextSize(R.id.clock, COMPLEX_UNIT_PX, sizes.mClockFontSizePx);
|
||||||
|
|
||||||
|
+ // Apply the text color to the remote views.
|
||||||
|
+ if (mDarkText) {
|
||||||
|
+ rv.setTextColor(R.id.clock, resources.getColor(R.color.black));
|
||||||
|
+ rv.setTextColor(R.id.date, resources.getColor(R.color.black));
|
||||||
|
+ rv.setTextColor(R.id.nextAlarm, resources.getColor(R.color.black));
|
||||||
|
+ } else {
|
||||||
|
+ rv.setTextColor(R.id.clock, resources.getColor(R.color.white));
|
||||||
|
+ rv.setTextColor(R.id.date, resources.getColor(R.color.white));
|
||||||
|
+ rv.setTextColor(R.id.nextAlarm, resources.getColor(R.color.white));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
final int smallestWorldCityListSizePx =
|
||||||
|
resources.getDimensionPixelSize(R.dimen.widget_min_world_city_list_size);
|
||||||
|
if (sizes.getListHeight() <= smallestWorldCityListSizePx) {
|
||||||
|
@@ -428,6 +482,9 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
|
||||||
|
nextAlarmIcon.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mIconFontSizePx);
|
||||||
|
nextAlarmIcon.setPadding(0, 0, measuredSizes.mIconPaddingPx, 0);
|
||||||
|
|
||||||
|
+ // Adjust the alarm icon text color before generating its bitmap.
|
||||||
|
+ nextAlarmIcon.setTextColor(context.getResources().getColor(mDarkText ? R.color.black : R.color.white));
|
||||||
|
+
|
||||||
|
// Measure and layout the sizer.
|
||||||
|
final int widthSize = View.MeasureSpec.getSize(measuredSizes.mTargetWidthPx);
|
||||||
|
final int heightSize = View.MeasureSpec.getSize(measuredSizes.mTargetHeightPx);
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 99b3533fe66a7bdc71dd6c63c4ba6c75e2ef2082 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Micay <danielmicay@gmail.com>
|
||||||
|
Date: Sat, 6 Jun 2015 10:40:51 -0400
|
||||||
|
Subject: [PATCH] NfcService: Disable NFC by default
|
||||||
|
|
||||||
|
Change-Id: Ibe6abec7fa84c6fde476b8a083f57a3f61b50909
|
||||||
|
---
|
||||||
|
src/com/android/nfc/NfcService.java | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
|
||||||
|
index 3facdeeb..878b7e21 100644
|
||||||
|
--- a/src/com/android/nfc/NfcService.java
|
||||||
|
+++ b/src/com/android/nfc/NfcService.java
|
||||||
|
@@ -133,7 +133,7 @@ public class NfcService implements DeviceHostListener {
|
||||||
|
public static final String PREF = "NfcServicePrefs";
|
||||||
|
|
||||||
|
static final String PREF_NFC_ON = "nfc_on";
|
||||||
|
- static final boolean NFC_ON_DEFAULT = true;
|
||||||
|
+ static final boolean NFC_ON_DEFAULT = false;
|
||||||
|
static final String PREF_NDEF_PUSH_ON = "ndef_push_on";
|
||||||
|
static final boolean NDEF_PUSH_ON_DEFAULT = false;
|
||||||
|
static final String PREF_SECURE_NFC_ON = "secure_nfc_on";
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,227 @@
|
|||||||
|
From d94a28d2f9f88d3fee4f2a71b2364bca23f4be8b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 13 Mar 2022 11:22:48 +0000
|
||||||
|
Subject: [PATCH] Revert "[DO NOT MERGE] Allow a settings override for
|
||||||
|
double-line clock"
|
||||||
|
|
||||||
|
Sorry but I SAID NEVER!
|
||||||
|
|
||||||
|
This reverts commit cb4836b4868adc1f06212ce82851a5f16169ab5c.
|
||||||
|
|
||||||
|
Change-Id: I8b4b1354f23981f6edbe7f3c81ec4f511da3cc1a
|
||||||
|
---
|
||||||
|
res/values/strings.xml | 4 -
|
||||||
|
res/xml/security_lockscreen_settings.xml | 6 --
|
||||||
|
.../LockscreenClockPreferenceController.java | 70 ---------------
|
||||||
|
...ckscreenClockPreferenceControllerTest.java | 90 -------------------
|
||||||
|
4 files changed, 170 deletions(-)
|
||||||
|
delete mode 100644 src/com/android/settings/display/LockscreenClockPreferenceController.java
|
||||||
|
delete mode 100644 tests/robotests/src/com/android/settings/display/LockscreenClockPreferenceControllerTest.java
|
||||||
|
|
||||||
|
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||||
|
index 09d80c8814..8e55b8a4b8 100644
|
||||||
|
--- a/res/values/strings.xml
|
||||||
|
+++ b/res/values/strings.xml
|
||||||
|
@@ -13520,10 +13520,6 @@
|
||||||
|
<string name="lockscreen_trivial_controls_summary">Control external devices without unlocking your phone or tablet if allowed by the device controls app</string>
|
||||||
|
<!-- Trivial Device disabled controls summary [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="lockscreen_trivial_disabled_controls_summary">To use, first turn on \u0022Show device controls\u0022</string>
|
||||||
|
- <!-- Lockscreen double-line clock summary [CHAR LIMIT=NONE] -->
|
||||||
|
- <string name="lockscreen_double_line_clock_summary">Show double-line clock when available</string>
|
||||||
|
- <!-- Lockscreen double-line clock toggle [CHAR LIMIT=60] -->
|
||||||
|
- <string name="lockscreen_double_line_clock_setting_toggle">Double-line clock</string>
|
||||||
|
|
||||||
|
<!-- Title for RTT setting. [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="rtt_settings_title"></string>
|
||||||
|
diff --git a/res/xml/security_lockscreen_settings.xml b/res/xml/security_lockscreen_settings.xml
|
||||||
|
index cb3c69172e..3b3635ac45 100644
|
||||||
|
--- a/res/xml/security_lockscreen_settings.xml
|
||||||
|
+++ b/res/xml/security_lockscreen_settings.xml
|
||||||
|
@@ -78,12 +78,6 @@
|
||||||
|
android:title="@string/lockscreen_trivial_controls_setting_toggle"
|
||||||
|
android:summary="@string/lockscreen_trivial_controls_summary"
|
||||||
|
settings:controller="com.android.settings.display.ControlsTrivialPrivacyPreferenceController"/>
|
||||||
|
-
|
||||||
|
- <SwitchPreference
|
||||||
|
- android:key="lockscreen_double_line_clock_switch"
|
||||||
|
- android:title="@string/lockscreen_double_line_clock_setting_toggle"
|
||||||
|
- android:summary="@string/lockscreen_double_line_clock_summary"
|
||||||
|
- settings:controller="com.android.settings.display.LockscreenClockPreferenceController" />
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
diff --git a/src/com/android/settings/display/LockscreenClockPreferenceController.java b/src/com/android/settings/display/LockscreenClockPreferenceController.java
|
||||||
|
deleted file mode 100644
|
||||||
|
index 70ae55eaf9..0000000000
|
||||||
|
--- a/src/com/android/settings/display/LockscreenClockPreferenceController.java
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,70 +0,0 @@
|
||||||
|
-/*
|
||||||
|
- * Copyright (C) 2021 The Android Open Source 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
|
||||||
|
- *
|
||||||
|
- * 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.
|
||||||
|
- * See the License for the specific language governing permissions and
|
||||||
|
- * limitations under the License.
|
||||||
|
- */
|
||||||
|
-
|
||||||
|
-package com.android.settings.display;
|
||||||
|
-
|
||||||
|
-import android.content.Context;
|
||||||
|
-import android.provider.Settings;
|
||||||
|
-
|
||||||
|
-import androidx.preference.Preference;
|
||||||
|
-
|
||||||
|
-import com.android.settings.R;
|
||||||
|
-import com.android.settings.core.TogglePreferenceController;
|
||||||
|
-
|
||||||
|
-/**
|
||||||
|
- * Preference to enable/disable the large double-line clock on lockscreen
|
||||||
|
- */
|
||||||
|
-public class LockscreenClockPreferenceController extends TogglePreferenceController {
|
||||||
|
-
|
||||||
|
- private static final String SETTING_KEY = Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK;
|
||||||
|
-
|
||||||
|
- public LockscreenClockPreferenceController(Context context, String preferenceKey) {
|
||||||
|
- super(context, preferenceKey);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- public boolean isChecked() {
|
||||||
|
- return Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1) != 0;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- public boolean setChecked(boolean isChecked) {
|
||||||
|
- return Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY,
|
||||||
|
- isChecked ? 1 : 0);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- public CharSequence getSummary() {
|
||||||
|
- return mContext.getText(R.string.lockscreen_double_line_clock_summary);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- public int getAvailabilityStatus() {
|
||||||
|
- return AVAILABLE;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- public void updateState(Preference preference) {
|
||||||
|
- super.updateState(preference);
|
||||||
|
- preference.setEnabled(true);
|
||||||
|
- refreshSummary(preference);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- public int getSliceHighlightMenuRes() {
|
||||||
|
- return R.string.menu_key_display;
|
||||||
|
- }
|
||||||
|
-}
|
||||||
|
diff --git a/tests/robotests/src/com/android/settings/display/LockscreenClockPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/LockscreenClockPreferenceControllerTest.java
|
||||||
|
deleted file mode 100644
|
||||||
|
index 94f2dc6655..0000000000
|
||||||
|
--- a/tests/robotests/src/com/android/settings/display/LockscreenClockPreferenceControllerTest.java
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,90 +0,0 @@
|
||||||
|
-/*
|
||||||
|
- * Copyright (C) 2021 The Android Open Source 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
|
||||||
|
- *
|
||||||
|
- * 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.
|
||||||
|
- * See the License for the specific language governing permissions and
|
||||||
|
- * limitations under the License.
|
||||||
|
- */
|
||||||
|
-
|
||||||
|
-package com.android.settings.display;
|
||||||
|
-
|
||||||
|
-import static com.google.common.truth.Truth.assertThat;
|
||||||
|
-
|
||||||
|
-import android.content.ContentResolver;
|
||||||
|
-import android.content.Context;
|
||||||
|
-import android.provider.Settings;
|
||||||
|
-
|
||||||
|
-import androidx.preference.Preference;
|
||||||
|
-
|
||||||
|
-import org.junit.Before;
|
||||||
|
-import org.junit.Test;
|
||||||
|
-import org.junit.runner.RunWith;
|
||||||
|
-import org.mockito.Mock;
|
||||||
|
-import org.mockito.MockitoAnnotations;
|
||||||
|
-import org.robolectric.RobolectricTestRunner;
|
||||||
|
-import org.robolectric.RuntimeEnvironment;
|
||||||
|
-
|
||||||
|
-@RunWith(RobolectricTestRunner.class)
|
||||||
|
-public class LockscreenClockPreferenceControllerTest {
|
||||||
|
-
|
||||||
|
- private static final String TEST_KEY = "test_key";
|
||||||
|
- private static final String SETTING_KEY = Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK;
|
||||||
|
-
|
||||||
|
- private Context mContext;
|
||||||
|
- private ContentResolver mContentResolver;
|
||||||
|
- private LockscreenClockPreferenceController mController;
|
||||||
|
-
|
||||||
|
- @Mock
|
||||||
|
- private Preference mPreference;
|
||||||
|
-
|
||||||
|
- @Before
|
||||||
|
- public void setUp() {
|
||||||
|
- MockitoAnnotations.initMocks(this);
|
||||||
|
- mContext = RuntimeEnvironment.application;
|
||||||
|
- mContentResolver = mContext.getContentResolver();
|
||||||
|
- mController = new LockscreenClockPreferenceController(mContext, TEST_KEY);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Test
|
||||||
|
- public void isChecked_SettingIs1_returnTrue() {
|
||||||
|
- Settings.Secure.putInt(mContentResolver, SETTING_KEY, 1);
|
||||||
|
-
|
||||||
|
- assertThat(mController.isChecked()).isTrue();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Test
|
||||||
|
- public void isChecked_SettingIs0_returnFalse() {
|
||||||
|
- Settings.Secure.putInt(mContentResolver, SETTING_KEY, 0);
|
||||||
|
-
|
||||||
|
- assertThat(mController.isChecked()).isFalse();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Test
|
||||||
|
- public void isChecked_SettingIsNotSet_returnTrue() {
|
||||||
|
- Settings.Secure.putString(mContentResolver, SETTING_KEY, null);
|
||||||
|
-
|
||||||
|
- assertThat(mController.isChecked()).isTrue();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Test
|
||||||
|
- public void setChecked_true_SettingIsNot0() {
|
||||||
|
- mController.setChecked(true);
|
||||||
|
-
|
||||||
|
- assertThat(Settings.Secure.getInt(mContentResolver, SETTING_KEY, 0)).isNotEqualTo(0);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Test
|
||||||
|
- public void setChecked_false_SettingIs0() {
|
||||||
|
- mController.setChecked(false);
|
||||||
|
-
|
||||||
|
- assertThat(Settings.Secure.getInt(mContentResolver, SETTING_KEY, 0)).isEqualTo(0);
|
||||||
|
- }
|
||||||
|
-}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,93 @@
|
|||||||
|
From 1f218b4e6572822d99ec46c1bfd65e7ff023c0d3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 28 Oct 2021 02:30:59 +0000
|
||||||
|
Subject: [PATCH 1/2] Trebuchet: Make overview scrim transparent again
|
||||||
|
|
||||||
|
Also revert texts/buttons to workspace color
|
||||||
|
|
||||||
|
Change-Id: I78c84865eb06b8e59c9c271cd2e267ae4cd7cc08
|
||||||
|
---
|
||||||
|
quickstep/res/values/styles.xml | 4 ++--
|
||||||
|
quickstep/src/com/android/quickstep/views/RecentsView.java | 2 +-
|
||||||
|
res/color-v31/overview_scrim.xml | 2 +-
|
||||||
|
res/color-v31/overview_scrim_dark.xml | 2 +-
|
||||||
|
res/color/overview_button.xml | 6 +++---
|
||||||
|
5 files changed, 8 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/quickstep/res/values/styles.xml b/quickstep/res/values/styles.xml
|
||||||
|
index 7225220876..59cce932a2 100644
|
||||||
|
--- a/quickstep/res/values/styles.xml
|
||||||
|
+++ b/quickstep/res/values/styles.xml
|
||||||
|
@@ -142,7 +142,7 @@
|
||||||
|
parent="@android:style/Widget.DeviceDefault.Button.Borderless">
|
||||||
|
<item name="android:textColor">@color/overview_button</item>
|
||||||
|
<item name="android:drawableTint">@color/overview_button</item>
|
||||||
|
- <item name="android:tint">?android:attr/textColorPrimary</item>
|
||||||
|
+ <item name="android:tint">?attr/workspaceTextColor</item>
|
||||||
|
<item name="android:drawablePadding">8dp</item>
|
||||||
|
<item name="android:textAllCaps">false</item>
|
||||||
|
</style>
|
||||||
|
@@ -182,4 +182,4 @@
|
||||||
|
<item name="android:textSize">24sp</item>
|
||||||
|
<item name="android:lines">2</item>
|
||||||
|
</style>
|
||||||
|
-</resources>
|
||||||
|
\ No newline at end of file
|
||||||
|
+</resources>
|
||||||
|
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
index 4a4202ecc6..58e8c2508a 100644
|
||||||
|
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
@@ -717,7 +717,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||||
|
mEmptyIcon.setCallback(this);
|
||||||
|
mEmptyMessage = context.getText(R.string.recents_empty_message);
|
||||||
|
mEmptyMessagePaint = new TextPaint();
|
||||||
|
- mEmptyMessagePaint.setColor(Themes.getAttrColor(context, android.R.attr.textColorPrimary));
|
||||||
|
+ mEmptyMessagePaint.setColor(Themes.getAttrColor(context, R.attr.workspaceTextColor));
|
||||||
|
mEmptyMessagePaint.setTextSize(getResources()
|
||||||
|
.getDimension(R.dimen.recents_empty_message_text_size));
|
||||||
|
mEmptyMessagePaint.setTypeface(Typeface.create(Themes.getDefaultBodyFont(context),
|
||||||
|
diff --git a/res/color-v31/overview_scrim.xml b/res/color-v31/overview_scrim.xml
|
||||||
|
index 212518ff65..894997c59a 100644
|
||||||
|
--- a/res/color-v31/overview_scrim.xml
|
||||||
|
+++ b/res/color-v31/overview_scrim.xml
|
||||||
|
@@ -14,5 +14,5 @@
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
- <item android:color="@android:color/system_neutral2_200" />
|
||||||
|
+ <item android:color="@android:color/transparent" />
|
||||||
|
</selector>
|
||||||
|
diff --git a/res/color-v31/overview_scrim_dark.xml b/res/color-v31/overview_scrim_dark.xml
|
||||||
|
index 2ab8ecdec9..894997c59a 100644
|
||||||
|
--- a/res/color-v31/overview_scrim_dark.xml
|
||||||
|
+++ b/res/color-v31/overview_scrim_dark.xml
|
||||||
|
@@ -14,5 +14,5 @@
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
- <item android:color="@android:color/system_neutral1_500" android:lStar="35" />
|
||||||
|
+ <item android:color="@android:color/transparent" />
|
||||||
|
</selector>
|
||||||
|
diff --git a/res/color/overview_button.xml b/res/color/overview_button.xml
|
||||||
|
index aa48b78604..e638ac2d4a 100644
|
||||||
|
--- a/res/color/overview_button.xml
|
||||||
|
+++ b/res/color/overview_button.xml
|
||||||
|
@@ -2,10 +2,10 @@
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:alpha="1"
|
||||||
|
- android:color="?android:attr/textColorPrimary"
|
||||||
|
+ android:color="?attr/workspaceTextColor"
|
||||||
|
android:state_enabled="true" />
|
||||||
|
<item
|
||||||
|
android:alpha="?android:disabledAlpha"
|
||||||
|
- android:color="?android:attr/textColorPrimary"
|
||||||
|
+ android:color="?attr/workspaceTextColor"
|
||||||
|
android:state_enabled="false" />
|
||||||
|
-</selector>
|
||||||
|
\ No newline at end of file
|
||||||
|
+</selector>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,82 @@
|
|||||||
|
From 3b51af674b9aa916e86fcfe0034ba3dfc0359ae1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Fri, 18 Mar 2022 08:42:18 +0000
|
||||||
|
Subject: [PATCH 2/2] Trebuchet: Kill haptics in recents
|
||||||
|
|
||||||
|
This partially reverts commit cc5c8843dfebfa92057b6ce8904ac58cd05ffaef.
|
||||||
|
|
||||||
|
Change-Id: Ie3b0eabe8cc0421e696720740edc492cae2f5153
|
||||||
|
---
|
||||||
|
.../NoButtonQuickSwitchTouchController.java | 8 --------
|
||||||
|
.../TaskViewTouchController.java | 5 -----
|
||||||
|
.../android/quickstep/views/RecentsView.java | 19 -------------------
|
||||||
|
3 files changed, 32 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
|
||||||
|
index 53dc9dd873..c8d89edb97 100644
|
||||||
|
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
|
||||||
|
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
|
||||||
|
@@ -429,14 +429,6 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
|
||||||
|
nonOverviewAnim.setFloatValues(startProgress, endProgress);
|
||||||
|
mNonOverviewAnim.dispatchOnStart();
|
||||||
|
}
|
||||||
|
- if (targetState == QUICK_SWITCH) {
|
||||||
|
- // Navigating to quick switch, add scroll feedback since the first time is not
|
||||||
|
- // considered a scroll by the RecentsView.
|
||||||
|
- VibratorWrapper.INSTANCE.get(mLauncher).vibrate(
|
||||||
|
- RecentsView.SCROLL_VIBRATION_PRIMITIVE,
|
||||||
|
- RecentsView.SCROLL_VIBRATION_PRIMITIVE_SCALE,
|
||||||
|
- RecentsView.SCROLL_VIBRATION_FALLBACK);
|
||||||
|
- }
|
||||||
|
|
||||||
|
nonOverviewAnim.setDuration(Math.max(xDuration, yDuration));
|
||||||
|
mNonOverviewAnim.setEndAction(() -> onAnimationToStateCompleted(targetState));
|
||||||
|
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
|
||||||
|
index ca7f633bbc..61ee609535 100644
|
||||||
|
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
|
||||||
|
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
|
||||||
|
@@ -367,11 +367,6 @@ public abstract class TaskViewTouchController<T extends BaseDraggingActivity>
|
||||||
|
mCurrentAnimation.startWithVelocity(mActivity, goingToEnd,
|
||||||
|
velocity * orientationHandler.getSecondaryTranslationDirectionFactor(),
|
||||||
|
mEndDisplacement, animationDuration);
|
||||||
|
- if (goingUp && goingToEnd && !mIsDismissHapticRunning) {
|
||||||
|
- VibratorWrapper.INSTANCE.get(mActivity).vibrate(TASK_DISMISS_VIBRATION_PRIMITIVE,
|
||||||
|
- TASK_DISMISS_VIBRATION_PRIMITIVE_SCALE, TASK_DISMISS_VIBRATION_FALLBACK);
|
||||||
|
- mIsDismissHapticRunning = true;
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearState() {
|
||||||
|
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
index 58e8c2508a..786db49be5 100644
|
||||||
|
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
|
||||||
|
@@ -1339,25 +1339,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- @Override
|
||||||
|
- protected void onEdgeAbsorbingScroll() {
|
||||||
|
- vibrateForScroll();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- @Override
|
||||||
|
- protected void onScrollOverPageChanged() {
|
||||||
|
- vibrateForScroll();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- private void vibrateForScroll() {
|
||||||
|
- long now = SystemClock.uptimeMillis();
|
||||||
|
- if (now - mScrollLastHapticTimestamp > mScrollHapticMinGapMillis) {
|
||||||
|
- mScrollLastHapticTimestamp = now;
|
||||||
|
- VibratorWrapper.INSTANCE.get(mContext).vibrate(SCROLL_VIBRATION_PRIMITIVE,
|
||||||
|
- SCROLL_VIBRATION_PRIMITIVE_SCALE, SCROLL_VIBRATION_FALLBACK);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
@Override
|
||||||
|
protected void determineScrollingStart(MotionEvent ev, float touchSlopScale) {
|
||||||
|
// Enables swiping to the left or right only if the task overlay is not modal.
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,87 @@
|
|||||||
|
From b09034c7e5f9bbc2d29c3f10452259956fcb9f46 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 16 Oct 2021 00:33:15 +0000
|
||||||
|
Subject: [PATCH] Replace captive portal URLs globally
|
||||||
|
|
||||||
|
...so that it works even without a SIM inserted, which is a typical usecase of mine
|
||||||
|
URLs from Chinese OEM UIs are faster and more reliable than g.cn and other int'l ones
|
||||||
|
|
||||||
|
Change-Id: Ic3e124b2b62838a2bcf1dad0d670515f3d056964
|
||||||
|
---
|
||||||
|
res/values-mcc460/config.xml | 31 -------------------------------
|
||||||
|
res/values/config.xml | 7 +++----
|
||||||
|
2 files changed, 3 insertions(+), 35 deletions(-)
|
||||||
|
delete mode 100644 res/values-mcc460/config.xml
|
||||||
|
|
||||||
|
diff --git a/res/values-mcc460/config.xml b/res/values-mcc460/config.xml
|
||||||
|
deleted file mode 100644
|
||||||
|
index 3c4b4933..00000000
|
||||||
|
--- a/res/values-mcc460/config.xml
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,31 +0,0 @@
|
||||||
|
-<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
-<resources>
|
||||||
|
- <!-- Network validation URL configuration for devices using a Chinese SIM (MCC 460).
|
||||||
|
- The below URLs are often whitelisted by captive portals, so they should not be used in the
|
||||||
|
- general case as this could degrade the user experience (portals not detected properly).
|
||||||
|
- However in China the default URLs are not accessible in general. The below alternatives
|
||||||
|
- should allow users to connect to local networks normally. -->
|
||||||
|
- <!-- default_captive_portal_http_url is not configured as overlayable so
|
||||||
|
- OEMs that wish to change captive_portal_http_url configuration must
|
||||||
|
- do so via configuring runtime resource overlay to
|
||||||
|
- config_captive_portal_http_url and *NOT* by changing or overlaying
|
||||||
|
- this resource. It will break if the enforcement of overlayable starts.
|
||||||
|
- -->
|
||||||
|
- <string name="default_captive_portal_http_url" translatable="false">http://connectivitycheck.gstatic.cn/generate_204</string>
|
||||||
|
- <!-- default_captive_portal_https_url is not configured as overlayable so
|
||||||
|
- OEMs that wish to change captive_portal_https_url configuration must
|
||||||
|
- do so via configuring runtime resource overlay to
|
||||||
|
- config_captive_portal_https_url and *NOT* by changing or overlaying
|
||||||
|
- this resource. It will break if the enforcement of overlayable starts.
|
||||||
|
- -->
|
||||||
|
- <string name="default_captive_portal_https_url" translatable="false">https://connectivitycheck.gstatic.cn/generate_204</string>
|
||||||
|
- <!-- default_captive_portal_fallback_urls is not configured as overlayable
|
||||||
|
- so OEMs that wish to change captive_portal_fallback_urls configuration
|
||||||
|
- must do so via configuring runtime resource overlay to
|
||||||
|
- config_captive_portal_fallback_urls and *NOT* by changing or overlaying
|
||||||
|
- this resource. It will break if the enforcement of overlayable starts.
|
||||||
|
- -->
|
||||||
|
- <string-array name="default_captive_portal_fallback_urls" translatable="false">
|
||||||
|
- <item>http://www.googleapis.cn/generate_204</item>
|
||||||
|
- </string-array>
|
||||||
|
-</resources>
|
||||||
|
diff --git a/res/values/config.xml b/res/values/config.xml
|
||||||
|
index 805ca041..61297dda 100644
|
||||||
|
--- a/res/values/config.xml
|
||||||
|
+++ b/res/values/config.xml
|
||||||
|
@@ -13,7 +13,7 @@
|
||||||
|
config_captive_portal_http_url and *NOT* by changing or overlaying
|
||||||
|
this resource. It will break if the enforcement of overlayable starts.
|
||||||
|
-->
|
||||||
|
- <string name="default_captive_portal_http_url" translatable="false">http://connectivitycheck.gstatic.com/generate_204</string>
|
||||||
|
+ <string name="default_captive_portal_http_url" translatable="false">http://conn4.coloros.com/generate204</string>
|
||||||
|
<!-- HTTPS URL for network validation, to use for confirming internet connectivity. -->
|
||||||
|
<!-- default_captive_portal_https_url is not configured as overlayable so
|
||||||
|
OEMs that wish to change captive_portal_https_url configuration must
|
||||||
|
@@ -21,7 +21,7 @@
|
||||||
|
config_captive_portal_https_url and *NOT* by changing or overlaying
|
||||||
|
this resource. It will break if the enforcement of overlayable starts.
|
||||||
|
-->
|
||||||
|
- <string name="default_captive_portal_https_url" translatable="false">https://www.google.com/generate_204</string>
|
||||||
|
+ <string name="default_captive_portal_https_url" translatable="false">https://conn4.coloros.com/generate204</string>
|
||||||
|
|
||||||
|
<!-- List of fallback URLs to use for detecting captive portals. -->
|
||||||
|
<!-- default_captive_portal_fallback_urls is not configured as overlayable
|
||||||
|
@@ -31,8 +31,7 @@
|
||||||
|
this resource. It will break if the enforcement of overlayable starts.
|
||||||
|
-->
|
||||||
|
<string-array name="default_captive_portal_fallback_urls" translatable="false">
|
||||||
|
- <item>http://www.google.com/gen_204</item>
|
||||||
|
- <item>http://play.googleapis.com/generate_204</item>
|
||||||
|
+ <item>http://connect.rom.miui.com/generate_204</item>
|
||||||
|
</string-array>
|
||||||
|
<!-- Configuration hooks for the above settings.
|
||||||
|
Empty by default but may be overridden by RROs. -->
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
From 2386227e0541aa061579dd9c34da867174a7d6a2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 20 Jun 2021 09:09:15 +0000
|
||||||
|
Subject: [PATCH 1/4] build: Integrate prop modifications (2/2)
|
||||||
|
|
||||||
|
Change-Id: I076973f902ab20011964e50955e4326c18d5b34e
|
||||||
|
---
|
||||||
|
build/core/main_version.mk | 7 +------
|
||||||
|
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/build/core/main_version.mk b/build/core/main_version.mk
|
||||||
|
index 28044e2c..c5aa9617 100644
|
||||||
|
--- a/build/core/main_version.mk
|
||||||
|
+++ b/build/core/main_version.mk
|
||||||
|
@@ -5,17 +5,12 @@ ADDITIONAL_SYSTEM_PROPERTIES += \
|
||||||
|
endif
|
||||||
|
|
||||||
|
# LineageOS System Version
|
||||||
|
+# Do not set Display Versions here, due to Makefile not playing nice with spaces
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += \
|
||||||
|
- ro.lineage.version=$(LINEAGE_VERSION) \
|
||||||
|
ro.lineage.releasetype=$(LINEAGE_BUILDTYPE) \
|
||||||
|
ro.lineage.build.version=$(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR) \
|
||||||
|
- ro.modversion=$(LINEAGE_VERSION) \
|
||||||
|
ro.lineagelegal.url=https://lineageos.org/legal
|
||||||
|
|
||||||
|
-# LineageOS Platform Display Version
|
||||||
|
-ADDITIONAL_SYSTEM_PROPERTIES += \
|
||||||
|
- ro.lineage.display.version=$(LINEAGE_DISPLAY_VERSION)
|
||||||
|
-
|
||||||
|
# LineageOS Platform SDK Version
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += \
|
||||||
|
ro.lineage.build.version.plat.sdk=$(LINEAGE_PLATFORM_SDK_VERSION)
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,40 @@
|
|||||||
|
From 209602b004deebac7846b67def29f3281d864080 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 16 Oct 2021 00:41:07 +0000
|
||||||
|
Subject: [PATCH 2/4] build: Remove Stk (2/2)
|
||||||
|
|
||||||
|
Change-Id: I4e1cfacd296e47ef1731f3c32555089a5fca6f0c
|
||||||
|
---
|
||||||
|
config/data_only.mk | 4 ----
|
||||||
|
config/telephony.mk | 3 +--
|
||||||
|
2 files changed, 1 insertion(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config/data_only.mk b/config/data_only.mk
|
||||||
|
index 5ff877c9..ab70301b 100644
|
||||||
|
--- a/config/data_only.mk
|
||||||
|
+++ b/config/data_only.mk
|
||||||
|
@@ -1,7 +1,3 @@
|
||||||
|
# World APN list
|
||||||
|
PRODUCT_PACKAGES += \
|
||||||
|
apns-conf.xml
|
||||||
|
-
|
||||||
|
-# Telephony packages
|
||||||
|
-PRODUCT_PACKAGES += \
|
||||||
|
- Stk
|
||||||
|
diff --git a/config/telephony.mk b/config/telephony.mk
|
||||||
|
index 6adf48d9..e63b320d 100644
|
||||||
|
--- a/config/telephony.mk
|
||||||
|
+++ b/config/telephony.mk
|
||||||
|
@@ -8,8 +8,7 @@ PRODUCT_PACKAGES += \
|
||||||
|
|
||||||
|
# Telephony packages
|
||||||
|
PRODUCT_PACKAGES += \
|
||||||
|
- messaging \
|
||||||
|
- Stk
|
||||||
|
+ messaging
|
||||||
|
|
||||||
|
# Default ringtone
|
||||||
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From d9e352c11ee8738439b73ff5f02429da3f045cc5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AndyCGYan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Mon, 1 Jul 2019 07:03:04 +0000
|
||||||
|
Subject: [PATCH 3/4] vendor_lineage: Ignore neverallows... again
|
||||||
|
|
||||||
|
Because unofficial builds are better than no builds!
|
||||||
|
|
||||||
|
Change-Id: I4b19d09b28f79c6f5020bf03fdf8931145bca03a
|
||||||
|
---
|
||||||
|
build/core/config.mk | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/build/core/config.mk b/build/core/config.mk
|
||||||
|
index f2e595ff..d6d036a9 100644
|
||||||
|
--- a/build/core/config.mk
|
||||||
|
+++ b/build/core/config.mk
|
||||||
|
@@ -20,5 +20,10 @@ FRAMEWORK_LINEAGE_PLATFORM_API_FILE := $(TOPDIR)lineage-sdk/api/lineage_current.
|
||||||
|
FRAMEWORK_LINEAGE_PLATFORM_REMOVED_API_FILE := $(TOPDIR)lineage-sdk/api/lineage_removed.txt
|
||||||
|
FRAMEWORK_LINEAGE_API_NEEDS_UPDATE_TEXT := $(TOPDIR)vendor/lineage/build/core/apicheck_msg_current.txt
|
||||||
|
|
||||||
|
+# We modify several neverallows, so let the build proceed
|
||||||
|
+ifneq ($(TARGET_BUILD_VARIANT),user)
|
||||||
|
+SELINUX_IGNORE_NEVERALLOWS := true
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
# Rules for QCOM targets
|
||||||
|
include $(TOPDIR)vendor/lineage/build/core/qcom_target.mk
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,75 @@
|
|||||||
|
From faff60c8814e2d31519d86e92faf08761a1d1de1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Wed, 8 Dec 2021 07:04:53 +0000
|
||||||
|
Subject: [PATCH] Remove init.vndk-nodef.rc
|
||||||
|
|
||||||
|
This partially reverts "Deprecate VNDK-lite support from Legacy GSI".
|
||||||
|
|
||||||
|
Paired with https://github.com/LineageOS/android_system_core/commit/0b265e35ddf42638fa807f5349a10c40e3d46446, it kicks permissive devices into bootloader.
|
||||||
|
Given that GSI+permissive won't ever be a Lineage official scenario, revert this only on our side.
|
||||||
|
Thanks @Kethen for the insight!
|
||||||
|
|
||||||
|
Change-Id: I7c14fe5229e953f620bb225fa5c981752d0ac5f9
|
||||||
|
---
|
||||||
|
target/product/gsi/Android.mk | 13 -------------
|
||||||
|
target/product/gsi/init.gsi.rc | 2 --
|
||||||
|
target/product/gsi/init.vndk-nodef.rc | 3 ---
|
||||||
|
target/product/gsi_release.mk | 1 -
|
||||||
|
4 files changed, 19 deletions(-)
|
||||||
|
delete mode 100644 target/product/gsi/init.vndk-nodef.rc
|
||||||
|
|
||||||
|
diff --git a/target/product/gsi/Android.mk b/target/product/gsi/Android.mk
|
||||||
|
index 85e551d3f..c1f37e07f 100644
|
||||||
|
--- a/target/product/gsi/Android.mk
|
||||||
|
+++ b/target/product/gsi/Android.mk
|
||||||
|
@@ -247,16 +247,3 @@ LOCAL_SYSTEM_EXT_MODULE := true
|
||||||
|
LOCAL_MODULE_RELATIVE_PATH := init
|
||||||
|
|
||||||
|
include $(BUILD_PREBUILT)
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-include $(CLEAR_VARS)
|
||||||
|
-LOCAL_MODULE := init.vndk-nodef.rc
|
||||||
|
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||||
|
-LOCAL_LICENSE_CONDITIONS := notice
|
||||||
|
-LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
|
||||||
|
-LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
||||||
|
-LOCAL_MODULE_CLASS := ETC
|
||||||
|
-LOCAL_SYSTEM_EXT_MODULE := true
|
||||||
|
-LOCAL_MODULE_RELATIVE_PATH := gsi
|
||||||
|
-
|
||||||
|
-include $(BUILD_PREBUILT)
|
||||||
|
diff --git a/target/product/gsi/init.gsi.rc b/target/product/gsi/init.gsi.rc
|
||||||
|
index 69c8e467b..c6faba78d 100644
|
||||||
|
--- a/target/product/gsi/init.gsi.rc
|
||||||
|
+++ b/target/product/gsi/init.gsi.rc
|
||||||
|
@@ -1,5 +1,3 @@
|
||||||
|
#
|
||||||
|
# Android init script for GSI required initialization
|
||||||
|
#
|
||||||
|
-
|
||||||
|
-import /system/system_ext/etc/gsi/init.vndk-${ro.vndk.version:-nodef}.rc
|
||||||
|
diff --git a/target/product/gsi/init.vndk-nodef.rc b/target/product/gsi/init.vndk-nodef.rc
|
||||||
|
deleted file mode 100644
|
||||||
|
index 1b141a05e..000000000
|
||||||
|
--- a/target/product/gsi/init.vndk-nodef.rc
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,3 +0,0 @@
|
||||||
|
-on early-init
|
||||||
|
- # Reboot if BOARD_VNDK_VERSION is not defined
|
||||||
|
- exec - root -- /system/bin/reboot bootloader
|
||||||
|
diff --git a/target/product/gsi_release.mk b/target/product/gsi_release.mk
|
||||||
|
index 74501cd1f..575e90b14 100644
|
||||||
|
--- a/target/product/gsi_release.mk
|
||||||
|
+++ b/target/product/gsi_release.mk
|
||||||
|
@@ -60,7 +60,6 @@ PRODUCT_PACKAGES += com.android.apex.cts.shim.v1_with_prebuilts.flattened
|
||||||
|
PRODUCT_PACKAGES += \
|
||||||
|
gsi_skip_mount.cfg \
|
||||||
|
init.gsi.rc \
|
||||||
|
- init.vndk-nodef.rc \
|
||||||
|
|
||||||
|
# Support additional VNDK snapshots
|
||||||
|
PRODUCT_EXTRA_VNDK_VERSIONS := \
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
192
patches_treble/device_phh_treble/0001-treble-Lineage-ify.patch
Normal file
192
patches_treble/device_phh_treble/0001-treble-Lineage-ify.patch
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
From 33bd59e348d95f59265fad3abb72e27038f5222f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 8 Aug 2021 01:43:40 +0000
|
||||||
|
Subject: [PATCH 1/6] treble: Lineage-ify
|
||||||
|
|
||||||
|
Squash of:
|
||||||
|
- Proper target names
|
||||||
|
- Remove fsck SELinux labels
|
||||||
|
- treble: Add overlay-lineage
|
||||||
|
- treble: Don't specify config_wallpaperCropperPackage
|
||||||
|
- treble: Don't handle apns-conf
|
||||||
|
|
||||||
|
Change-Id: I25eee7a3804f335430a447ae1424402d7e37851b
|
||||||
|
---
|
||||||
|
base-pre.mk | 3 -
|
||||||
|
base.mk | 16 ++--
|
||||||
|
generate.sh | 4 +-
|
||||||
|
.../lineage/res/res/values/config.xml | 81 +++++++++++++++++++
|
||||||
|
.../base/core/res/res/values/config.xml | 1 -
|
||||||
|
5 files changed, 92 insertions(+), 13 deletions(-)
|
||||||
|
create mode 100644 overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml
|
||||||
|
|
||||||
|
diff --git a/base-pre.mk b/base-pre.mk
|
||||||
|
index 6a317e4..e69de29 100644
|
||||||
|
--- a/base-pre.mk
|
||||||
|
+++ b/base-pre.mk
|
||||||
|
@@ -1,3 +0,0 @@
|
||||||
|
-#Use a more decent APN config
|
||||||
|
-PRODUCT_COPY_FILES += \
|
||||||
|
- device/sample/etc/apns-full-conf.xml:system/etc/apns-conf.xml
|
||||||
|
diff --git a/base.mk b/base.mk
|
||||||
|
index ce2f218..48b2ccb 100644
|
||||||
|
--- a/base.mk
|
||||||
|
+++ b/base.mk
|
||||||
|
@@ -17,12 +17,14 @@ PRODUCT_COPY_FILES += \
|
||||||
|
device/phh/treble/bluetooth/audio/config/sysbta_audio_policy_configuration.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysbta_audio_policy_configuration.xml \
|
||||||
|
device/phh/treble/bluetooth/audio/config/sysbta_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysbta_audio_policy_configuration_7_0.xml
|
||||||
|
|
||||||
|
-#Use a more decent APN config
|
||||||
|
-PRODUCT_COPY_FILES += \
|
||||||
|
- device/sample/etc/apns-full-conf.xml:system/etc/apns-conf.xml
|
||||||
|
-
|
||||||
|
SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS += device/phh/treble/sepolicy
|
||||||
|
-PRODUCT_PACKAGE_OVERLAYS += device/phh/treble/overlay
|
||||||
|
+
|
||||||
|
+PRODUCT_PACKAGE_OVERLAYS += \
|
||||||
|
+ device/phh/treble/overlay \
|
||||||
|
+ device/phh/treble/overlay-lineage
|
||||||
|
+
|
||||||
|
+PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS += \
|
||||||
|
+ device/phh/treble/overlay-lineage/lineage-sdk
|
||||||
|
|
||||||
|
$(call inherit-product, vendor/hardware_overlay/overlay.mk)
|
||||||
|
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
|
||||||
|
@@ -39,11 +41,11 @@ PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
|
||||||
|
ro.build.version.security_patch=$(PLATFORM_SECURITY_PATCH) \
|
||||||
|
ro.adb.secure=0 \
|
||||||
|
ro.logd.auditd=true
|
||||||
|
-
|
||||||
|
+
|
||||||
|
#Huawei HiSuite (also other OEM custom programs I guess) it's of no use in AOSP builds
|
||||||
|
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
|
||||||
|
persist.sys.usb.config=adb \
|
||||||
|
- ro.cust.cdrom=/dev/null
|
||||||
|
+ ro.cust.cdrom=/dev/null
|
||||||
|
|
||||||
|
#VNDK config files
|
||||||
|
PRODUCT_COPY_FILES += \
|
||||||
|
diff --git a/generate.sh b/generate.sh
|
||||||
|
index fac8208..2160786 100644
|
||||||
|
--- a/generate.sh
|
||||||
|
+++ b/generate.sh
|
||||||
|
@@ -54,7 +54,7 @@ for part in a ab;do
|
||||||
|
su_suffix='N'
|
||||||
|
if [ "$su" == "yes" ];then
|
||||||
|
su_suffix='S'
|
||||||
|
- extra_packages+=' phh-su me.phh.superuser'
|
||||||
|
+ extra_packages+=' phh-su me.phh.superuser su'
|
||||||
|
fi
|
||||||
|
|
||||||
|
part_suffix='a'
|
||||||
|
@@ -64,7 +64,7 @@ for part in a ab;do
|
||||||
|
optional_base='$(call inherit-product, device/phh/treble/base-sas.mk)'
|
||||||
|
fi
|
||||||
|
|
||||||
|
- target="treble_${arch}_${part_suffix}${apps_suffix}${su_suffix}"
|
||||||
|
+ target="lineage_${arch}_${part_suffix}${apps_suffix}${su_suffix}"
|
||||||
|
|
||||||
|
baseArch="$arch"
|
||||||
|
if [ "$arch" = "a64" ];then
|
||||||
|
diff --git a/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml b/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..8df673a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml
|
||||||
|
@@ -0,0 +1,81 @@
|
||||||
|
+<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
+<!--
|
||||||
|
+ Copyright (C) 2015-2016 The CyanogenMod Project
|
||||||
|
+ 2017-2018 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
|
||||||
|
+ 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.
|
||||||
|
+ See the License for the specific language governing permissions and
|
||||||
|
+ limitations under the License.
|
||||||
|
+-->
|
||||||
|
+<resources>
|
||||||
|
+ <!-- Whether device has screen with higher aspect ratio -->
|
||||||
|
+ <bool name="config_haveHigherAspectRatioScreen">true</bool>
|
||||||
|
+
|
||||||
|
+ <!-- All the capabilities of the LEDs on this device, stored as a bit field.
|
||||||
|
+ This integer should equal the sum of the corresponding value for each
|
||||||
|
+ of the following capabilities present:
|
||||||
|
+ // Device has a color adjustable battery light.
|
||||||
|
+ LIGHTS_RGB_NOTIFICATION_LED = 1
|
||||||
|
+ // Device has a color adjustable notification light.
|
||||||
|
+ LIGHTS_RGB_BATTERY_LED = 2
|
||||||
|
+ LIGHTS_MULTIPLE_NOTIFICATION_LED = 4 (deprecated)
|
||||||
|
+ // The notification light has adjustable pulsing capability.
|
||||||
|
+ LIGHTS_PULSATING_LED = 8
|
||||||
|
+ // Device has a multi-segment battery light that is able to
|
||||||
|
+ // use the light brightness value to determine how many
|
||||||
|
+ // segments to show (in order to represent battery level).
|
||||||
|
+ LIGHTS_SEGMENTED_BATTERY_LED = 16
|
||||||
|
+ // The notification light supports HAL adjustable brightness
|
||||||
|
+ // via the alpha channel.
|
||||||
|
+ // Note: if a device notification light supports LIGHTS_RGB_NOTIFICATION_LED
|
||||||
|
+ // then HAL support is not necessary for brightness control. In this case,
|
||||||
|
+ // brightness support will be provided by lineage-sdk through the scaling of
|
||||||
|
+ // RGB color values.
|
||||||
|
+ LIGHTS_ADJUSTABLE_NOTIFICATION_LED_BRIGHTNESS = 32
|
||||||
|
+ // Device has a battery light.
|
||||||
|
+ LIGHTS_BATTERY_LED = 64
|
||||||
|
+ // The battery light supports HAL adjustable brightness via
|
||||||
|
+ // the alpha channel.
|
||||||
|
+ // Note: if a device battery light supports LIGHTS_RGB_BATTERY_LED then HAL
|
||||||
|
+ // support is not necessary for brightness control. In this case,
|
||||||
|
+ // brightness support will be provided by lineage-sdk through the scaling of
|
||||||
|
+ // RGB color values.
|
||||||
|
+ LIGHTS_ADJUSTABLE_BATTERY_LED_BRIGHTNESS = 128
|
||||||
|
+ For example, a device with notification and battery lights that supports
|
||||||
|
+ pulsating and RGB control would set this config to 75. -->
|
||||||
|
+ <integer name="config_deviceLightCapabilities">255</integer>
|
||||||
|
+
|
||||||
|
+ <!-- Hardware keys present on the device, stored as a bit field.
|
||||||
|
+ This integer should equal the sum of the corresponding value for each
|
||||||
|
+ of the following keys present:
|
||||||
|
+ 1 - Home
|
||||||
|
+ 2 - Back
|
||||||
|
+ 4 - Menu
|
||||||
|
+ 8 - Assistant (search)
|
||||||
|
+ 16 - App switch
|
||||||
|
+ 32 - Camera
|
||||||
|
+ 64 - Volume rocker
|
||||||
|
+ For example, a device with Home, Back and Menu keys would set this
|
||||||
|
+ config to 7. -->
|
||||||
|
+ <integer name="config_deviceHardwareKeys">127</integer>
|
||||||
|
+
|
||||||
|
+ <!-- Hardware keys present on the device with the ability to wake, stored as a bit field.
|
||||||
|
+ This integer should equal the sum of the corresponding value for each
|
||||||
|
+ of the following keys present:
|
||||||
|
+ 1 - Home
|
||||||
|
+ 2 - Back
|
||||||
|
+ 4 - Menu
|
||||||
|
+ 8 - Assistant (search)
|
||||||
|
+ 16 - App switch
|
||||||
|
+ 32 - Camera
|
||||||
|
+ 64 - Volume rocker
|
||||||
|
+ For example, a device with Home, Back and Menu keys would set this
|
||||||
|
+ config to 7. -->
|
||||||
|
+ <integer name="config_deviceHardwareWakeKeys">127</integer>
|
||||||
|
+</resources>
|
||||||
|
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
|
||||||
|
index 0bc3350..045f4b3 100644
|
||||||
|
--- a/overlay/frameworks/base/core/res/res/values/config.xml
|
||||||
|
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
|
||||||
|
@@ -22,7 +22,6 @@
|
||||||
|
<string name="config_icon_mask" translatable="false">"M50 0C77.6 0 100 22.4 100 50C100 77.6 77.6 100 50 100C22.4 100 0 77.6 0 50C0 22.4 22.4 0 50 0Z"</string>
|
||||||
|
<bool name="config_useRoundIcon">true</bool>
|
||||||
|
|
||||||
|
- <string name="config_wallpaperCropperPackage">com.android.wallpaperpicker</string>
|
||||||
|
<bool name="config_unplugTurnsOnScreen">true</bool>
|
||||||
|
<integer name="config_multiuserMaximumUsers">5</integer>
|
||||||
|
<bool name="config_enableMultiUserUI">true</bool>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
From 1d807ba01f00a2b2be96f3e0b06c31f0b68852aa Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 8 Aug 2021 09:29:32 +0000
|
||||||
|
Subject: [PATCH 2/6] treble: Set BOARD_EXT4_SHARE_DUP_BLOCKS explicitly
|
||||||
|
|
||||||
|
Change-Id: I725443154fabde548d2e6c1b072d34c27596c421
|
||||||
|
---
|
||||||
|
board-base.mk | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/board-base.mk b/board-base.mk
|
||||||
|
index 2cb5dbc..e493d1c 100644
|
||||||
|
--- a/board-base.mk
|
||||||
|
+++ b/board-base.mk
|
||||||
|
@@ -10,3 +10,5 @@ BOARD_ROOT_EXTRA_FOLDERS += bt_firmware sec_storage efs persist
|
||||||
|
BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
|
||||||
|
|
||||||
|
BOARD_ROOT_EXTRA_SYMLINKS := $(filter-out $(BOARD_ROOT_EXTRA_SYMLINKS),/mnt/vendor/persist:/persist)
|
||||||
|
+
|
||||||
|
+BOARD_EXT4_SHARE_DUP_BLOCKS := true
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,25 @@
|
|||||||
|
From a5d17b7fb89bc838b39e642952e897f3ee042e1a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Wed, 20 Oct 2021 11:30:25 +0000
|
||||||
|
Subject: [PATCH 3/6] treble: Set TARGET_NO_KERNEL_OVERRIDE
|
||||||
|
|
||||||
|
Taken from Lineage generic targets - skips building kernel cleanly
|
||||||
|
|
||||||
|
Change-Id: Id71d3a3aed56fd4e815a64ef4191b125fc5026ce
|
||||||
|
---
|
||||||
|
board-base.mk | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/board-base.mk b/board-base.mk
|
||||||
|
index e493d1c..9d1d45e 100644
|
||||||
|
--- a/board-base.mk
|
||||||
|
+++ b/board-base.mk
|
||||||
|
@@ -12,3 +12,5 @@ BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
|
||||||
|
BOARD_ROOT_EXTRA_SYMLINKS := $(filter-out $(BOARD_ROOT_EXTRA_SYMLINKS),/mnt/vendor/persist:/persist)
|
||||||
|
|
||||||
|
BOARD_EXT4_SHARE_DUP_BLOCKS := true
|
||||||
|
+
|
||||||
|
+TARGET_NO_KERNEL_OVERRIDE := true
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,40 @@
|
|||||||
|
From bd8cc570c61789a9df881bd60f53d03bd73d974d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Tue, 11 Oct 2022 11:29:02 +0000
|
||||||
|
Subject: [PATCH 4/6] treble: Enable call recording
|
||||||
|
|
||||||
|
Change-Id: I57ca3604363547419a566b37b5151b6b30c46d28
|
||||||
|
---
|
||||||
|
.../dialer/callrecord/res/values/config.xml | 20 +++++++++++++++++++
|
||||||
|
1 file changed, 20 insertions(+)
|
||||||
|
create mode 100644 overlay-lineage/packages/apps/Dialer/java/com/android/dialer/callrecord/res/values/config.xml
|
||||||
|
|
||||||
|
diff --git a/overlay-lineage/packages/apps/Dialer/java/com/android/dialer/callrecord/res/values/config.xml b/overlay-lineage/packages/apps/Dialer/java/com/android/dialer/callrecord/res/values/config.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..4cacde5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/overlay-lineage/packages/apps/Dialer/java/com/android/dialer/callrecord/res/values/config.xml
|
||||||
|
@@ -0,0 +1,20 @@
|
||||||
|
+<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
+<!--
|
||||||
|
+ Copyright (C) 2021 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
|
||||||
|
+
|
||||||
|
+ 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.
|
||||||
|
+ See the License for the specific language governing permissions and
|
||||||
|
+ limitations under the License.
|
||||||
|
+-->
|
||||||
|
+<resources>
|
||||||
|
+ <bool name="call_recording_enabled">true</bool>
|
||||||
|
+ <integer name="call_recording_audio_source">4</integer>
|
||||||
|
+</resources>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From efd5867e8b259b885d3dab87704e038f71eb6d86 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 5 Nov 2022 23:44:33 +0000
|
||||||
|
Subject: [PATCH 5/6] treble: Integrally secure *N builds
|
||||||
|
|
||||||
|
Change-Id: I22b5f746cb88a5fa4059595a8daa693d9adca979
|
||||||
|
---
|
||||||
|
generate.sh | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/generate.sh b/generate.sh
|
||||||
|
index 2160786..f64ea84 100644
|
||||||
|
--- a/generate.sh
|
||||||
|
+++ b/generate.sh
|
||||||
|
@@ -23,6 +23,7 @@ for part in a ab;do
|
||||||
|
apps_name=""
|
||||||
|
extra_packages=""
|
||||||
|
vndk="vndk.mk"
|
||||||
|
+ secure=""
|
||||||
|
optional_base=""
|
||||||
|
if [ "$apps" == "gapps" ];then
|
||||||
|
apps_suffix="g"
|
||||||
|
@@ -55,6 +56,8 @@ for part in a ab;do
|
||||||
|
if [ "$su" == "yes" ];then
|
||||||
|
su_suffix='S'
|
||||||
|
extra_packages+=' phh-su me.phh.superuser su'
|
||||||
|
+ else
|
||||||
|
+ secure='PRODUCT_COPY_FILES += device/phh/treble/empty:system/phh/secure'
|
||||||
|
fi
|
||||||
|
|
||||||
|
part_suffix='a'
|
||||||
|
@@ -96,6 +99,8 @@ PRODUCT_CHARACTERISTICS := device
|
||||||
|
|
||||||
|
PRODUCT_PACKAGES += $extra_packages
|
||||||
|
|
||||||
|
+$secure
|
||||||
|
+
|
||||||
|
EOF
|
||||||
|
echo -e '\t$(LOCAL_DIR)/'$target.mk '\' >> AndroidProducts.mk
|
||||||
|
done
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 667aa0b0c11f18bb8b0f5aeda31e186c0a1fc60d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sat, 5 Nov 2022 23:49:11 +0000
|
||||||
|
Subject: [PATCH 6/6] treble: Switch to MindTheGapps
|
||||||
|
|
||||||
|
Change-Id: I1b80d4c5176cbf4af21d147c71b0abce6027c7c7
|
||||||
|
---
|
||||||
|
generate.sh | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/generate.sh b/generate.sh
|
||||||
|
index f64ea84..b0d6d41 100644
|
||||||
|
--- a/generate.sh
|
||||||
|
+++ b/generate.sh
|
||||||
|
@@ -27,7 +27,7 @@ for part in a ab;do
|
||||||
|
optional_base=""
|
||||||
|
if [ "$apps" == "gapps" ];then
|
||||||
|
apps_suffix="g"
|
||||||
|
- apps_script='$(call inherit-product, device/phh/treble/gapps.mk)'
|
||||||
|
+ apps_script='$(call inherit-product, vendor/gapps/arm64/arm64-vendor.mk)'
|
||||||
|
apps_name="with GApps"
|
||||||
|
fi
|
||||||
|
if [ "$apps" == "gapps-go" ];then
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,87 @@
|
|||||||
|
From c4d992edc94f3db949b6146428c978bf8036f345 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Victor Bo <bvoid@yandex.ru>
|
||||||
|
Date: Wed, 3 Mar 2021 06:31:17 -0500
|
||||||
|
Subject: [PATCH 2/4] Restore /sbin for Magisk compatibility
|
||||||
|
|
||||||
|
Squash of:
|
||||||
|
- Revert "Do not create /sbin"
|
||||||
|
- Revert "Remove sbin from fs_config.cpp"
|
||||||
|
- add /sbin to the PATH
|
||||||
|
|
||||||
|
Change-Id: I1224c9b64ce8eb14f7d15c8441c0633a7e6a20de
|
||||||
|
---
|
||||||
|
CleanSpec.mk | 2 --
|
||||||
|
libcutils/fs_config.cpp | 3 +++
|
||||||
|
rootdir/Android.mk | 2 +-
|
||||||
|
rootdir/init.environ.rc.in | 1 +
|
||||||
|
4 files changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CleanSpec.mk b/CleanSpec.mk
|
||||||
|
index 0a534a2bd..81150a0fa 100644
|
||||||
|
--- a/CleanSpec.mk
|
||||||
|
+++ b/CleanSpec.mk
|
||||||
|
@@ -80,8 +80,6 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/vndksp.libraries.txt)
|
||||||
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/)
|
||||||
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/sbin/charger)
|
||||||
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/sbin/charger)
|
||||||
|
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/sbin)
|
||||||
|
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/sbin)
|
||||||
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product_services)
|
||||||
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product_services.img)
|
||||||
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product_services)
|
||||||
|
diff --git a/libcutils/fs_config.cpp b/libcutils/fs_config.cpp
|
||||||
|
index a703993f6..184c7da0f 100644
|
||||||
|
--- a/libcutils/fs_config.cpp
|
||||||
|
+++ b/libcutils/fs_config.cpp
|
||||||
|
@@ -80,6 +80,7 @@ static const struct fs_path_config android_dirs[] = {
|
||||||
|
{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data" },
|
||||||
|
{ 00755, AID_ROOT, AID_SYSTEM, 0, "mnt" },
|
||||||
|
{ 00751, AID_ROOT, AID_SHELL, 0, "product/bin" },
|
||||||
|
+ { 00750, AID_ROOT, AID_SHELL, 0, "sbin" },
|
||||||
|
{ 00751, AID_ROOT, AID_SHELL, 0, "product/apex/*/bin" },
|
||||||
|
{ 00777, AID_ROOT, AID_ROOT, 0, "sdcard" },
|
||||||
|
{ 00751, AID_ROOT, AID_SDCARD_R, 0, "storage" },
|
||||||
|
@@ -166,6 +167,7 @@ static const struct fs_path_config android_files[] = {
|
||||||
|
{ 00600, AID_ROOT, AID_ROOT, 0, "system_ext/build.prop" },
|
||||||
|
{ 00444, AID_ROOT, AID_ROOT, 0, system_ext_conf_dir + 1 },
|
||||||
|
{ 00444, AID_ROOT, AID_ROOT, 0, system_ext_conf_file + 1 },
|
||||||
|
+ { 00750, AID_ROOT, AID_SHELL, 0, "sbin/fs_mgr" },
|
||||||
|
{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/crash_dump32" },
|
||||||
|
{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/crash_dump64" },
|
||||||
|
{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/debuggerd" },
|
||||||
|
@@ -218,6 +220,7 @@ static const struct fs_path_config android_files[] = {
|
||||||
|
{ 00750, AID_ROOT, AID_SHELL, 0, "init*" },
|
||||||
|
{ 00755, AID_ROOT, AID_SHELL, 0, "odm/bin/*" },
|
||||||
|
{ 00755, AID_ROOT, AID_SHELL, 0, "product/bin/*" },
|
||||||
|
+ { 00750, AID_ROOT, AID_SHELL, 0, "sbin/*" },
|
||||||
|
{ 00755, AID_ROOT, AID_SHELL, 0, "product/apex/*bin/*" },
|
||||||
|
{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/*" },
|
||||||
|
{ 00755, AID_ROOT, AID_SHELL, 0, "system/xbin/*" },
|
||||||
|
diff --git a/rootdir/Android.mk b/rootdir/Android.mk
|
||||||
|
index fe23b6206..81bd46342 100644
|
||||||
|
--- a/rootdir/Android.mk
|
||||||
|
+++ b/rootdir/Android.mk
|
||||||
|
@@ -91,7 +91,7 @@ endif
|
||||||
|
#
|
||||||
|
# create some directories (some are mount points) and symlinks
|
||||||
|
LOCAL_POST_INSTALL_CMD := mkdir -p $(addprefix $(TARGET_ROOT_OUT)/, \
|
||||||
|
- dev proc sys system data data_mirror odm oem acct config storage mnt apex debug_ramdisk \
|
||||||
|
+ sbin dev proc sys system data data_mirror odm oem acct config storage mnt apex debug_ramdisk \
|
||||||
|
linkerconfig second_stage_resources postinstall $(BOARD_ROOT_EXTRA_FOLDERS)); \
|
||||||
|
ln -sf /system/bin $(TARGET_ROOT_OUT)/bin; \
|
||||||
|
ln -sf /system/etc $(TARGET_ROOT_OUT)/etc; \
|
||||||
|
diff --git a/rootdir/init.environ.rc.in b/rootdir/init.environ.rc.in
|
||||||
|
index bf6e986c4..090fa5a78 100644
|
||||||
|
--- a/rootdir/init.environ.rc.in
|
||||||
|
+++ b/rootdir/init.environ.rc.in
|
||||||
|
@@ -10,6 +10,7 @@ on early-init
|
||||||
|
export ANDROID_TZDATA_ROOT /apex/com.android.tzdata
|
||||||
|
export EXTERNAL_STORAGE /sdcard
|
||||||
|
export ASEC_MOUNTPOINT /mnt/asec
|
||||||
|
+ export PATH /sbin:/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin
|
||||||
|
%EXPORT_GLOBAL_ASAN_OPTIONS%
|
||||||
|
%EXPORT_GLOBAL_GCOV_OPTIONS%
|
||||||
|
%EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS%
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,45 @@
|
|||||||
|
From 4ce07285aaa23a2dfe6d6bd19fe21fea8f3d5271 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AndyCGYan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 3 Mar 2019 14:07:33 +0800
|
||||||
|
Subject: [PATCH 1/2] build_soong: Disable generated_kernel_headers
|
||||||
|
|
||||||
|
...but done in a way so that there's no need to remove generated_kernel_headers from individual projects - thanks @ExpressLuke
|
||||||
|
|
||||||
|
Change-Id: I630857cec208f1830e776bf5031d7bb9bc4435d0
|
||||||
|
---
|
||||||
|
build/soong/Android.bp | 12 ------------
|
||||||
|
1 file changed, 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/build/soong/Android.bp b/build/soong/Android.bp
|
||||||
|
index 870d3b73..7dfcb27b 100644
|
||||||
|
--- a/build/soong/Android.bp
|
||||||
|
+++ b/build/soong/Android.bp
|
||||||
|
@@ -20,9 +20,6 @@ bootstrap_go_package {
|
||||||
|
lineage_generator {
|
||||||
|
name: "generated_kernel_includes",
|
||||||
|
|
||||||
|
- // The headers make command
|
||||||
|
- cmd: "$(PATH_OVERRIDE_SOONG) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(TARGET_KERNEL_SOURCE) O=$(KERNEL_BUILD_OUT_PREFIX)$(genDir) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) headers_install",
|
||||||
|
-
|
||||||
|
// Directories that can be imported by a cc_* module generated_headers property
|
||||||
|
export_include_dirs: [
|
||||||
|
"usr/audio/include/uapi",
|
||||||
|
@@ -31,15 +28,6 @@ lineage_generator {
|
||||||
|
"usr/include/audio/include/uapi",
|
||||||
|
"usr/techpack/audio/include",
|
||||||
|
],
|
||||||
|
-
|
||||||
|
- // Sources for dependency tracking
|
||||||
|
- dep_root: "$(TARGET_KERNEL_SOURCE)",
|
||||||
|
- dep_files: [
|
||||||
|
- "Makefile",
|
||||||
|
- "include/**/*",
|
||||||
|
- "arch/$(KERNEL_ARCH)/include/**/*",
|
||||||
|
- "techpack/audio/include/**/*",
|
||||||
|
- ],
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_library_headers {
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From 4c6bf1998d42e14a1c3390331c0083b4d4461fd8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Tue, 19 Oct 2021 15:48:43 +0000
|
||||||
|
Subject: [PATCH 2/2] vendor_lineage: Disable ADB authentication
|
||||||
|
|
||||||
|
Change-Id: I4370583ecab1c88ef6f42e29d3eaa52c24d13f09
|
||||||
|
---
|
||||||
|
config/common.mk | 5 -----
|
||||||
|
1 file changed, 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config/common.mk b/config/common.mk
|
||||||
|
index bb84f0cd..a6703855 100644
|
||||||
|
--- a/config/common.mk
|
||||||
|
+++ b/config/common.mk
|
||||||
|
@@ -13,16 +13,11 @@ PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
|
||||||
|
ro.com.google.clientidbase=$(PRODUCT_GMS_CLIENTID_BASE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
-ifeq ($(TARGET_BUILD_VARIANT),eng)
|
||||||
|
# Disable ADB authentication
|
||||||
|
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += ro.adb.secure=0
|
||||||
|
-else
|
||||||
|
-# Enable ADB authentication
|
||||||
|
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += ro.adb.secure=1
|
||||||
|
|
||||||
|
# Disable extra StrictMode features on all non-engineering builds
|
||||||
|
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += persist.sys.strictmode.disable=true
|
||||||
|
-endif
|
||||||
|
|
||||||
|
# Backup Tool
|
||||||
|
PRODUCT_COPY_FILES += \
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,431 @@
|
|||||||
|
From 363c57e1fc2566b3818315ed982ea3a5e976331a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Tue, 22 Jun 2021 13:38:31 +0000
|
||||||
|
Subject: [PATCH 1/3] Add Meizu 18 vibrator support
|
||||||
|
|
||||||
|
Thanks to:
|
||||||
|
- @phhusson for guidance
|
||||||
|
- Google for marlin HAL as reference in implementing 1.0
|
||||||
|
- @xingrz for Meizu 16th HAL as reference in implementing 1.3
|
||||||
|
|
||||||
|
Change-Id: Iecf12cd814e8773abfd78a19f98e31125a73761a
|
||||||
|
---
|
||||||
|
base.mk | 4 +
|
||||||
|
meizu-vibrator/Android.bp | 32 ++++
|
||||||
|
meizu-vibrator/Vibrator.cpp | 140 ++++++++++++++++++
|
||||||
|
meizu-vibrator/Vibrator.h | 60 ++++++++
|
||||||
|
...oid.hardware.vibrator@1.3-service.meizu.rc | 5 +
|
||||||
|
...id.hardware.vibrator@1.3-service.meizu.xml | 11 ++
|
||||||
|
meizu-vibrator/service.cpp | 72 +++++++++
|
||||||
|
sepolicy/file_contexts | 1 +
|
||||||
|
sepolicy/hal.te | 11 ++
|
||||||
|
9 files changed, 336 insertions(+)
|
||||||
|
create mode 100644 meizu-vibrator/Android.bp
|
||||||
|
create mode 100644 meizu-vibrator/Vibrator.cpp
|
||||||
|
create mode 100644 meizu-vibrator/Vibrator.h
|
||||||
|
create mode 100644 meizu-vibrator/android.hardware.vibrator@1.3-service.meizu.rc
|
||||||
|
create mode 100644 meizu-vibrator/android.hardware.vibrator@1.3-service.meizu.xml
|
||||||
|
create mode 100644 meizu-vibrator/service.cpp
|
||||||
|
|
||||||
|
diff --git a/base.mk b/base.mk
|
||||||
|
index 3d59ba6..82cae16 100644
|
||||||
|
--- a/base.mk
|
||||||
|
+++ b/base.mk
|
||||||
|
@@ -250,3 +250,7 @@ include build/make/target/product/gsi_release.mk
|
||||||
|
# Protect deskclock from power save
|
||||||
|
PRODUCT_COPY_FILES += \
|
||||||
|
device/phh/treble/files/com.android.deskclock_whitelist.xml:system/etc/sysconfig/com.android.deskclock_whitelist.xml
|
||||||
|
+
|
||||||
|
+# Meizu vibrator
|
||||||
|
+PRODUCT_PACKAGES += \
|
||||||
|
+ android.hardware.vibrator@1.3-service.meizu
|
||||||
|
diff --git a/meizu-vibrator/Android.bp b/meizu-vibrator/Android.bp
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..76ad034
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/meizu-vibrator/Android.bp
|
||||||
|
@@ -0,0 +1,32 @@
|
||||||
|
+//
|
||||||
|
+// Copyright (C) 2017 The Android Open Source 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
|
||||||
|
+//
|
||||||
|
+// 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.
|
||||||
|
+// See the License for the specific language governing permissions and
|
||||||
|
+// limitations under the License.
|
||||||
|
+cc_binary {
|
||||||
|
+ name: "android.hardware.vibrator@1.3-service.meizu",
|
||||||
|
+ relative_install_path: "hw",
|
||||||
|
+ vintf_fragments: ["android.hardware.vibrator@1.3-service.meizu.xml"],
|
||||||
|
+ init_rc: ["android.hardware.vibrator@1.3-service.meizu.rc"],
|
||||||
|
+ srcs: ["service.cpp", "Vibrator.cpp"],
|
||||||
|
+ cflags: ["-Wall", "-Werror"],
|
||||||
|
+ shared_libs: [
|
||||||
|
+ "libhidlbase",
|
||||||
|
+ "liblog",
|
||||||
|
+ "libutils",
|
||||||
|
+ "libhardware",
|
||||||
|
+ "android.hardware.vibrator@1.0",
|
||||||
|
+ "android.hardware.vibrator@1.1",
|
||||||
|
+ "android.hardware.vibrator@1.2",
|
||||||
|
+ "android.hardware.vibrator@1.3",
|
||||||
|
+ ],
|
||||||
|
+}
|
||||||
|
diff --git a/meizu-vibrator/Vibrator.cpp b/meizu-vibrator/Vibrator.cpp
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..8f12987
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/meizu-vibrator/Vibrator.cpp
|
||||||
|
@@ -0,0 +1,140 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2017 The Android Open Source 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
|
||||||
|
+ *
|
||||||
|
+ * 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.
|
||||||
|
+ * See the License for the specific language governing permissions and
|
||||||
|
+ * limitations under the License.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#define LOG_TAG "VibratorService"
|
||||||
|
+
|
||||||
|
+#include <log/log.h>
|
||||||
|
+
|
||||||
|
+#include <hardware/hardware.h>
|
||||||
|
+#include <hardware/vibrator.h>
|
||||||
|
+
|
||||||
|
+#include "Vibrator.h"
|
||||||
|
+
|
||||||
|
+#include <cinttypes>
|
||||||
|
+#include <cmath>
|
||||||
|
+#include <iostream>
|
||||||
|
+#include <fstream>
|
||||||
|
+#include <thread>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+
|
||||||
|
+namespace android {
|
||||||
|
+namespace hardware {
|
||||||
|
+namespace vibrator {
|
||||||
|
+namespace V1_3 {
|
||||||
|
+namespace implementation {
|
||||||
|
+
|
||||||
|
+Vibrator::Vibrator(std::ofstream&& timeoutAndAmplitude, std::ofstream&& waveNumber, std::ofstream&& effectTrigger) :
|
||||||
|
+ mTimeoutAndAmplitude(std::move(timeoutAndAmplitude)),
|
||||||
|
+ mWaveNumber(std::move(waveNumber)),
|
||||||
|
+ mEffectTrigger(std::move(effectTrigger)) {}
|
||||||
|
+
|
||||||
|
+Return<Status> Vibrator::on(uint32_t timeout_ms) {
|
||||||
|
+ // Wave number 12 for vibrations slightly stronger than stock (13)
|
||||||
|
+ mWaveNumber << 12 << std::endl;
|
||||||
|
+ mTimeoutAndAmplitude << timeout_ms << std::endl;
|
||||||
|
+ if (!mTimeoutAndAmplitude) {
|
||||||
|
+ ALOGE("Failed to turn vibrator on (%d): %s", errno, strerror(errno));
|
||||||
|
+ return Status::UNKNOWN_ERROR;
|
||||||
|
+ }
|
||||||
|
+ return Status::OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<Status> Vibrator::off() {
|
||||||
|
+ mTimeoutAndAmplitude << 0 << std::endl;
|
||||||
|
+ if (!mTimeoutAndAmplitude) {
|
||||||
|
+ ALOGE("Failed to turn vibrator off (%d): %s", errno, strerror(errno));
|
||||||
|
+ return Status::UNKNOWN_ERROR;
|
||||||
|
+ }
|
||||||
|
+ return Status::OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<bool> Vibrator::supportsAmplitudeControl() {
|
||||||
|
+ return false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<Status> Vibrator::setAmplitude(uint8_t) {
|
||||||
|
+ return Status::UNSUPPORTED_OPERATION;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<void> Vibrator::perform(V1_0::Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
|
||||||
|
+ return perform<decltype(effect)>(effect, strength, _hidl_cb);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<void> Vibrator::perform_1_1(V1_1::Effect_1_1 effect, EffectStrength strength, perform_cb _hidl_cb) {
|
||||||
|
+ return perform<decltype(effect)>(effect, strength, _hidl_cb);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<void> Vibrator::perform_1_2(V1_2::Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
|
||||||
|
+ return perform<decltype(effect)>(effect, strength, _hidl_cb);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<void> Vibrator::perform_1_3(Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
|
||||||
|
+ return perform<decltype(effect)>(effect, strength, _hidl_cb);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<bool> Vibrator::supportsExternalControl() {
|
||||||
|
+ return false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<Status> Vibrator::setExternalControl(bool) {
|
||||||
|
+ return Status::UNSUPPORTED_OPERATION;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Return<void> Vibrator::perform(Effect effect, EffectStrength, perform_cb _hidl_cb) {
|
||||||
|
+ uint32_t id;
|
||||||
|
+ switch (effect) {
|
||||||
|
+ case Effect::CLICK:
|
||||||
|
+ id = 31008;
|
||||||
|
+ break;
|
||||||
|
+ case Effect::DOUBLE_CLICK:
|
||||||
|
+ id = 31003;
|
||||||
|
+ break;
|
||||||
|
+ case Effect::TICK:
|
||||||
|
+ case Effect::TEXTURE_TICK:
|
||||||
|
+ id = 21000;
|
||||||
|
+ break;
|
||||||
|
+ case Effect::THUD:
|
||||||
|
+ id = 30900;
|
||||||
|
+ break;
|
||||||
|
+ case Effect::POP:
|
||||||
|
+ id = 22520;
|
||||||
|
+ break;
|
||||||
|
+ case Effect::HEAVY_CLICK:
|
||||||
|
+ id = 30900;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ _hidl_cb(Status::UNSUPPORTED_OPERATION, 0);
|
||||||
|
+ return Void();
|
||||||
|
+ }
|
||||||
|
+ mEffectTrigger << id << std::endl;
|
||||||
|
+ _hidl_cb(Status::OK, 200);
|
||||||
|
+ return Void();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+template <typename T> Return<void> Vibrator::perform(T effect, EffectStrength strength, perform_cb _hidl_cb) {
|
||||||
|
+ auto validRange = hidl_enum_range<T>();
|
||||||
|
+ if (effect < *validRange.begin() || effect > *std::prev(validRange.end())) {
|
||||||
|
+ _hidl_cb(Status::UNSUPPORTED_OPERATION, 0);
|
||||||
|
+ return Void();
|
||||||
|
+ }
|
||||||
|
+ return perform(static_cast<Effect>(effect), strength, _hidl_cb);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+} // namespace implementation
|
||||||
|
+} // namespace V1_3
|
||||||
|
+} // namespace vibrator
|
||||||
|
+} // namespace hardware
|
||||||
|
+} // namespace android
|
||||||
|
diff --git a/meizu-vibrator/Vibrator.h b/meizu-vibrator/Vibrator.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..df901aa
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/meizu-vibrator/Vibrator.h
|
||||||
|
@@ -0,0 +1,60 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2017 The Android Open Source 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
|
||||||
|
+ *
|
||||||
|
+ * 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.
|
||||||
|
+ * See the License for the specific language governing permissions and
|
||||||
|
+ * limitations under the License.
|
||||||
|
+ */
|
||||||
|
+#ifndef ANDROID_HARDWARE_VIBRATOR_V1_3_VIBRATOR_H
|
||||||
|
+#define ANDROID_HARDWARE_VIBRATOR_V1_3_VIBRATOR_H
|
||||||
|
+
|
||||||
|
+#include <android/hardware/vibrator/1.3/IVibrator.h>
|
||||||
|
+#include <hidl/Status.h>
|
||||||
|
+
|
||||||
|
+#include <fstream>
|
||||||
|
+
|
||||||
|
+namespace android {
|
||||||
|
+namespace hardware {
|
||||||
|
+namespace vibrator {
|
||||||
|
+namespace V1_3 {
|
||||||
|
+namespace implementation {
|
||||||
|
+
|
||||||
|
+using android::hardware::vibrator::V1_0::EffectStrength;
|
||||||
|
+using android::hardware::vibrator::V1_0::Status;
|
||||||
|
+
|
||||||
|
+class Vibrator : public IVibrator {
|
||||||
|
+public:
|
||||||
|
+ Vibrator(std::ofstream&& timeoutAndAmplitude, std::ofstream&& waveNumber, std::ofstream&& effectTrigger);
|
||||||
|
+ Return<Status> on(uint32_t timeoutMs) override;
|
||||||
|
+ Return<Status> off() override;
|
||||||
|
+ Return<bool> supportsAmplitudeControl() override;
|
||||||
|
+ Return<Status> setAmplitude(uint8_t amplitude) override;
|
||||||
|
+ Return<void> perform(V1_0::Effect effect, EffectStrength strength, perform_cb _hidl_cb) override;
|
||||||
|
+ Return<void> perform_1_1(V1_1::Effect_1_1 effect, EffectStrength strength, perform_cb _hidl_cb) override;
|
||||||
|
+ Return<void> perform_1_2(V1_2::Effect effect, EffectStrength strength, perform_cb _hidl_cb) override;
|
||||||
|
+ Return<void> perform_1_3(Effect effect, EffectStrength strength, perform_cb _hidl_cb) override;
|
||||||
|
+ Return<bool> supportsExternalControl() override;
|
||||||
|
+ Return<Status> setExternalControl(bool enabled) override;
|
||||||
|
+
|
||||||
|
+private:
|
||||||
|
+ Return<void> perform(Effect effect, EffectStrength strength, perform_cb _hidl_cb);
|
||||||
|
+ template <typename T> Return<void> perform(T effect, EffectStrength strength, perform_cb _hidl_cb);
|
||||||
|
+ std::ofstream mTimeoutAndAmplitude;
|
||||||
|
+ std::ofstream mWaveNumber;
|
||||||
|
+ std::ofstream mEffectTrigger;
|
||||||
|
+};
|
||||||
|
+} // namespace implementation
|
||||||
|
+} // namespace V1_3
|
||||||
|
+} // namespace vibrator
|
||||||
|
+} // namespace hardware
|
||||||
|
+} // namespace android
|
||||||
|
+
|
||||||
|
+#endif // ANDROID_HARDWARE_VIBRATOR_V1_3_VIBRATOR_H
|
||||||
|
diff --git a/meizu-vibrator/android.hardware.vibrator@1.3-service.meizu.rc b/meizu-vibrator/android.hardware.vibrator@1.3-service.meizu.rc
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..527ff66
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/meizu-vibrator/android.hardware.vibrator@1.3-service.meizu.rc
|
||||||
|
@@ -0,0 +1,5 @@
|
||||||
|
+service vibrator.meizu /system/bin/hw/android.hardware.vibrator@1.3-service.meizu
|
||||||
|
+ class late_start
|
||||||
|
+ user system
|
||||||
|
+ group system
|
||||||
|
+ oneshot
|
||||||
|
diff --git a/meizu-vibrator/android.hardware.vibrator@1.3-service.meizu.xml b/meizu-vibrator/android.hardware.vibrator@1.3-service.meizu.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..d1b836e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/meizu-vibrator/android.hardware.vibrator@1.3-service.meizu.xml
|
||||||
|
@@ -0,0 +1,11 @@
|
||||||
|
+<manifest version="1.0" type="framework">
|
||||||
|
+ <hal format="hidl">
|
||||||
|
+ <name>android.hardware.vibrator</name>
|
||||||
|
+ <transport>hwbinder</transport>
|
||||||
|
+ <version>1.3</version>
|
||||||
|
+ <interface>
|
||||||
|
+ <name>IVibrator</name>
|
||||||
|
+ <instance>default</instance>
|
||||||
|
+ </interface>
|
||||||
|
+ </hal>
|
||||||
|
+</manifest>
|
||||||
|
diff --git a/meizu-vibrator/service.cpp b/meizu-vibrator/service.cpp
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..1405dfb
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/meizu-vibrator/service.cpp
|
||||||
|
@@ -0,0 +1,72 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2017 The Android Open Source 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
|
||||||
|
+ *
|
||||||
|
+ * 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.
|
||||||
|
+ * See the License for the specific language governing permissions and
|
||||||
|
+ * limitations under the License.
|
||||||
|
+ */
|
||||||
|
+#define LOG_TAG "android.hardware.vibrator@1.3-service.meizu"
|
||||||
|
+
|
||||||
|
+#include <android/hardware/vibrator/1.3/IVibrator.h>
|
||||||
|
+#include <hidl/HidlSupport.h>
|
||||||
|
+#include <hidl/HidlTransportSupport.h>
|
||||||
|
+#include <utils/Errors.h>
|
||||||
|
+#include <utils/StrongPointer.h>
|
||||||
|
+
|
||||||
|
+#include "Vibrator.h"
|
||||||
|
+
|
||||||
|
+using android::hardware::configureRpcThreadpool;
|
||||||
|
+using android::hardware::joinRpcThreadpool;
|
||||||
|
+using android::hardware::vibrator::V1_3::IVibrator;
|
||||||
|
+using android::hardware::vibrator::V1_3::implementation::Vibrator;
|
||||||
|
+using namespace android;
|
||||||
|
+
|
||||||
|
+static const char *CONTROL_PATH_TIMEOUT = "/sys/class/timed_output/vibrator/enable";
|
||||||
|
+static const char *PATH_WAVE_NUMBER = "/sys/class/meizu/motor/waveform";
|
||||||
|
+static const char *CONTROL_PATH_EFFECT = "/sys/class/meizu/motor/on_off";
|
||||||
|
+
|
||||||
|
+status_t registerVibratorService() {
|
||||||
|
+ std::ofstream timeoutAndAmplitude{CONTROL_PATH_TIMEOUT};
|
||||||
|
+ if (!timeoutAndAmplitude) {
|
||||||
|
+ int error = errno;
|
||||||
|
+ ALOGE("Failed to open %s (%d): %s", CONTROL_PATH_TIMEOUT, error, strerror(error));
|
||||||
|
+ return -error;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ std::ofstream waveNumber{PATH_WAVE_NUMBER};
|
||||||
|
+ if (!waveNumber) {
|
||||||
|
+ int error = errno;
|
||||||
|
+ ALOGE("Failed to open %s (%d): %s", PATH_WAVE_NUMBER, error, strerror(error));
|
||||||
|
+ return -error;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ std::ofstream effectTrigger{CONTROL_PATH_EFFECT};
|
||||||
|
+ if (!effectTrigger) {
|
||||||
|
+ int error = errno;
|
||||||
|
+ ALOGE("Failed to open %s (%d): %s", CONTROL_PATH_EFFECT, error, strerror(error));
|
||||||
|
+ return -error;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ sp<IVibrator> vibrator = new Vibrator(std::move(timeoutAndAmplitude), std::move(waveNumber), std::move(effectTrigger));
|
||||||
|
+ (void) vibrator->registerAsService(); // suppress unused-result warning
|
||||||
|
+ return OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int main() {
|
||||||
|
+ configureRpcThreadpool(1, true);
|
||||||
|
+ status_t status = registerVibratorService();
|
||||||
|
+
|
||||||
|
+ if (status != OK) {
|
||||||
|
+ return status;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ joinRpcThreadpool();
|
||||||
|
+}
|
||||||
|
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
|
||||||
|
index beb639a..3bc437c 100644
|
||||||
|
--- a/sepolicy/file_contexts
|
||||||
|
+++ b/sepolicy/file_contexts
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
|
||||||
|
/system/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.oppo.compat u:object_r:hal_fingerprint_oppo_compat_exec:s0
|
||||||
|
/system/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.oplus.compat u:object_r:hal_fingerprint_oppo_compat_exec:s0
|
||||||
|
+/system/bin/hw/android.hardware.vibrator@1.3-service.meizu u:object_r:hal_vibrator_default_exec:s0
|
||||||
|
|
||||||
|
/efs u:object_r:efs_file:s0
|
||||||
|
|
||||||
|
diff --git a/sepolicy/hal.te b/sepolicy/hal.te
|
||||||
|
index cb44422..280ae2d 100644
|
||||||
|
--- a/sepolicy/hal.te
|
||||||
|
+++ b/sepolicy/hal.te
|
||||||
|
@@ -8,3 +8,14 @@ init_daemon_domain(hal_fingerprint_oppo_compat)
|
||||||
|
|
||||||
|
type hal_fingerprint_oppo, domain;
|
||||||
|
allow hal_fingerprint_oppo vendor_default_prop:property_service { set };
|
||||||
|
+
|
||||||
|
+type vib_strength_sysfs, fs_type, sysfs_type;
|
||||||
|
+
|
||||||
|
+type hal_vibrator_default, domain;
|
||||||
|
+hal_server_domain(hal_vibrator_default, hal_vibrator)
|
||||||
|
+
|
||||||
|
+type hal_vibrator_default_exec, exec_type, vendor_file_type, file_type;
|
||||||
|
+init_daemon_domain(hal_vibrator_default)
|
||||||
|
+
|
||||||
|
+allow hal_vibrator_default vib_strength_sysfs:dir rw_dir_perms;
|
||||||
|
+allow hal_vibrator_default vib_strength_sysfs:file rw_file_perms;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
From e7a31e6a0a55d45b56de3d6d99aae143bd20a4a2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Thu, 28 Oct 2021 01:51:27 +0000
|
||||||
|
Subject: [PATCH 2/3] Revert "Include sim toolkit app"
|
||||||
|
|
||||||
|
This reverts commit 52d4d731465f37e3e8ccf9d315cfc8195303e51f.
|
||||||
|
|
||||||
|
Change-Id: I1eb7f4bb070eea649b4cea6280299e629d1edb3d
|
||||||
|
---
|
||||||
|
base.mk | 3 ---
|
||||||
|
1 file changed, 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/base.mk b/base.mk
|
||||||
|
index 82cae16..225fc0f 100644
|
||||||
|
--- a/base.mk
|
||||||
|
+++ b/base.mk
|
||||||
|
@@ -171,9 +171,6 @@ PRODUCT_PACKAGES += \
|
||||||
|
xiaomi-motor \
|
||||||
|
oneplus-motor
|
||||||
|
|
||||||
|
-PRODUCT_PACKAGES += \
|
||||||
|
- Stk
|
||||||
|
-
|
||||||
|
PRODUCT_PACKAGES += \
|
||||||
|
resetprop_phh
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
From b4a2306f04fa26d24c6f5b6dd4f66a967c62974f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Sun, 8 Aug 2021 09:31:01 +0000
|
||||||
|
Subject: [PATCH 3/3] Revert "treble: Set BOARD_EXT4_SHARE_DUP_BLOCKS
|
||||||
|
explicitly"
|
||||||
|
|
||||||
|
This reverts commit d7b179f234d76c3acf7a723fc05f07efe9adc84c.
|
||||||
|
|
||||||
|
Change-Id: I2bf95d40d4a096181710765c7d152f63556d27d8
|
||||||
|
---
|
||||||
|
board-base.mk | 2 --
|
||||||
|
1 file changed, 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/board-base.mk b/board-base.mk
|
||||||
|
index 9d1d45e..8cde64f 100644
|
||||||
|
--- a/board-base.mk
|
||||||
|
+++ b/board-base.mk
|
||||||
|
@@ -11,6 +11,4 @@ BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
|
||||||
|
|
||||||
|
BOARD_ROOT_EXTRA_SYMLINKS := $(filter-out $(BOARD_ROOT_EXTRA_SYMLINKS),/mnt/vendor/persist:/persist)
|
||||||
|
|
||||||
|
-BOARD_EXT4_SHARE_DUP_BLOCKS := true
|
||||||
|
-
|
||||||
|
TARGET_NO_KERNEL_OVERRIDE := true
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,48 @@
|
|||||||
|
From cbf15ae92b72c4af571cae5bb584cf55dcc96fa4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||||
|
Date: Fri, 10 Jun 2022 21:33:47 +0800
|
||||||
|
Subject: [PATCH] Revert "Biometrics: Allow disabling of fingerprint cleanups"
|
||||||
|
|
||||||
|
This reverts commit 87f04da03724b26f64b78e628f171e4bc4b20673.
|
||||||
|
|
||||||
|
Change-Id: Iacbb74e392122c5c072251b8153367f7ee3e8aaf
|
||||||
|
---
|
||||||
|
.../sensors/fingerprint/hidl/Fingerprint21.java | 8 --------
|
||||||
|
1 file changed, 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
|
||||||
|
index 72095d9cceb7..2a3f34ae3cd4 100644
|
||||||
|
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
|
||||||
|
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
|
||||||
|
@@ -128,8 +128,6 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||||
|
private final int mSensorId;
|
||||||
|
private final boolean mIsPowerbuttonFps;
|
||||||
|
|
||||||
|
- private boolean mCleanup;
|
||||||
|
-
|
||||||
|
private final class BiometricTaskStackListener extends TaskStackListener {
|
||||||
|
@Override
|
||||||
|
public void onTaskStackChanged() {
|
||||||
|
@@ -351,9 +349,6 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||||
|
mCurrentUserId = UserHandle.USER_NULL;
|
||||||
|
});
|
||||||
|
|
||||||
|
- mCleanup = context.getResources().getBoolean(
|
||||||
|
- org.lineageos.platform.internal.R.bool.config_cleanupUnusedFingerprints);
|
||||||
|
-
|
||||||
|
try {
|
||||||
|
ActivityManager.getService().registerUserSwitchObserver(mUserSwitchObserver, TAG);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
@@ -734,9 +729,6 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||||
|
|
||||||
|
private void scheduleInternalCleanup(int userId,
|
||||||
|
@Nullable ClientMonitorCallback callback) {
|
||||||
|
- if (!mCleanup) {
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
mHandler.post(() -> {
|
||||||
|
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
From 9d5a7fac46a27db0efe27f902933ded495102458 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Wed, 27 Oct 2021 14:39:29 -0400
|
||||||
|
Subject: [PATCH 1/2] Disable vndklite handling
|
||||||
|
|
||||||
|
Change-Id: Ic4474cf80fc4b45a9a2760dd51e2ca29c4d961e2
|
||||||
|
---
|
||||||
|
linker/linker.cpp | 5 -----
|
||||||
|
1 file changed, 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/linker/linker.cpp b/linker/linker.cpp
|
||||||
|
index c6588d2cd..545426fd9 100644
|
||||||
|
--- a/linker/linker.cpp
|
||||||
|
+++ b/linker/linker.cpp
|
||||||
|
@@ -93,7 +93,6 @@ static uint64_t g_module_unload_counter = 0;
|
||||||
|
static const char* const kLdConfigArchFilePath = "/system/etc/ld.config." ABI_STRING ".txt";
|
||||||
|
|
||||||
|
static const char* const kLdConfigFilePath = "/system/etc/ld.config.txt";
|
||||||
|
-static const char* const kLdConfigVndkLiteFilePath = "/system/etc/ld.config.vndk_lite.txt";
|
||||||
|
|
||||||
|
static const char* const kLdGeneratedConfigFilePath = "/linkerconfig/ld.config.txt";
|
||||||
|
|
||||||
|
@@ -3365,10 +3364,6 @@ static std::string get_ld_config_file_apex_path(const char* executable_path) {
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::string get_ld_config_file_vndk_path() {
|
||||||
|
- if (android::base::GetBoolProperty("ro.vndk.lite", false)) {
|
||||||
|
- return kLdConfigVndkLiteFilePath;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
std::string ld_config_file_vndk = kLdConfigFilePath;
|
||||||
|
size_t insert_pos = ld_config_file_vndk.find_last_of('.');
|
||||||
|
if (insert_pos == std::string::npos) {
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,78 @@
|
|||||||
|
From fe04ccfd62f79856ffcfe3a10d905f12362c1094 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Sat, 19 Feb 2022 08:20:25 -0500
|
||||||
|
Subject: [PATCH 2/2] Add new mechanism to fake vendor props on a per-process
|
||||||
|
basis
|
||||||
|
|
||||||
|
This reads debug.phh.props.<process name>. If its value is "vendor",
|
||||||
|
then ro.product.device/ro.product.manufacturer is read from vendor
|
||||||
|
---
|
||||||
|
libc/system_properties/system_properties.cpp | 38 ++++++++++++++++++++
|
||||||
|
1 file changed, 38 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libc/system_properties/system_properties.cpp b/libc/system_properties/system_properties.cpp
|
||||||
|
index 1cb15c3df..d6e7e3e68 100644
|
||||||
|
--- a/libc/system_properties/system_properties.cpp
|
||||||
|
+++ b/libc/system_properties/system_properties.cpp
|
||||||
|
@@ -35,6 +35,7 @@
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
|
||||||
|
#include <new>
|
||||||
|
|
||||||
|
@@ -50,6 +51,32 @@
|
||||||
|
#define SERIAL_DIRTY(serial) ((serial)&1)
|
||||||
|
#define SERIAL_VALUE_LEN(serial) ((serial) >> 24)
|
||||||
|
|
||||||
|
+static char comm[128];
|
||||||
|
+static bool self_ok = false;
|
||||||
|
+static char comm_override[PROP_VALUE_MAX];
|
||||||
|
+
|
||||||
|
+static void read_self() {
|
||||||
|
+ //NB: Not atomic, but should be good enough, there is no possible corruption from concurrency
|
||||||
|
+ if(self_ok) return;
|
||||||
|
+ self_ok = true;
|
||||||
|
+
|
||||||
|
+ int fd = open("/proc/self/comm", O_RDONLY);
|
||||||
|
+ if(fd<0) return;
|
||||||
|
+ read(fd, comm, sizeof(comm)-1);
|
||||||
|
+ for(unsigned i=0; i<sizeof(comm); i++)
|
||||||
|
+ if(comm[i] == '\n')
|
||||||
|
+ comm[i] = 0;
|
||||||
|
+ close(fd);
|
||||||
|
+
|
||||||
|
+ //That's calling ourselves but that's fine because we already have self_ok = true
|
||||||
|
+ char propName[PROP_NAME_MAX];
|
||||||
|
+ memset(propName, 0, PROP_NAME_MAX);
|
||||||
|
+ strncpy(propName, "debug.phh.props.", PROP_NAME_MAX - 1);
|
||||||
|
+ strncat(propName, comm, PROP_NAME_MAX - 1);
|
||||||
|
+
|
||||||
|
+ __system_property_get(propName, comm_override);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static bool is_dir(const char* pathname) {
|
||||||
|
struct stat info;
|
||||||
|
if (stat(pathname, &info) == -1) {
|
||||||
|
@@ -216,6 +243,17 @@ void SystemProperties::ReadCallback(const prop_info* pi,
|
||||||
|
}
|
||||||
|
|
||||||
|
int SystemProperties::Get(const char* name, char* value) {
|
||||||
|
+ read_self();
|
||||||
|
+ if(strcmp(comm_override, "vendor") == 0) {
|
||||||
|
+ if(strcmp(name, "ro.product.device") == 0) {
|
||||||
|
+ int r = Get("ro.product.vendor.device", value);
|
||||||
|
+ if(r>0) return r;
|
||||||
|
+ }
|
||||||
|
+ if(strcmp(name, "ro.product.manufacturer") == 0) {
|
||||||
|
+ int r = Get("ro.product.vendor.manufacturer", value);
|
||||||
|
+ if(r>0) return r;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
const prop_info* pi = Find(name);
|
||||||
|
|
||||||
|
if (pi != nullptr) {
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From edee230e9ff11d779322b76646aa5b7e48e10ab9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Thu, 12 Sep 2019 20:31:07 +0200
|
||||||
|
Subject: [PATCH] Don't reboot if we couldn't get bootctrl
|
||||||
|
|
||||||
|
Change-Id: Id1793660bd1c97ab369607f58a772ca3512ec1af
|
||||||
|
---
|
||||||
|
update_verifier/update_verifier.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/update_verifier/update_verifier.cpp b/update_verifier/update_verifier.cpp
|
||||||
|
index a042f900..ea3645af 100644
|
||||||
|
--- a/update_verifier/update_verifier.cpp
|
||||||
|
+++ b/update_verifier/update_verifier.cpp
|
||||||
|
@@ -310,7 +310,7 @@ int update_verifier(int argc, char** argv) {
|
||||||
|
sp<IBootControl> module = IBootControl::getService();
|
||||||
|
if (module == nullptr) {
|
||||||
|
LOG(ERROR) << "Error getting bootctrl module.";
|
||||||
|
- return reboot_device();
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t current_slot = module->getCurrentSlot();
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
From 3127d705a0024e37f94174b17b94cf2fb331e7e4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: sooti <sooti85@gmail.com>
|
||||||
|
Date: Tue, 12 Oct 2021 14:32:52 +0300
|
||||||
|
Subject: [PATCH 1/5] build: remove emulator crap from GSI
|
||||||
|
|
||||||
|
Change-Id: Id45f3ff1d31e3d4492f956e68a1eb4b2fb82ce63
|
||||||
|
---
|
||||||
|
target/product/emulator.mk | 6 +++---
|
||||||
|
target/product/emulator_vendor.mk | 6 +++---
|
||||||
|
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/target/product/emulator.mk b/target/product/emulator.mk
|
||||||
|
index 36da1f7034..1497c061fc 100644
|
||||||
|
--- a/target/product/emulator.mk
|
||||||
|
+++ b/target/product/emulator.mk
|
||||||
|
@@ -36,7 +36,7 @@ PRODUCT_PACKAGES += \
|
||||||
|
|
||||||
|
PRODUCT_PACKAGE_OVERLAYS := device/generic/goldfish/overlay
|
||||||
|
|
||||||
|
-PRODUCT_CHARACTERISTICS := emulator
|
||||||
|
+# PRODUCT_CHARACTERISTICS := emulator
|
||||||
|
|
||||||
|
PRODUCT_FULL_TREBLE_OVERRIDE := true
|
||||||
|
|
||||||
|
@@ -56,5 +56,5 @@ PRODUCT_SYSTEM_EXT_PROPERTIES += \
|
||||||
|
ro.com.google.locationfeatures=1
|
||||||
|
|
||||||
|
# disable setupwizard
|
||||||
|
-PRODUCT_SYSTEM_EXT_PROPERTIES += \
|
||||||
|
- ro.setupwizard.mode=DISABLED
|
||||||
|
+# PRODUCT_SYSTEM_EXT_PROPERTIES += \
|
||||||
|
+# ro.setupwizard.mode=DISABLED
|
||||||
|
diff --git a/target/product/emulator_vendor.mk b/target/product/emulator_vendor.mk
|
||||||
|
index f71b275b0e..62984253f3 100644
|
||||||
|
--- a/target/product/emulator_vendor.mk
|
||||||
|
+++ b/target/product/emulator_vendor.mk
|
||||||
|
@@ -28,7 +28,7 @@ PRODUCT_PACKAGES += \
|
||||||
|
|
||||||
|
DEVICE_PACKAGE_OVERLAYS := device/generic/goldfish/overlay
|
||||||
|
|
||||||
|
-PRODUCT_CHARACTERISTICS := emulator
|
||||||
|
+# PRODUCT_CHARACTERISTICS := emulator
|
||||||
|
|
||||||
|
PRODUCT_FULL_TREBLE_OVERRIDE := true
|
||||||
|
|
||||||
|
@@ -48,5 +48,5 @@ PRODUCT_SYSTEM_EXT_PROPERTIES += \
|
||||||
|
ro.com.google.locationfeatures=1
|
||||||
|
|
||||||
|
# disable setupwizard
|
||||||
|
-PRODUCT_SYSTEM_EXT_PROPERTIES += \
|
||||||
|
- ro.setupwizard.mode?=DISABLED
|
||||||
|
+# PRODUCT_SYSTEM_EXT_PROPERTIES += \
|
||||||
|
+# ro.setupwizard.mode?=DISABLED
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From 5f354b54b48358256e5f6251939edfaa1d4127ff Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alberto Ponces <ponces26@gmail.com>
|
||||||
|
Date: Mon, 18 Oct 2021 17:20:18 +0100
|
||||||
|
Subject: [PATCH 2/5] build: Bypass vendor calls
|
||||||
|
|
||||||
|
Change-Id: I69830d6264356dadd7b037553a899a4eb3d211f1
|
||||||
|
---
|
||||||
|
target/product/aosp_arm64.mk | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/target/product/aosp_arm64.mk b/target/product/aosp_arm64.mk
|
||||||
|
index 01897b77d2..a0a7c0d2fc 100644
|
||||||
|
--- a/target/product/aosp_arm64.mk
|
||||||
|
+++ b/target/product/aosp_arm64.mk
|
||||||
|
@@ -51,9 +51,9 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
|
||||||
|
#
|
||||||
|
# All components inherited here go to vendor or vendor_boot image
|
||||||
|
#
|
||||||
|
-$(call inherit-product, $(SRC_TARGET_DIR)/product/emulator_vendor.mk)
|
||||||
|
-$(call inherit-product, $(SRC_TARGET_DIR)/board/generic_arm64/device.mk)
|
||||||
|
-$(call inherit-product, $(SRC_TARGET_DIR)/product/non_ab_device.mk)
|
||||||
|
+#$(call inherit-product, $(SRC_TARGET_DIR)/product/emulator_vendor.mk)
|
||||||
|
+#$(call inherit-product, $(SRC_TARGET_DIR)/board/generic_arm64/device.mk)
|
||||||
|
+#$(call inherit-product, $(SRC_TARGET_DIR)/product/non_ab_device.mk)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Special settings for GSI releasing
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 43119ff620379b3710f1411b0e965ed0b10982fc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Mon, 9 Apr 2018 00:19:49 +0200
|
||||||
|
Subject: [PATCH 1/8] Increase default log_level to get actual selinux error in
|
||||||
|
kmsg
|
||||||
|
|
||||||
|
---
|
||||||
|
secilc/secilc.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/secilc/secilc.c b/secilc/secilc.c
|
||||||
|
index 80d3583d..a51630b2 100644
|
||||||
|
--- a/secilc/secilc.c
|
||||||
|
+++ b/secilc/secilc.c
|
||||||
|
@@ -107,7 +107,7 @@ int main(int argc, char *argv[])
|
||||||
|
int opt_index = 0;
|
||||||
|
char *fc_buf = NULL;
|
||||||
|
size_t fc_size;
|
||||||
|
- enum cil_log_level log_level = CIL_ERR;
|
||||||
|
+ enum cil_log_level log_level = CIL_WARN;
|
||||||
|
static struct option long_opts[] = {
|
||||||
|
{"help", no_argument, 0, 'h'},
|
||||||
|
{"verbose", no_argument, 0, 'v'},
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
From 1e713fc5860318d2a99f31718fea884c8d461923 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Wed, 9 Sep 2020 22:36:42 +0200
|
||||||
|
Subject: [PATCH 2/8] Revert "libsepol: Make an unknown permission an error in
|
||||||
|
CIL"
|
||||||
|
|
||||||
|
This reverts commit dc4e54126bf25dea4d51820922ccd1959be68fbc.
|
||||||
|
|
||||||
|
This is required because some targets calls undefined permissions:
|
||||||
|
- Realme X2 Pro calls sigcont
|
||||||
|
- Honor 7X calls perf_event
|
||||||
|
---
|
||||||
|
libsepol/cil/src/cil_resolve_ast.c | 12 ++++++++----
|
||||||
|
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c
|
||||||
|
index 69a8a2ed..b63c1359 100644
|
||||||
|
--- a/libsepol/cil/src/cil_resolve_ast.c
|
||||||
|
+++ b/libsepol/cil/src/cil_resolve_ast.c
|
||||||
|
@@ -136,14 +136,18 @@ static int __cil_resolve_perms(symtab_t *class_symtab, symtab_t *common_symtab,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (rc != SEPOL_OK) {
|
||||||
|
+ struct cil_list *empty_list;
|
||||||
|
if (class_flavor == CIL_MAP_CLASS) {
|
||||||
|
cil_log(CIL_ERR, "Failed to resolve permission %s for map class\n", (char*)curr->data);
|
||||||
|
- } else {
|
||||||
|
- cil_log(CIL_ERR, "Failed to resolve permission %s\n", (char*)curr->data);
|
||||||
|
+ goto exit;
|
||||||
|
}
|
||||||
|
- goto exit;
|
||||||
|
+ cil_log(CIL_WARN, "Failed to resolve permission %s\n", (char*)curr->data);
|
||||||
|
+ /* Use an empty list to represent unknown perm */
|
||||||
|
+ cil_list_init(&empty_list, perm_strs->flavor);
|
||||||
|
+ cil_list_append(*perm_datums, CIL_LIST, empty_list);
|
||||||
|
+ } else {
|
||||||
|
+ cil_list_append(*perm_datums, CIL_DATUM, perm_datum);
|
||||||
|
}
|
||||||
|
- cil_list_append(*perm_datums, CIL_DATUM, perm_datum);
|
||||||
|
} else {
|
||||||
|
cil_list_append(*perm_datums, curr->flavor, curr->data);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,115 @@
|
|||||||
|
From 383c762e65ba755da5f424cea56f7249fb4aa852 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Wed, 31 Mar 2021 23:32:37 +0200
|
||||||
|
Subject: [PATCH 3/8] Workaround device/phh/treble conflict with SELinux policy
|
||||||
|
|
||||||
|
device/phh/treble defines the following three types (hostapd,
|
||||||
|
sysfs_usb_supply, rpmb_device)
|
||||||
|
However, Qualcomm Samsung Android 11 devices export those symbols as
|
||||||
|
typealias.
|
||||||
|
Type and typealias are fundamentally not mergeable.
|
||||||
|
Luckily, Samsung doesn't do anything with those typealias, so we can
|
||||||
|
simply ignore them.
|
||||||
|
---
|
||||||
|
libsepol/cil/src/cil_binary.c | 8 ++++++--
|
||||||
|
libsepol/cil/src/cil_build_ast.c | 11 +++++++++--
|
||||||
|
libsepol/cil/src/cil_resolve_ast.c | 15 +++++++++++++--
|
||||||
|
3 files changed, 28 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
|
||||||
|
index 53017e2d..7f2c2e68 100644
|
||||||
|
--- a/libsepol/cil/src/cil_binary.c
|
||||||
|
+++ b/libsepol/cil/src/cil_binary.c
|
||||||
|
@@ -511,13 +511,17 @@ int cil_typealias_to_policydb(policydb_t *pdb, struct cil_alias *cil_alias)
|
||||||
|
type_datum_init(sepol_alias);
|
||||||
|
|
||||||
|
rc = __cil_get_sepol_type_datum(pdb, DATUM(cil_alias->actual), &sepol_type);
|
||||||
|
- if (rc != SEPOL_OK) goto exit;
|
||||||
|
+ if (rc != SEPOL_OK) {
|
||||||
|
+ cil_log(CIL_ERR, "Failed at %s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__);
|
||||||
|
+ goto exit;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
sepol_alias->flavor = TYPE_TYPE;
|
||||||
|
|
||||||
|
key = cil_strdup(cil_alias->datum.fqn);
|
||||||
|
rc = symtab_insert(pdb, SYM_TYPES, key, sepol_alias, SCOPE_DECL, 0, NULL);
|
||||||
|
if (rc != SEPOL_OK) {
|
||||||
|
+ cil_log(CIL_ERR, "Failed at %s:%s:%d:%d\n", __FILE__, __FUNCTION__, __LINE__, rc);
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
sepol_alias->s.value = sepol_type->s.value;
|
||||||
|
@@ -3904,7 +3908,7 @@ int __cil_node_to_policydb(struct cil_tree_node *node, void *extra_args)
|
||||||
|
|
||||||
|
exit:
|
||||||
|
if (rc != SEPOL_OK) {
|
||||||
|
- cil_tree_log(node, CIL_ERR, "Binary policy creation failed");
|
||||||
|
+ cil_tree_log(node, CIL_ERR, "Binary policy creation failed, for pass = %d, flavor = %d", pass, node->flavor);
|
||||||
|
}
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
diff --git a/libsepol/cil/src/cil_build_ast.c b/libsepol/cil/src/cil_build_ast.c
|
||||||
|
index 5f9392d1..90f0fee6 100644
|
||||||
|
--- a/libsepol/cil/src/cil_build_ast.c
|
||||||
|
+++ b/libsepol/cil/src/cil_build_ast.c
|
||||||
|
@@ -116,7 +116,7 @@ int cil_add_decl_to_symtab(struct cil_db *db, symtab_t *symtab, hashtab_key_t ke
|
||||||
|
|
||||||
|
rc = cil_symtab_insert(symtab, key, datum, node);
|
||||||
|
if (rc == SEPOL_EEXIST) {
|
||||||
|
- struct cil_symtab_datum *prev;
|
||||||
|
+ struct cil_symtab_datum *prev = NULL;
|
||||||
|
rc = cil_symtab_get_datum(symtab, key, &prev);
|
||||||
|
if (rc != SEPOL_OK) {
|
||||||
|
cil_log(CIL_ERR, "Re-declaration of %s %s, but previous declaration could not be found\n",cil_node_to_string(node), key);
|
||||||
|
@@ -129,7 +129,14 @@ int cil_add_decl_to_symtab(struct cil_db *db, symtab_t *symtab, hashtab_key_t ke
|
||||||
|
cil_node_to_string(node), key);
|
||||||
|
cil_tree_log(node, CIL_ERR, "Previous declaration of %s",
|
||||||
|
cil_node_to_string(n));
|
||||||
|
- return SEPOL_ERR;
|
||||||
|
+ if(
|
||||||
|
+ strcmp(key, "sysfs_usb_supply") == 0 ||
|
||||||
|
+ strcmp(key, "hostapd") == 0 ||
|
||||||
|
+ strcmp(key, "rpmb_device") == 0) {
|
||||||
|
+ cil_log(CIL_ERR, "Ignoring...");
|
||||||
|
+ } else {
|
||||||
|
+ return SEPOL_ERR;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
/* multiple_decls is enabled and works for this datum type, add node */
|
||||||
|
cil_list_append(prev->nodes, CIL_NODE, node);
|
||||||
|
diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c
|
||||||
|
index b63c1359..87db4f81 100644
|
||||||
|
--- a/libsepol/cil/src/cil_resolve_ast.c
|
||||||
|
+++ b/libsepol/cil/src/cil_resolve_ast.c
|
||||||
|
@@ -517,7 +517,13 @@ int cil_resolve_aliasactual(struct cil_tree_node *current, void *extra_args, enu
|
||||||
|
}
|
||||||
|
if (FLAVOR(alias_datum) != alias_flavor) {
|
||||||
|
cil_log(CIL_ERR, "%s is not an alias\n",alias_datum->name);
|
||||||
|
- rc = SEPOL_ERR;
|
||||||
|
+ if(
|
||||||
|
+ strcmp(alias_datum->name, "hostapd") == 0 ||
|
||||||
|
+ strcmp(alias_datum->name, "sysfs_usb_supply") == 0 ||
|
||||||
|
+ strcmp(alias_datum->name, "rpmb_device") == 0)
|
||||||
|
+ rc = 0;
|
||||||
|
+ else
|
||||||
|
+ rc = SEPOL_ERR;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -558,7 +564,12 @@ int cil_resolve_alias_to_actual(struct cil_tree_node *current, enum cil_flavor f
|
||||||
|
int limit = 2;
|
||||||
|
|
||||||
|
if (alias->actual == NULL) {
|
||||||
|
- cil_tree_log(current, CIL_ERR, "Alias declared but not used");
|
||||||
|
+ cil_tree_log(current, CIL_ERR, "Alias %s declared but not used", a1->datum.name);
|
||||||
|
+ if(
|
||||||
|
+ strcmp(a1->datum.name, "hostapd") == 0 ||
|
||||||
|
+ strcmp(a1->datum.name, "sysfs_usb_supply") == 0 ||
|
||||||
|
+ strcmp(a1->datum.name, "rpmb_device") == 0)
|
||||||
|
+ return SEPOL_OK;
|
||||||
|
return SEPOL_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From f1ee5e7fb0ef1bbed930d955ce34601f91850762 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Fri, 6 Sep 2019 15:07:25 +0200
|
||||||
|
Subject: [PATCH 4/8] Allow /devices/virtual/block/ genfscon conflict (seen on
|
||||||
|
Xiaomi Mi 9)
|
||||||
|
|
||||||
|
Change-Id: I06e4e9d5b82d61a8aeab595b47e2589249675895
|
||||||
|
---
|
||||||
|
libsepol/cil/src/cil_post.c | 18 +++++++++++++++++-
|
||||||
|
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libsepol/cil/src/cil_post.c b/libsepol/cil/src/cil_post.c
|
||||||
|
index 09c02af9..5c0e99c3 100644
|
||||||
|
--- a/libsepol/cil/src/cil_post.c
|
||||||
|
+++ b/libsepol/cil/src/cil_post.c
|
||||||
|
@@ -491,7 +491,23 @@ int cil_post_genfscon_context_compare(const void *a, const void *b)
|
||||||
|
{
|
||||||
|
struct cil_genfscon *a_genfscon = *(struct cil_genfscon**)a;
|
||||||
|
struct cil_genfscon *b_genfscon = *(struct cil_genfscon**)b;
|
||||||
|
- return context_compare(a_genfscon->context, b_genfscon->context);
|
||||||
|
+ int rc = context_compare(a_genfscon->context, b_genfscon->context);
|
||||||
|
+ if(rc) {
|
||||||
|
+ fprintf(stderr, "hello %s\n", a_genfscon->fs_str);
|
||||||
|
+ int bypass = 0;
|
||||||
|
+ /*
|
||||||
|
+ * This conflict has been seen on Xiaomi Mi 9:
|
||||||
|
+ * - AOSP Q says (genfscon sysfs /devices/virtual/block/ (u object_r sysfs_devices_block ((s0) (s0))))
|
||||||
|
+ * - stock rom says (genfscon sysfs /devices/virtual/block/ (u object_r sysfs_ufs_target ((s0) (s0))))
|
||||||
|
+ */
|
||||||
|
+ if(strcmp(a_genfscon->path_str, "/devices/virtual/block/") == 0)
|
||||||
|
+ bypass = 1;
|
||||||
|
+ if(bypass == 1) {
|
||||||
|
+ fprintf(stderr, "Received conflicting %s vs %s but ignore\n", a_genfscon->path_str, b_genfscon->path_str);
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cil_post_netifcon_context_compare(const void *a, const void *b)
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
From d023a3be8b43e5539ac5aab02f0fa96c03ed9901 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Thu, 12 Sep 2019 20:37:04 +0200
|
||||||
|
Subject: [PATCH 5/8] if service is "rcs", accept conflict. Seen on Moto E5
|
||||||
|
|
||||||
|
Change-Id: I0cc2d0fad83f403f2b5d7458039b1564ce5ed9dd
|
||||||
|
---
|
||||||
|
libselinux/src/label_backends_android.c | 14 ++++++++++++--
|
||||||
|
1 file changed, 12 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libselinux/src/label_backends_android.c b/libselinux/src/label_backends_android.c
|
||||||
|
index e52b44d4..3b8a2bd8 100644
|
||||||
|
--- a/libselinux/src/label_backends_android.c
|
||||||
|
+++ b/libselinux/src/label_backends_android.c
|
||||||
|
@@ -62,14 +62,24 @@ static int nodups_specs(struct saved_data *data)
|
||||||
|
curr_spec->property_key)) {
|
||||||
|
if (strcmp(spec_arr[jj].lr.ctx_raw,
|
||||||
|
curr_spec->lr.ctx_raw)) {
|
||||||
|
- rc = -1;
|
||||||
|
- errno = EINVAL;
|
||||||
|
selinux_log
|
||||||
|
(SELINUX_ERROR,
|
||||||
|
"Multiple different specifications for %s (%s and %s).\n",
|
||||||
|
curr_spec->property_key,
|
||||||
|
spec_arr[jj].lr.ctx_raw,
|
||||||
|
curr_spec->lr.ctx_raw);
|
||||||
|
+ int ignore = 0;
|
||||||
|
+ /*
|
||||||
|
+ * This issue has been found on Moto E5
|
||||||
|
+ * E SELinux : Multiple different specifications for rcs (u:object_r:radio_service:s0 and u:object_r:mot_rcs_service:s0).
|
||||||
|
+ */
|
||||||
|
+ if(!strcmp(curr_spec->property_key, "rcs"))
|
||||||
|
+ ignore = 1;
|
||||||
|
+
|
||||||
|
+ if(!ignore) {
|
||||||
|
+ rc = -1;
|
||||||
|
+ errno = EINVAL;
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
selinux_log
|
||||||
|
(SELINUX_WARNING,
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
From 9cd3d8a0becbd182f5fe77af64ca7611ceba6fd1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Sun, 24 May 2020 17:22:22 +0200
|
||||||
|
Subject: [PATCH 6/8] Allow mismatches of exfat genfscon
|
||||||
|
|
||||||
|
---
|
||||||
|
libsepol/cil/src/cil_post.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libsepol/cil/src/cil_post.c b/libsepol/cil/src/cil_post.c
|
||||||
|
index 5c0e99c3..97bf54f8 100644
|
||||||
|
--- a/libsepol/cil/src/cil_post.c
|
||||||
|
+++ b/libsepol/cil/src/cil_post.c
|
||||||
|
@@ -502,6 +502,10 @@ int cil_post_genfscon_context_compare(const void *a, const void *b)
|
||||||
|
*/
|
||||||
|
if(strcmp(a_genfscon->path_str, "/devices/virtual/block/") == 0)
|
||||||
|
bypass = 1;
|
||||||
|
+ if(strcmp(a_genfscon->fs_str, "exfat") == 0 || strcmp(a_genfscon->fs_str, "esdfs") == 0) {
|
||||||
|
+ if(strcmp(a_genfscon->path_str, "/") == 0)
|
||||||
|
+ bypass = 1;
|
||||||
|
+ }
|
||||||
|
if(bypass == 1) {
|
||||||
|
fprintf(stderr, "Received conflicting %s vs %s but ignore\n", a_genfscon->path_str, b_genfscon->path_str);
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
From 81a82adb74c53b1671f24cb69a140a7915707f0f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Fri, 2 Mar 2018 22:49:55 +0100
|
||||||
|
Subject: [PATCH 7/8] Enable multipl_decls by default. This is needed because
|
||||||
|
8.0 init doesn't add -m
|
||||||
|
|
||||||
|
Change-Id: I43dc661d519f7b8576d72a828d8cbd444592bf5e
|
||||||
|
---
|
||||||
|
secilc/secilc.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/secilc/secilc.c b/secilc/secilc.c
|
||||||
|
index a51630b2..d9841ab0 100644
|
||||||
|
--- a/secilc/secilc.c
|
||||||
|
+++ b/secilc/secilc.c
|
||||||
|
@@ -94,7 +94,7 @@ int main(int argc, char *argv[])
|
||||||
|
int target = SEPOL_TARGET_SELINUX;
|
||||||
|
int mls = -1;
|
||||||
|
int disable_dontaudit = 0;
|
||||||
|
- int multiple_decls = 0;
|
||||||
|
+ int multiple_decls = 1;
|
||||||
|
int disable_neverallow = 0;
|
||||||
|
int preserve_tunables = 0;
|
||||||
|
int qualified_names = 0;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,84 @@
|
|||||||
|
From 426de61556334b4b1024f615302dadb1ed6d6ac8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Fri, 25 Oct 2019 13:29:20 +0200
|
||||||
|
Subject: [PATCH 8/8] Fix boot on Moto devices using unknown class
|
||||||
|
|
||||||
|
vendor sepolicy never contains new class or classorder, and are not
|
||||||
|
allowed to.
|
||||||
|
Though this is not tested, and it turns out Moto did it anyway.
|
||||||
|
This raises an issue, because class need to be ordered, and thus the cil
|
||||||
|
contains the ordering. This ordering needs to be merged.
|
||||||
|
Android 10 added new classes, so the ordering can no longer be merged,
|
||||||
|
and secilc fails on those devices, preventing boot.
|
||||||
|
|
||||||
|
Considering vendor are not supposed to declare new class (and thus
|
||||||
|
declare classorder), this fix ignores class-es/classorder in vendor
|
||||||
|
SELinux policy.
|
||||||
|
|
||||||
|
Since the vendor selinux policy has allows rules based on this context,
|
||||||
|
those allows will fail since the class doesn't exist.
|
||||||
|
Workaround this by ignoring rules with the problematic class
|
||||||
|
( keystore_moto_key )
|
||||||
|
|
||||||
|
Lucky us, this new class `keystore_moto_key` is used by Moto for
|
||||||
|
framework to framework (more accurately priv app to keymaster), since
|
||||||
|
our own framework doesn't use this class, simply ignoring it fixes the
|
||||||
|
issue.
|
||||||
|
|
||||||
|
Change-Id: I66339857634ebfdba359f12a99dfd0bff709d80b
|
||||||
|
---
|
||||||
|
libsepol/cil/src/cil_build_ast.c | 24 ++++++++++++++++++++++++
|
||||||
|
1 file changed, 24 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libsepol/cil/src/cil_build_ast.c b/libsepol/cil/src/cil_build_ast.c
|
||||||
|
index 90f0fee6..023fd6c7 100644
|
||||||
|
--- a/libsepol/cil/src/cil_build_ast.c
|
||||||
|
+++ b/libsepol/cil/src/cil_build_ast.c
|
||||||
|
@@ -462,6 +462,14 @@ int cil_gen_class(struct cil_db *db, struct cil_tree_node *parse_current, struct
|
||||||
|
struct cil_tree_node *perms = NULL;
|
||||||
|
int rc = SEPOL_ERR;
|
||||||
|
|
||||||
|
+ {
|
||||||
|
+ const char* path = cil_tree_get_cil_path(parse_current);
|
||||||
|
+ if(strstr(path, "vendor/")) {
|
||||||
|
+ cil_clear_node(ast_node);
|
||||||
|
+ return SEPOL_OK;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
rc = __cil_verify_syntax(parse_current, syntax, syntax_len);
|
||||||
|
if (rc != SEPOL_OK) {
|
||||||
|
goto exit;
|
||||||
|
@@ -530,6 +538,14 @@ int cil_gen_classorder(struct cil_db *db, struct cil_tree_node *parse_current, s
|
||||||
|
struct cil_list_item *head = NULL;
|
||||||
|
int rc = SEPOL_ERR;
|
||||||
|
|
||||||
|
+ {
|
||||||
|
+ const char* path = cil_tree_get_cil_path(parse_current);
|
||||||
|
+ if(strstr(path, "vendor/")) {
|
||||||
|
+ cil_clear_node(ast_node);
|
||||||
|
+ return SEPOL_OK;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (db == NULL || parse_current == NULL || ast_node == NULL) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
@@ -2115,6 +2131,14 @@ int cil_gen_avrule(struct cil_tree_node *parse_current, struct cil_tree_node *as
|
||||||
|
rule->src_str = parse_current->next->data;
|
||||||
|
rule->tgt_str = parse_current->next->next->data;
|
||||||
|
|
||||||
|
+ {
|
||||||
|
+ const char *classname = parse_current->next->next->next->cl_head->data;
|
||||||
|
+ if(strcmp(classname, "keystore_moto_key") == 0) {
|
||||||
|
+ cil_clear_node(ast_node);
|
||||||
|
+ return SEPOL_OK;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
rc = cil_fill_classperms_list(parse_current->next->next->next, &rule->perms.classperms);
|
||||||
|
if (rc != SEPOL_OK) {
|
||||||
|
goto exit;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,313 @@
|
|||||||
|
From c3bb65b010f19b31a56b8c5d10ef182b32894fbf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Cai <peter@typeblog.net>
|
||||||
|
Date: Thu, 18 Aug 2022 15:44:46 -0400
|
||||||
|
Subject: [PATCH 01/26] APM: Restore S, R and Q behavior respectively for
|
||||||
|
telephony audio
|
||||||
|
|
||||||
|
This conditionally reverts part of b2e5cb (T), 51c9cc (S) and afd4ce (R)
|
||||||
|
when the VNDK version is equal to or before S, R and Q respectively.
|
||||||
|
|
||||||
|
On R, commit afd4ce made it so that both HW and SW bridging go through
|
||||||
|
`createAudioPatch()`, which is broken on some devices such as on MTK Q
|
||||||
|
vendor, because their HAL do not support HW patching via the newer
|
||||||
|
`createAudioPatch()` method. Instead, the patching on Q was done through
|
||||||
|
`setOutputDevices()`.
|
||||||
|
|
||||||
|
On S, commit 51c9cc refactored the related code again such that HW
|
||||||
|
bridging for the Rx direction is essentially removed, replaced with SW
|
||||||
|
bridging through `startAudioSource()`. This is, again, broken on MTK R
|
||||||
|
vendor devices.
|
||||||
|
|
||||||
|
On T, commit b2e5cb applied the same SW bridging to the Tx direction.
|
||||||
|
|
||||||
|
All of these commits rely on assumptions that are not tested through
|
||||||
|
VTS and just presumed to be true. Although we can blame MTK for not
|
||||||
|
supporting all the possible cases in their HAL, it will not fix
|
||||||
|
anything, and really frameworks code should not depend on such untested
|
||||||
|
assumptions.
|
||||||
|
|
||||||
|
To work around said issues, we restore old behavior from S, R and Q
|
||||||
|
relying on the value of `ro.vndk.version`.
|
||||||
|
|
||||||
|
Change-Id: I56d36d2aef4319935cb88a3e4771b23c6d5b2145
|
||||||
|
---
|
||||||
|
.../managerdefault/AudioPolicyManager.cpp | 193 +++++++++++++-----
|
||||||
|
.../managerdefault/AudioPolicyManager.h | 3 +
|
||||||
|
2 files changed, 141 insertions(+), 55 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||||
|
index 744609f27b..224dae3820 100644
|
||||||
|
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||||
|
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||||
|
@@ -675,6 +675,17 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||||
|
disconnectTelephonyAudioSource(mCallRxSourceClient);
|
||||||
|
disconnectTelephonyAudioSource(mCallTxSourceClient);
|
||||||
|
|
||||||
|
+ // release existing RX patch if any
|
||||||
|
+ if (mCallRxPatch != 0) {
|
||||||
|
+ releaseAudioPatchInternal(mCallRxPatch->getHandle());
|
||||||
|
+ mCallRxPatch.clear();
|
||||||
|
+ }
|
||||||
|
+ // release TX patch if any
|
||||||
|
+ if (mCallTxPatch != 0) {
|
||||||
|
+ releaseAudioPatchInternal(mCallTxPatch->getHandle());
|
||||||
|
+ mCallTxPatch.clear();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
auto telephonyRxModule =
|
||||||
|
mHwModules.getModuleForDeviceType(AUDIO_DEVICE_IN_TELEPHONY_RX, AUDIO_FORMAT_DEFAULT);
|
||||||
|
auto telephonyTxModule =
|
||||||
|
@@ -697,9 +708,20 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||||
|
ALOGE("%s() no telephony Tx and/or RX device", __func__);
|
||||||
|
return INVALID_OPERATION;
|
||||||
|
}
|
||||||
|
- // createAudioPatchInternal now supports both HW / SW bridging
|
||||||
|
- createRxPatch = true;
|
||||||
|
- createTxPatch = true;
|
||||||
|
+ if (property_get_int32("ro.vndk.version", 31) >= 30) {
|
||||||
|
+ // createAudioPatchInternal now supports both HW / SW bridging
|
||||||
|
+ createRxPatch = true;
|
||||||
|
+ createTxPatch = true;
|
||||||
|
+ } else {
|
||||||
|
+ // pre-R behavior: some devices before VNDK 30 do not support createAudioPatch correctly
|
||||||
|
+ // for HW bridging even though they declare support for it
|
||||||
|
+ // do not create a patch (aka Sw Bridging) if Primary HW module has declared supporting a
|
||||||
|
+ // route between telephony RX to Sink device and Source device to telephony TX
|
||||||
|
+ ALOGI("%s() Using pre-R behavior for createRxPatch and createTxPatch", __func__);
|
||||||
|
+ const auto &primaryModule = telephonyRxModule;
|
||||||
|
+ createRxPatch = !primaryModule->supportsPatch(rxSourceDevice, rxDevices.itemAt(0));
|
||||||
|
+ createTxPatch = !primaryModule->supportsPatch(txSourceDevice, txSinkDevice);
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
// If the RX device is on the primary HW module, then use legacy routing method for
|
||||||
|
// voice calls via setOutputDevice() on primary output.
|
||||||
|
@@ -716,7 +738,14 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||||
|
if (!createRxPatch) {
|
||||||
|
muteWaitMs = setOutputDevices(mPrimaryOutput, rxDevices, true, delayMs);
|
||||||
|
} else { // create RX path audio patch
|
||||||
|
- connectTelephonyRxAudioSource();
|
||||||
|
+ if (property_get_int32("ro.vndk.version", 31) >= 31) {
|
||||||
|
+ connectTelephonyRxAudioSource();
|
||||||
|
+ } else {
|
||||||
|
+ // pre-S behavior: some devices do not support SW bridging correctly when HW bridge is
|
||||||
|
+ // available through createAudioPatch(); startAudioSource() forces SW bridging.
|
||||||
|
+ ALOGI("%s() Using pre-S behavior to create HW Rx patch", __func__);
|
||||||
|
+ mCallRxPatch = createTelephonyPatch(true /*isRx*/, rxDevices.itemAt(0), delayMs);
|
||||||
|
+ }
|
||||||
|
// If the TX device is on the primary HW module but RX device is
|
||||||
|
// on other HW module, SinkMetaData of telephony input should handle it
|
||||||
|
// assuming the device uses audio HAL V5.0 and above
|
||||||
|
@@ -731,7 +760,12 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||||
|
closeActiveClients(activeDesc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- connectTelephonyTxAudioSource(txSourceDevice, txSinkDevice, delayMs);
|
||||||
|
+ if (property_get_int32("ro.vndk.version", 33) >= 33) {
|
||||||
|
+ connectTelephonyTxAudioSource(txSourceDevice, txSinkDevice, delayMs);
|
||||||
|
+ } else {
|
||||||
|
+ // pre-T behavior: hw bridging for tx too; skip the SwOutput
|
||||||
|
+ mCallTxPatch = createTelephonyPatch(false /*isRx*/, txSourceDevice, delayMs);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
if (waitMs != nullptr) {
|
||||||
|
*waitMs = muteWaitMs;
|
||||||
|
@@ -739,6 +773,36 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||||
|
return NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
+sp<AudioPatch> AudioPolicyManager::createTelephonyPatch(
|
||||||
|
+ bool isRx, const sp<DeviceDescriptor> &device, uint32_t delayMs) {
|
||||||
|
+ PatchBuilder patchBuilder;
|
||||||
|
+
|
||||||
|
+ if (device == nullptr) {
|
||||||
|
+ return nullptr;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // @TODO: still ignoring the address, or not dealing platform with multiple telephony devices
|
||||||
|
+ if (isRx) {
|
||||||
|
+ patchBuilder.addSink(device).
|
||||||
|
+ addSource(mAvailableInputDevices.getDevice(
|
||||||
|
+ AUDIO_DEVICE_IN_TELEPHONY_RX, String8(), AUDIO_FORMAT_DEFAULT));
|
||||||
|
+ } else {
|
||||||
|
+ patchBuilder.addSource(device).
|
||||||
|
+ addSink(mAvailableOutputDevices.getDevice(
|
||||||
|
+ AUDIO_DEVICE_OUT_TELEPHONY_TX, String8(), AUDIO_FORMAT_DEFAULT));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ audio_patch_handle_t patchHandle = AUDIO_PATCH_HANDLE_NONE;
|
||||||
|
+ status_t status =
|
||||||
|
+ createAudioPatchInternal(patchBuilder.patch(), &patchHandle, mUidCached, delayMs, nullptr);
|
||||||
|
+ ssize_t index = mAudioPatches.indexOfKey(patchHandle);
|
||||||
|
+ if (status != NO_ERROR || index < 0) {
|
||||||
|
+ ALOGW("%s() error %d creating %s audio patch", __func__, status, isRx ? "RX" : "TX");
|
||||||
|
+ return nullptr;
|
||||||
|
+ }
|
||||||
|
+ return mAudioPatches.valueAt(index);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool AudioPolicyManager::isDeviceOfModule(
|
||||||
|
const sp<DeviceDescriptor>& devDesc, const char *moduleId) const {
|
||||||
|
sp<HwModule> module = mHwModules.getModuleFromName(moduleId);
|
||||||
|
@@ -4520,76 +4584,95 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
|
||||||
|
// in config XML to reach the sink so that is can be declared as available.
|
||||||
|
audio_io_handle_t output = AUDIO_IO_HANDLE_NONE;
|
||||||
|
sp<SwAudioOutputDescriptor> outputDesc = nullptr;
|
||||||
|
- if (!sourceDesc->isInternal()) {
|
||||||
|
- // take care of dynamic routing for SwOutput selection,
|
||||||
|
- audio_attributes_t attributes = sourceDesc->attributes();
|
||||||
|
- audio_stream_type_t stream = sourceDesc->stream();
|
||||||
|
- audio_attributes_t resultAttr;
|
||||||
|
- audio_config_t config = AUDIO_CONFIG_INITIALIZER;
|
||||||
|
- config.sample_rate = sourceDesc->config().sample_rate;
|
||||||
|
- config.channel_mask = sourceDesc->config().channel_mask;
|
||||||
|
- config.format = sourceDesc->config().format;
|
||||||
|
- audio_output_flags_t flags = AUDIO_OUTPUT_FLAG_NONE;
|
||||||
|
- audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE;
|
||||||
|
- bool isRequestedDeviceForExclusiveUse = false;
|
||||||
|
- output_type_t outputType;
|
||||||
|
- bool isSpatialized;
|
||||||
|
- getOutputForAttrInt(&resultAttr, &output, AUDIO_SESSION_NONE, &attributes,
|
||||||
|
- &stream, sourceDesc->uid(), &config, &flags,
|
||||||
|
- &selectedDeviceId, &isRequestedDeviceForExclusiveUse,
|
||||||
|
- nullptr, &outputType, &isSpatialized);
|
||||||
|
- if (output == AUDIO_IO_HANDLE_NONE) {
|
||||||
|
- ALOGV("%s no output for device %s",
|
||||||
|
- __FUNCTION__, sinkDevice->toString().c_str());
|
||||||
|
- return INVALID_OPERATION;
|
||||||
|
- }
|
||||||
|
- outputDesc = mOutputs.valueFor(output);
|
||||||
|
- if (outputDesc->isDuplicated()) {
|
||||||
|
- ALOGE("%s output is duplicated", __func__);
|
||||||
|
- return INVALID_OPERATION;
|
||||||
|
- }
|
||||||
|
- sourceDesc->setSwOutput(outputDesc);
|
||||||
|
- } else {
|
||||||
|
- // Same for "raw patches" aka created from createAudioPatch API
|
||||||
|
- SortedVector<audio_io_handle_t> outputs =
|
||||||
|
+ if (sourceDesc != nullptr) {
|
||||||
|
+ if (!sourceDesc->isInternal()) {
|
||||||
|
+ // take care of dynamic routing for SwOutput selection,
|
||||||
|
+ audio_attributes_t attributes = sourceDesc->attributes();
|
||||||
|
+ audio_stream_type_t stream = sourceDesc->stream();
|
||||||
|
+ audio_attributes_t resultAttr;
|
||||||
|
+ audio_config_t config = AUDIO_CONFIG_INITIALIZER;
|
||||||
|
+ config.sample_rate = sourceDesc->config().sample_rate;
|
||||||
|
+ config.channel_mask = sourceDesc->config().channel_mask;
|
||||||
|
+ config.format = sourceDesc->config().format;
|
||||||
|
+ audio_output_flags_t flags = AUDIO_OUTPUT_FLAG_NONE;
|
||||||
|
+ audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE;
|
||||||
|
+ bool isRequestedDeviceForExclusiveUse = false;
|
||||||
|
+ output_type_t outputType;
|
||||||
|
+ bool isSpatialized;
|
||||||
|
+ getOutputForAttrInt(&resultAttr, &output, AUDIO_SESSION_NONE, &attributes,
|
||||||
|
+ &stream, sourceDesc->uid(), &config, &flags,
|
||||||
|
+ &selectedDeviceId, &isRequestedDeviceForExclusiveUse,
|
||||||
|
+ nullptr, &outputType, &isSpatialized);
|
||||||
|
+ if (output == AUDIO_IO_HANDLE_NONE) {
|
||||||
|
+ ALOGV("%s no output for device %s",
|
||||||
|
+ __FUNCTION__, sinkDevice->toString().c_str());
|
||||||
|
+ return INVALID_OPERATION;
|
||||||
|
+ }
|
||||||
|
+ outputDesc = mOutputs.valueFor(output);
|
||||||
|
+ if (outputDesc->isDuplicated()) {
|
||||||
|
+ ALOGE("%s output is duplicated", __func__);
|
||||||
|
+ return INVALID_OPERATION;
|
||||||
|
+ }
|
||||||
|
+ sourceDesc->setSwOutput(outputDesc);
|
||||||
|
+ } else {
|
||||||
|
+ // Same for "raw patches" aka created from createAudioPatch API
|
||||||
|
+ SortedVector<audio_io_handle_t> outputs =
|
||||||
|
getOutputsForDevices(DeviceVector(sinkDevice), mOutputs);
|
||||||
|
- // if the sink device is reachable via an opened output stream, request to
|
||||||
|
- // go via this output stream by adding a second source to the patch
|
||||||
|
- // description
|
||||||
|
- output = selectOutput(outputs);
|
||||||
|
- if (output == AUDIO_IO_HANDLE_NONE) {
|
||||||
|
- ALOGE("%s no output available for internal patch sink", __func__);
|
||||||
|
- return INVALID_OPERATION;
|
||||||
|
- }
|
||||||
|
- outputDesc = mOutputs.valueFor(output);
|
||||||
|
- if (outputDesc->isDuplicated()) {
|
||||||
|
- ALOGV("%s output for device %s is duplicated",
|
||||||
|
- __func__, sinkDevice->toString().c_str());
|
||||||
|
- return INVALID_OPERATION;
|
||||||
|
+ // if the sink device is reachable via an opened output stream, request to
|
||||||
|
+ // go via this output stream by adding a second source to the patch
|
||||||
|
+ // description
|
||||||
|
+ output = selectOutput(outputs);
|
||||||
|
+ if (output == AUDIO_IO_HANDLE_NONE) {
|
||||||
|
+ ALOGE("%s no output available for internal patch sink", __func__);
|
||||||
|
+ return INVALID_OPERATION;
|
||||||
|
+ }
|
||||||
|
+ outputDesc = mOutputs.valueFor(output);
|
||||||
|
+ if (outputDesc->isDuplicated()) {
|
||||||
|
+ ALOGV("%s output for device %s is duplicated",
|
||||||
|
+ __func__, sinkDevice->toString().c_str());
|
||||||
|
+ return INVALID_OPERATION;
|
||||||
|
+ }
|
||||||
|
+ sourceDesc->setSwOutput(outputDesc);
|
||||||
|
}
|
||||||
|
- sourceDesc->setSwOutput(outputDesc);
|
||||||
|
}
|
||||||
|
// create a software bridge in PatchPanel if:
|
||||||
|
// - source and sink devices are on different HW modules OR
|
||||||
|
// - audio HAL version is < 3.0
|
||||||
|
// - audio HAL version is >= 3.0 but no route has been declared between devices
|
||||||
|
- // - called from startAudioSource (aka sourceDesc is not internal) and source device
|
||||||
|
+ // - called from startAudioSource (aka sourceDesc is neither null nor internal) and source device
|
||||||
|
// does not have a gain controller
|
||||||
|
if (!srcDevice->hasSameHwModuleAs(sinkDevice) ||
|
||||||
|
(srcDevice->getModuleVersionMajor() < 3) ||
|
||||||
|
!srcDevice->getModule()->supportsPatch(srcDevice, sinkDevice) ||
|
||||||
|
- (!sourceDesc->isInternal() &&
|
||||||
|
+ ((sourceDesc != nullptr && !sourceDesc->isInternal()) &&
|
||||||
|
srcDevice->getAudioPort()->getGains().size() == 0)) {
|
||||||
|
// support only one sink device for now to simplify output selection logic
|
||||||
|
if (patch->num_sinks > 1) {
|
||||||
|
return INVALID_OPERATION;
|
||||||
|
}
|
||||||
|
- sourceDesc->setUseSwBridge();
|
||||||
|
+ if (sourceDesc == nullptr) {
|
||||||
|
+ SortedVector<audio_io_handle_t> outputs =
|
||||||
|
+ getOutputsForDevices(DeviceVector(sinkDevice), mOutputs);
|
||||||
|
+ // if the sink device is reachable via an opened output stream, request to
|
||||||
|
+ // go via this output stream by adding a second source to the patch
|
||||||
|
+ // description
|
||||||
|
+ output = selectOutput(outputs);
|
||||||
|
+ if (output != AUDIO_IO_HANDLE_NONE) {
|
||||||
|
+ outputDesc = mOutputs.valueFor(output);
|
||||||
|
+ if (outputDesc->isDuplicated()) {
|
||||||
|
+ ALOGV("%s output for device %s is duplicated",
|
||||||
|
+ __FUNCTION__, sinkDevice->toString().c_str());
|
||||||
|
+ return INVALID_OPERATION;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ sourceDesc->setUseSwBridge();
|
||||||
|
+ }
|
||||||
|
if (outputDesc != nullptr) {
|
||||||
|
audio_port_config srcMixPortConfig = {};
|
||||||
|
outputDesc->toAudioPortConfig(&srcMixPortConfig, nullptr);
|
||||||
|
// for volume control, we may need a valid stream
|
||||||
|
- srcMixPortConfig.ext.mix.usecase.stream = !sourceDesc->isInternal() ?
|
||||||
|
+ srcMixPortConfig.ext.mix.usecase.stream = (sourceDesc != nullptr && !sourceDesc->isInternal()) ?
|
||||||
|
mEngine->getStreamTypeForAttributes(sourceDesc->attributes()) :
|
||||||
|
AUDIO_STREAM_PATCH;
|
||||||
|
patchBuilder.addSource(srcMixPortConfig);
|
||||||
|
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||||
|
index db0ee15de8..97fa6f6f81 100644
|
||||||
|
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||||
|
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||||
|
@@ -938,6 +938,9 @@ protected:
|
||||||
|
|
||||||
|
SoundTriggerSessionCollection mSoundTriggerSessions;
|
||||||
|
|
||||||
|
+ sp<AudioPatch> mCallTxPatch;
|
||||||
|
+ sp<AudioPatch> mCallRxPatch;
|
||||||
|
+
|
||||||
|
HwAudioOutputCollection mHwOutputs;
|
||||||
|
SourceClientCollection mAudioSources;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,131 @@
|
|||||||
|
From 9f20882e39d7af72c514669b7611785fa50ae567 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Mon, 5 Aug 2019 18:09:50 +0200
|
||||||
|
Subject: [PATCH 02/26] Fix BT in-call on CAF devices
|
||||||
|
|
||||||
|
See https://github.com/phhusson/treble_experimentations/issues/374
|
||||||
|
|
||||||
|
In Qualcomm's BSP audio_policy_configuration.xml, one route is missing,
|
||||||
|
from primary output and telephony to BT SCO.
|
||||||
|
|
||||||
|
Add it if we detect telephony and bt sco, but no such route.
|
||||||
|
|
||||||
|
Change-Id: Ifea0f88276ec9a0811f3cb1973c4b06f2c82077b
|
||||||
|
---
|
||||||
|
.../managerdefinitions/src/Serializer.cpp | 93 +++++++++++++++++++
|
||||||
|
1 file changed, 93 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
index d446e9667b..2f0ce75e47 100644
|
||||||
|
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
@@ -663,6 +663,98 @@ std::variant<status_t, RouteTraits::Element> PolicySerializer::deserialize<Route
|
||||||
|
return route;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void fixupQualcommBtScoRoute(RouteTraits::Collection& routes, DevicePortTraits::Collection& devicePorts, HwModule* ctx) {
|
||||||
|
+ // On many Qualcomm devices, there is a BT SCO Headset Mic => primary input mix
|
||||||
|
+ // But Telephony Rx => BT SCO Headset route is missing
|
||||||
|
+ // When we detect such case, add the missing route
|
||||||
|
+
|
||||||
|
+ // If we have:
|
||||||
|
+ // <route type="mix" sink="Telephony Tx" sources="voice_tx"/>
|
||||||
|
+ // <route type="mix" sink="primary input" sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic"/>
|
||||||
|
+ // <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink" />
|
||||||
|
+ // And no <route type="mix" sink="BT SCO Headset" />
|
||||||
|
+
|
||||||
|
+ // Add:
|
||||||
|
+ // <route type="mix" sink="BT SCO Headset" sources="primary output,deep_buffer,compressed_offload,Telephony Rx"/>
|
||||||
|
+ bool foundBtScoHeadsetDevice = false;
|
||||||
|
+ for(const auto& device: devicePorts) {
|
||||||
|
+ if(device->getTagName() == "BT SCO Headset") {
|
||||||
|
+ foundBtScoHeadsetDevice = true;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if(!foundBtScoHeadsetDevice) {
|
||||||
|
+ ALOGE("No BT SCO Headset device found, don't patch policy");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ bool foundTelephony = false;
|
||||||
|
+ bool foundBtScoInput = false;
|
||||||
|
+ bool foundScoHeadsetRoute = false;
|
||||||
|
+ for(const auto& route: routes) {
|
||||||
|
+ ALOGE("Looking at route %d\n", route->getType());
|
||||||
|
+ if(route->getType() != AUDIO_ROUTE_MIX)
|
||||||
|
+ continue;
|
||||||
|
+ auto sink = route->getSink();
|
||||||
|
+ ALOGE("... With sink %s\n", sink->getTagName().c_str());
|
||||||
|
+ if(sink->getTagName() == "Telephony Tx") {
|
||||||
|
+ foundTelephony = true;
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ if(sink->getTagName() == "BT SCO Headset") {
|
||||||
|
+ foundScoHeadsetRoute = true;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ for(const auto& source: route->getSources()) {
|
||||||
|
+ ALOGE("... With source %s\n", source->getTagName().c_str());
|
||||||
|
+ if(source->getTagName() == "BT SCO Headset Mic") {
|
||||||
|
+ foundBtScoInput = true;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ //The route we want to add is already there
|
||||||
|
+ ALOGE("Done looking for existing routes");
|
||||||
|
+ if(foundScoHeadsetRoute)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ ALOGE("No existing route found... %d %d", foundTelephony ? 1 : 0, foundBtScoInput ? 1 : 0);
|
||||||
|
+ //We couldn't find the routes we assume are required for the function we want to add
|
||||||
|
+ if(!foundTelephony || !foundBtScoInput)
|
||||||
|
+ return;
|
||||||
|
+ ALOGE("Adding our own.");
|
||||||
|
+
|
||||||
|
+ // Add:
|
||||||
|
+ // <route type="mix" sink="BT SCO Headset" sources="primary output,deep_buffer,compressed_offload,Telephony Rx"/>
|
||||||
|
+ AudioRoute *newRoute = new AudioRoute(AUDIO_ROUTE_MIX);
|
||||||
|
+
|
||||||
|
+ auto sink = ctx->findPortByTagName("BT SCO Headset");
|
||||||
|
+ ALOGE("Got sink %p\n", sink.get());
|
||||||
|
+ newRoute->setSink(sink);
|
||||||
|
+
|
||||||
|
+ Vector<sp<PolicyAudioPort>> sources;
|
||||||
|
+ for(const auto& sourceName: {
|
||||||
|
+ "primary output",
|
||||||
|
+ "deep_buffer",
|
||||||
|
+ "compressed_offload",
|
||||||
|
+ "Telephony Rx"
|
||||||
|
+ }) {
|
||||||
|
+ auto source = ctx->findPortByTagName(sourceName);
|
||||||
|
+ ALOGE("Got source %p\n", source.get());
|
||||||
|
+ if (source.get() != nullptr) {
|
||||||
|
+ sources.add(source);
|
||||||
|
+ source->addRoute(newRoute);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ newRoute->setSources(sources);
|
||||||
|
+
|
||||||
|
+ sink->addRoute(newRoute);
|
||||||
|
+
|
||||||
|
+ auto ret = routes.add(newRoute);
|
||||||
|
+ ALOGE("route add returned %zd", ret);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
template<>
|
||||||
|
std::variant<status_t, ModuleTraits::Element> PolicySerializer::deserialize<ModuleTraits>(
|
||||||
|
const xmlNode *cur, ModuleTraits::PtrSerializingCtx ctx)
|
||||||
|
@@ -710,6 +802,7 @@ std::variant<status_t, ModuleTraits::Element> PolicySerializer::deserialize<Modu
|
||||||
|
if (status != NO_ERROR) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
+ fixupQualcommBtScoRoute(routes, devicePorts, module.get());
|
||||||
|
module->setRoutes(routes);
|
||||||
|
|
||||||
|
for (const xmlNode *children = cur->xmlChildrenNode; children != NULL;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,94 @@
|
|||||||
|
From 76a5783fe2514d7b9d97faa8e221403c02fbcf6a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Tue, 1 Oct 2019 13:35:49 +0200
|
||||||
|
Subject: [PATCH 03/26] Add (partial, cam id is hardcoded) support for Asus ZF6
|
||||||
|
motor camera
|
||||||
|
|
||||||
|
Change-Id: Iea6e1370780a1d16f728748d1d948d092532d8fe
|
||||||
|
---
|
||||||
|
.../camera/libcameraservice/CameraService.cpp | 26 +++++++++++++++++++
|
||||||
|
.../camera/libcameraservice/CameraService.h | 3 +++
|
||||||
|
2 files changed, 29 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
|
||||||
|
index 80410ab463..b386046c19 100644
|
||||||
|
--- a/services/camera/libcameraservice/CameraService.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/CameraService.cpp
|
||||||
|
@@ -26,6 +26,7 @@
|
||||||
|
#include <ctime>
|
||||||
|
#include <string>
|
||||||
|
#include <sys/types.h>
|
||||||
|
+#include <sys/wait.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <poll.h>
|
||||||
|
@@ -143,6 +144,7 @@ const String16 CameraService::kWatchAllClientsFlag("all");
|
||||||
|
static std::set<String8> sServiceErrorEventSet;
|
||||||
|
|
||||||
|
CameraService::CameraService() :
|
||||||
|
+ mPhysicalFrontCamStatus(false),
|
||||||
|
mEventLog(DEFAULT_EVENT_LOG_LENGTH),
|
||||||
|
mNumberOfCameras(0),
|
||||||
|
mNumberOfCamerasWithoutSystemCamera(0),
|
||||||
|
@@ -1945,6 +1947,7 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const String8&
|
||||||
|
mServiceLock.lock();
|
||||||
|
} else {
|
||||||
|
// Otherwise, add client to active clients list
|
||||||
|
+ physicalFrontCam(cameraId == "1");
|
||||||
|
finishConnectLocked(client, partial, oomScoreOffset, systemNativeClient);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2063,6 +2066,27 @@ status_t CameraService::addOfflineClient(String8 cameraId, sp<BasicClient> offli
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void CameraService::physicalFrontCam(bool on) {
|
||||||
|
+ if(on == mPhysicalFrontCamStatus) return;
|
||||||
|
+ mPhysicalFrontCamStatus = on;
|
||||||
|
+
|
||||||
|
+ if(access("/dev/asusMotoDrv", F_OK) == 0) {
|
||||||
|
+ int pid = fork();
|
||||||
|
+ if(pid == 0) {
|
||||||
|
+ const char* cmd[] = {
|
||||||
|
+ "/system/bin/asus-motor",
|
||||||
|
+ "0",
|
||||||
|
+ NULL
|
||||||
|
+ };
|
||||||
|
+ cmd[1] = on ? "0" : "1";
|
||||||
|
+ execve("/system/bin/asus-motor", (char**)cmd, environ);
|
||||||
|
+ _exit(1);
|
||||||
|
+ } else {
|
||||||
|
+ waitpid(pid, NULL, 0);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
Status CameraService::turnOnTorchWithStrengthLevel(const String16& cameraId, int32_t torchStrength,
|
||||||
|
const sp<IBinder>& clientBinder) {
|
||||||
|
Mutex::Autolock lock(mServiceLock);
|
||||||
|
@@ -3318,6 +3342,8 @@ binder::Status CameraService::BasicClient::disconnect() {
|
||||||
|
}
|
||||||
|
mDisconnected = true;
|
||||||
|
|
||||||
|
+ sCameraService->physicalFrontCam(false);
|
||||||
|
+
|
||||||
|
sCameraService->removeByClient(this);
|
||||||
|
sCameraService->logDisconnected(mCameraIdStr, mClientPid, String8(mClientPackageName));
|
||||||
|
sCameraService->mCameraProviderManager->removeRef(CameraProviderManager::DeviceMode::CAMERA,
|
||||||
|
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
|
||||||
|
index d96ea008bc..5b77139040 100644
|
||||||
|
--- a/services/camera/libcameraservice/CameraService.h
|
||||||
|
+++ b/services/camera/libcameraservice/CameraService.h
|
||||||
|
@@ -226,6 +226,9 @@ public:
|
||||||
|
// Register an offline client for a given active camera id
|
||||||
|
status_t addOfflineClient(String8 cameraId, sp<BasicClient> offlineClient);
|
||||||
|
|
||||||
|
+ bool mPhysicalFrontCamStatus;
|
||||||
|
+ void physicalFrontCam(bool on);
|
||||||
|
+
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
// Client functionality
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
From 931ab68c6977b02c8a65ebf63e853b03edcd7145 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Cai <peter@typeblog.net>
|
||||||
|
Date: Wed, 24 Aug 2022 15:42:39 -0400
|
||||||
|
Subject: [PATCH 04/26] APM: Optionally force-load audio policy for system-side
|
||||||
|
bt audio HAL
|
||||||
|
|
||||||
|
Required to support our system-side bt audio implementation, i.e.
|
||||||
|
`sysbta`.
|
||||||
|
|
||||||
|
Co-authored-by: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Change-Id: I279fff541a531f922f3fa55b8f14d00237db59ff
|
||||||
|
---
|
||||||
|
.../managerdefinitions/src/Serializer.cpp | 25 +++++++++++++++++++
|
||||||
|
1 file changed, 25 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
index 2f0ce75e47..b35d34a599 100644
|
||||||
|
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
@@ -25,6 +25,7 @@
|
||||||
|
#include <libxml/parser.h>
|
||||||
|
#include <libxml/xinclude.h>
|
||||||
|
#include <media/convert.h>
|
||||||
|
+#include <cutils/properties.h>
|
||||||
|
#include <utils/Log.h>
|
||||||
|
#include <utils/StrongPointer.h>
|
||||||
|
#include <utils/Errors.h>
|
||||||
|
@@ -983,6 +984,30 @@ status_t PolicySerializer::deserialize(const char *configFile, AudioPolicyConfig
|
||||||
|
if (status != NO_ERROR) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // Remove modules called bluetooth, bluetooth_qti or a2dp, and inject our own
|
||||||
|
+ if (property_get_bool("persist.bluetooth.system_audio_hal.enabled", false)) {
|
||||||
|
+ for (auto it = modules.begin(); it != modules.end(); it++) {
|
||||||
|
+ const char *name = (*it)->getName();
|
||||||
|
+ if (strcmp(name, "a2dp") == 0 ||
|
||||||
|
+ strcmp(name, "a2dpsink") == 0 ||
|
||||||
|
+ strcmp(name, "bluetooth") == 0 ||
|
||||||
|
+ strcmp(name, "bluetooth_qti") == 0) {
|
||||||
|
+
|
||||||
|
+ ALOGE("Removed module %s\n", name);
|
||||||
|
+ it = modules.erase(it);
|
||||||
|
+ }
|
||||||
|
+ if (it == modules.end()) break;
|
||||||
|
+ }
|
||||||
|
+ const char* a2dpFileName = "/system/etc/sysbta_audio_policy_configuration.xml";
|
||||||
|
+ if (version == "7.0")
|
||||||
|
+ a2dpFileName = "/system/etc/sysbta_audio_policy_configuration_7_0.xml";
|
||||||
|
+ auto doc = make_xmlUnique(xmlParseFile(a2dpFileName));
|
||||||
|
+ xmlNodePtr root = xmlDocGetRootElement(doc.get());
|
||||||
|
+ auto maybeA2dpModule = deserialize<ModuleTraits>(root, config);
|
||||||
|
+ modules.add(std::get<1>(maybeA2dpModule));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
config->setHwModules(modules);
|
||||||
|
|
||||||
|
// Global Configuration
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,79 @@
|
|||||||
|
From 14ee2d68ff8ebca3b91c6700f292c26f19cd8949 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Cai <peter@typeblog.net>
|
||||||
|
Date: Thu, 25 Aug 2022 13:30:29 -0400
|
||||||
|
Subject: [PATCH 05/26] APM: Remove A2DP audio ports from the primary HAL
|
||||||
|
|
||||||
|
These ports defined in the primary HAL are intended for A2DP offloading,
|
||||||
|
however they do not work in general on GSIs, and will interfere with
|
||||||
|
sysbta, the system-side generic bluetooth audio implementation.
|
||||||
|
|
||||||
|
Remove them as we parse the policy XML.
|
||||||
|
|
||||||
|
Co-authored-by: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Change-Id: I3305594a17285da113167b419543543f0ef71122
|
||||||
|
---
|
||||||
|
.../managerdefinitions/src/Serializer.cpp | 26 ++++++++++++++++---
|
||||||
|
1 file changed, 22 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
index b35d34a599..456c5a935c 100644
|
||||||
|
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
@@ -26,6 +26,7 @@
|
||||||
|
#include <libxml/xinclude.h>
|
||||||
|
#include <media/convert.h>
|
||||||
|
#include <cutils/properties.h>
|
||||||
|
+#include <system/audio.h>
|
||||||
|
#include <utils/Log.h>
|
||||||
|
#include <utils/StrongPointer.h>
|
||||||
|
#include <utils/Errors.h>
|
||||||
|
@@ -334,11 +335,8 @@ status_t PolicySerializer::deserializeCollection(const xmlNode *cur,
|
||||||
|
Trait::collectionTag);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
- } else if (mIgnoreVendorExtensions && std::get<status_t>(maybeElement) == NO_INIT) {
|
||||||
|
- // Skip a vendor extension element.
|
||||||
|
- } else {
|
||||||
|
- return BAD_VALUE;
|
||||||
|
}
|
||||||
|
+ // Ignore elements that failed to parse, e.g. routes with invalid sinks
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!xmlStrcmp(cur->name, reinterpret_cast<const xmlChar*>(Trait::tag))) {
|
||||||
|
@@ -771,6 +769,7 @@ std::variant<status_t, ModuleTraits::Element> PolicySerializer::deserialize<Modu
|
||||||
|
ALOGE("%s: No %s found", __func__, Attributes::name);
|
||||||
|
return BAD_VALUE;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
uint32_t versionMajor = 0, versionMinor = 0;
|
||||||
|
std::string versionLiteral = getXmlAttribute(cur, Attributes::version);
|
||||||
|
if (!versionLiteral.empty()) {
|
||||||
|
@@ -796,6 +795,25 @@ std::variant<status_t, ModuleTraits::Element> PolicySerializer::deserialize<Modu
|
||||||
|
if (status != NO_ERROR) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
+ bool shouldEraseA2DP = name == "primary" && property_get_bool("persist.bluetooth.system_audio_hal.enabled", false);
|
||||||
|
+ if (shouldEraseA2DP) {
|
||||||
|
+ // Having A2DP ports in the primary audio HAL module will interfere with sysbta
|
||||||
|
+ // so remove them here. Note that we do not need to explicitly remove the
|
||||||
|
+ // corresponding routes below, because routes with invalid sinks will be ignored
|
||||||
|
+ auto iter = devicePorts.begin();
|
||||||
|
+ while (iter != devicePorts.end()) {
|
||||||
|
+ auto port = *iter;
|
||||||
|
+ auto type = port->type();
|
||||||
|
+ if (type == AUDIO_DEVICE_OUT_BLUETOOTH_A2DP
|
||||||
|
+ || type == AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES
|
||||||
|
+ || type == AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER) {
|
||||||
|
+ ALOGE("Erasing A2DP device port %s", port->getTagName().c_str());
|
||||||
|
+ iter = devicePorts.erase(iter);
|
||||||
|
+ } else {
|
||||||
|
+ iter++;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
module->setDeclaredDevices(devicePorts);
|
||||||
|
|
||||||
|
RouteTraits::Collection routes;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,55 @@
|
|||||||
|
From 3955d4df29c79d35948995b150b81326f7ae1b46 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Cai <peter@typeblog.net>
|
||||||
|
Date: Thu, 23 Jan 2020 11:13:43 +0800
|
||||||
|
Subject: [PATCH 06/26] audiopolicy: try again with trimmed audio port name if
|
||||||
|
not found
|
||||||
|
|
||||||
|
* In Spreadtrum BSP, some audio routes may contain ports with extra
|
||||||
|
spaces at the beginning and the end, causing audiopolicy to refuse to
|
||||||
|
load and leading to broken audio.
|
||||||
|
|
||||||
|
* Fix this by retrying with trimmed port name when not found. Do not
|
||||||
|
use trimmed name all the time because a white space is a valid
|
||||||
|
character in port name, and we cannot be sure nobody is using it for
|
||||||
|
legitimite purposes.
|
||||||
|
|
||||||
|
Change-Id: I993708b28e8404bc8c483d71a850ac69382231bd
|
||||||
|
---
|
||||||
|
.../common/managerdefinitions/src/Serializer.cpp | 14 ++++++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
index 456c5a935c..45ee70ab6e 100644
|
||||||
|
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
@@ -593,6 +593,17 @@ std::variant<status_t, DevicePortTraits::Element> PolicySerializer::deserialize<
|
||||||
|
return deviceDesc;
|
||||||
|
}
|
||||||
|
|
||||||
|
+char* trim(char * s) {
|
||||||
|
+ int l = strlen(s);
|
||||||
|
+
|
||||||
|
+ if (l > 0) {
|
||||||
|
+ while (isspace(s[l - 1])) --l;
|
||||||
|
+ while (*s && isspace(*s)) ++s, --l;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return strndup(s, l);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
template<>
|
||||||
|
std::variant<status_t, RouteTraits::Element> PolicySerializer::deserialize<RouteTraits>(
|
||||||
|
const xmlNode *cur, RouteTraits::PtrSerializingCtx ctx)
|
||||||
|
@@ -640,6 +651,9 @@ std::variant<status_t, RouteTraits::Element> PolicySerializer::deserialize<Route
|
||||||
|
while (devTag != NULL) {
|
||||||
|
if (strlen(devTag) != 0) {
|
||||||
|
sp<PolicyAudioPort> source = ctx->findPortByTagName(devTag);
|
||||||
|
+ if (source == NULL) {
|
||||||
|
+ source = ctx->findPortByTagName(trim(devTag));
|
||||||
|
+ }
|
||||||
|
if (source == NULL && !mIgnoreVendorExtensions) {
|
||||||
|
ALOGE("%s: no source found with name=%s", __func__, devTag);
|
||||||
|
return BAD_VALUE;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
From 1deb067cc7b98962ebb0622804ba9b03d9c74d4a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Cai <peter@typeblog.net>
|
||||||
|
Date: Wed, 1 Jun 2022 16:56:46 -0400
|
||||||
|
Subject: [PATCH 07/26] camera: Implement property to override default camera
|
||||||
|
|
||||||
|
Complement to the frameworks/base patch.
|
||||||
|
|
||||||
|
Change-Id: I002bfa974bafc2cc01365eeea31c7a5dcb5a2028
|
||||||
|
---
|
||||||
|
.../common/CameraProviderManager.cpp | 22 +++++++++++++++++++
|
||||||
|
1 file changed, 22 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
index 6ef16b3ca8..3dd15d9fe9 100644
|
||||||
|
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
@@ -36,6 +36,7 @@
|
||||||
|
#include <functional>
|
||||||
|
#include <camera_metadata_hidden.h>
|
||||||
|
#include <android-base/parseint.h>
|
||||||
|
+#include <android-base/properties.h>
|
||||||
|
#include <android-base/logging.h>
|
||||||
|
#include <cutils/properties.h>
|
||||||
|
#include <hwbinder/IPCThreadState.h>
|
||||||
|
@@ -205,6 +206,15 @@ std::vector<std::string> CameraProviderManager::getCameraDeviceIds() const {
|
||||||
|
deviceIds.push_back(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ int32_t altPrimaryCamera = property_get_int32("persist.sys.alt_primary_camera", 0);
|
||||||
|
+
|
||||||
|
+ if (altPrimaryCamera != 0 && deviceIds.size() > (size_t) altPrimaryCamera) {
|
||||||
|
+ const std::string origPrimary = deviceIds[0];
|
||||||
|
+ deviceIds[0] = deviceIds[altPrimaryCamera];
|
||||||
|
+ deviceIds[altPrimaryCamera] = origPrimary;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return deviceIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -271,6 +281,18 @@ std::vector<std::string> CameraProviderManager::getAPI1CompatibleCameraDeviceIds
|
||||||
|
std::sort(systemDeviceIds.begin(), systemDeviceIds.end(), sortFunc);
|
||||||
|
deviceIds.insert(deviceIds.end(), publicDeviceIds.begin(), publicDeviceIds.end());
|
||||||
|
deviceIds.insert(deviceIds.end(), systemDeviceIds.begin(), systemDeviceIds.end());
|
||||||
|
+
|
||||||
|
+ // Default camera ID hack should match with android.hardware.camera2.CameraManager.sortCameraIds
|
||||||
|
+ // Note that the alt primary camera may not be available here due to filterLogicalCameraIdsLocked()
|
||||||
|
+ // in which case we will just ignore it.
|
||||||
|
+ int altPrimaryCameraId = base::GetIntProperty("persist.sys.alt_primary_camera", -1);
|
||||||
|
+
|
||||||
|
+ if (altPrimaryCameraId > 0 && altPrimaryCameraId < (int) deviceIds.size()) {
|
||||||
|
+ std::string origPrimary = deviceIds[0];
|
||||||
|
+ deviceIds[0] = deviceIds[altPrimaryCameraId];
|
||||||
|
+ deviceIds[altPrimaryCameraId] = origPrimary;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return deviceIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
From cdfd6eea207f2cec68e46949895a78075dbbe636 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Mon, 13 Apr 2020 21:01:16 +0200
|
||||||
|
Subject: [PATCH 08/26] There are three SCO devices. Fallback from one to the
|
||||||
|
others if needed
|
||||||
|
|
||||||
|
Change-Id: I414dcb6b154855c00cb8520b23dc1069827864b2
|
||||||
|
---
|
||||||
|
.../managerdefinitions/src/HwModule.cpp | 21 +++++++++++++++++++
|
||||||
|
1 file changed, 21 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
|
||||||
|
index 418b7ebe88..a97f76be59 100644
|
||||||
|
--- a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
|
||||||
|
+++ b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
|
||||||
|
@@ -311,6 +311,27 @@ sp<HwModule> HwModuleCollection::getModuleForDeviceType(audio_devices_t type,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ //We didn't find one? Ok but all SCOs are equivalent surely?
|
||||||
|
+ if(type == AUDIO_DEVICE_OUT_BLUETOOTH_SCO ||
|
||||||
|
+ type == AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET ||
|
||||||
|
+ type == AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT) {
|
||||||
|
+ ALOGE("Fallback SCO");
|
||||||
|
+ if(type != AUDIO_DEVICE_OUT_BLUETOOTH_SCO) {
|
||||||
|
+ auto ret = getModuleForDeviceType(AUDIO_DEVICE_OUT_BLUETOOTH_SCO, encodedFormat);
|
||||||
|
+ ALOGE("Fallback SCO simple? %s", (ret != nullptr) ? "yes" : "no");
|
||||||
|
+ if(ret != nullptr) return ret;
|
||||||
|
+ }
|
||||||
|
+ if(type != AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET) {
|
||||||
|
+ auto ret = getModuleForDeviceType(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, encodedFormat);
|
||||||
|
+ ALOGE("Fallback SCO headset? %s", (ret != nullptr) ? "yes" : "no");
|
||||||
|
+ if(ret != nullptr) return ret;
|
||||||
|
+ }
|
||||||
|
+ if(type != AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT) {
|
||||||
|
+ auto ret = getModuleForDeviceType(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, encodedFormat);
|
||||||
|
+ ALOGE("Fallback SCO carkit? %s", (ret != nullptr) ? "yes" : "no");
|
||||||
|
+ if(ret != nullptr) return ret;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,80 @@
|
|||||||
|
From 0a037727edf7f2fed2aab9ae61a4d09a8addd226 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Thu, 14 May 2020 19:54:55 +0200
|
||||||
|
Subject: [PATCH 09/26] Add persist.sys.phh.samsung.camera_ids property to
|
||||||
|
access hidden Samsung cameras
|
||||||
|
|
||||||
|
Change-Id: I2c7bf535272acc28ed2277e96c78ddd28a0b4593
|
||||||
|
---
|
||||||
|
services/camera/libcameraservice/Android.bp | 1 +
|
||||||
|
.../common/hidl/HidlProviderInfo.cpp | 14 ++++++++++++--
|
||||||
|
2 files changed, 13 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/Android.bp b/services/camera/libcameraservice/Android.bp
|
||||||
|
index 981c56942c..7c4e4d9bcd 100644
|
||||||
|
--- a/services/camera/libcameraservice/Android.bp
|
||||||
|
+++ b/services/camera/libcameraservice/Android.bp
|
||||||
|
@@ -164,6 +164,7 @@ cc_library_shared {
|
||||||
|
"android.hardware.camera.device@3.6",
|
||||||
|
"android.hardware.camera.device@3.7",
|
||||||
|
"android.hardware.camera.device-V1-ndk",
|
||||||
|
+ "vendor.samsung.hardware.camera.provider@3.0",
|
||||||
|
"media_permission-aidl-cpp",
|
||||||
|
],
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp b/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
|
||||||
|
index d60565fb68..b02cf26445 100644
|
||||||
|
--- a/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#include <utils/Trace.h>
|
||||||
|
|
||||||
|
#include <android/hardware/camera/device/3.7/ICameraDevice.h>
|
||||||
|
+#include <vendor/samsung/hardware/camera/provider/3.0/ISehCameraProvider.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const bool kEnableLazyHal(property_get_bool("ro.camera.enableLazyHal", false));
|
||||||
|
@@ -134,6 +135,7 @@ status_t HidlProviderInfo::initializeHidlProvider(
|
||||||
|
mMinorVersion = 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
// We need to check again since cast2_6.isOk() succeeds even if the provider
|
||||||
|
// version isn't actually 2.6.
|
||||||
|
if (interface2_6 == nullptr){
|
||||||
|
@@ -170,6 +172,9 @@ status_t HidlProviderInfo::initializeHidlProvider(
|
||||||
|
return mapToStatusT(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ auto samsungCast = vendor::samsung::hardware::camera::provider::V3_0::ISehCameraProvider::castFrom(interface);
|
||||||
|
+ auto samsungProvider = samsungCast.isOk() ? static_cast<sp<vendor::samsung::hardware::camera::provider::V3_0::ISehCameraProvider>>(samsungCast) : nullptr;
|
||||||
|
+
|
||||||
|
hardware::Return<bool> linked = interface->linkToDeath(this, /*cookie*/ mId);
|
||||||
|
if (!linked.isOk()) {
|
||||||
|
ALOGE("%s: Transaction error in linking to camera provider '%s' death: %s",
|
||||||
|
@@ -200,7 +205,7 @@ status_t HidlProviderInfo::initializeHidlProvider(
|
||||||
|
|
||||||
|
// Get initial list of camera devices, if any
|
||||||
|
std::vector<std::string> devices;
|
||||||
|
- hardware::Return<void> ret = interface->getCameraIdList([&status, this, &devices](
|
||||||
|
+ auto cb = [&status, this, &devices](
|
||||||
|
Status idStatus,
|
||||||
|
const hardware::hidl_vec<hardware::hidl_string>& cameraDeviceNames) {
|
||||||
|
status = idStatus;
|
||||||
|
@@ -217,7 +222,12 @@ status_t HidlProviderInfo::initializeHidlProvider(
|
||||||
|
mProviderPublicCameraIds.push_back(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- } });
|
||||||
|
+ } };
|
||||||
|
+ hardware::Return<void> ret;
|
||||||
|
+ if(samsungProvider != nullptr && property_get_bool("persist.sys.phh.samsung.camera_ids", false))
|
||||||
|
+ ret = samsungProvider->sehGetCameraIdList(cb);
|
||||||
|
+ else
|
||||||
|
+ ret = interface->getCameraIdList(cb);
|
||||||
|
if (!ret.isOk()) {
|
||||||
|
ALOGE("%s: Transaction error in getting camera ID list from provider '%s': %s",
|
||||||
|
__FUNCTION__, mProviderName.c_str(), linked.description().c_str());
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From ce5c36ff7b82f4ef0add790744795d9f6f2e06e7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Emilian Peev <epeev@google.com>
|
||||||
|
Date: Fri, 5 Aug 2022 17:28:06 -0700
|
||||||
|
Subject: [PATCH 10/26] Camera: Avoid unnecessary close of buffer acquire fence
|
||||||
|
fds
|
||||||
|
|
||||||
|
According to the gralloc lock documentation:
|
||||||
|
The ownership of acquireFence is always transferred to the callee, even
|
||||||
|
on errors.
|
||||||
|
|
||||||
|
Bug: 241455881
|
||||||
|
Test: Manual using camera application
|
||||||
|
Change-Id: Ieec34b54aaa7f0d773eccb593c3daaa3e41bae0b
|
||||||
|
Merged-In: Ieec34b54aaa7f0d773eccb593c3daaa3e41bae0b
|
||||||
|
---
|
||||||
|
.../camera/libcameraservice/device3/Camera3OutputStream.cpp | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
|
||||||
|
index 69163a5620..e66624dc6e 100644
|
||||||
|
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
|
||||||
|
@@ -331,7 +331,7 @@ status_t Camera3OutputStream::fixUpHidlJpegBlobHeader(ANativeWindowBuffer* anwBu
|
||||||
|
status_t res =
|
||||||
|
gbLocker.lockAsync(
|
||||||
|
GraphicBuffer::USAGE_SW_READ_OFTEN | GraphicBuffer::USAGE_SW_WRITE_RARELY,
|
||||||
|
- &mapped, fenceFd.get());
|
||||||
|
+ &mapped, fenceFd.release());
|
||||||
|
if (res != OK) {
|
||||||
|
ALOGE("%s: Failed to lock the buffer: %s (%d)", __FUNCTION__, strerror(-res), res);
|
||||||
|
return res;
|
||||||
|
@@ -1308,7 +1308,7 @@ void Camera3OutputStream::dumpImageToDisk(nsecs_t timestamp,
|
||||||
|
void* mapped = nullptr;
|
||||||
|
base::unique_fd fenceFd(dup(fence));
|
||||||
|
status_t res = graphicBuffer->lockAsync(GraphicBuffer::USAGE_SW_READ_OFTEN, &mapped,
|
||||||
|
- fenceFd.get());
|
||||||
|
+ fenceFd.release());
|
||||||
|
if (res != OK) {
|
||||||
|
ALOGE("%s: Failed to lock the buffer: %s (%d)", __FUNCTION__, strerror(-res), res);
|
||||||
|
return;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
From 22bcca382ca3b924606970b995d51974c6f05103 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Tue, 19 May 2020 14:01:14 +0200
|
||||||
|
Subject: [PATCH 11/26] Add a property to force camera timestamp source
|
||||||
|
|
||||||
|
Some devices wrongly report their timesource
|
||||||
|
Camera's timesource can either be CLOCK_MONOTONIC, or CLOCK_BOOTTIME
|
||||||
|
The former doesn't increment in sleep, while the later does.
|
||||||
|
There is a camera HAL property for that, though some devices don't
|
||||||
|
report it properly.
|
||||||
|
|
||||||
|
This issue happens on Xiaomi Redmi 7A, it needs to force the value to 1
|
||||||
|
|
||||||
|
Add a property persist.sys.phh.camera.force_timestampsource to force
|
||||||
|
timestamp source.
|
||||||
|
---
|
||||||
|
.../libcameraservice/device3/Camera3Device.cpp | 12 ++++++++++--
|
||||||
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
|
||||||
|
index 7c2f34f46e..6ee3b3e5d8 100644
|
||||||
|
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
|
||||||
|
@@ -193,8 +193,16 @@ status_t Camera3Device::initializeCommonLocked() {
|
||||||
|
mTimestampOffset = getMonoToBoottimeOffset();
|
||||||
|
camera_metadata_entry timestampSource =
|
||||||
|
mDeviceInfo.find(ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE);
|
||||||
|
- if (timestampSource.count > 0 && timestampSource.data.u8[0] ==
|
||||||
|
- ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME) {
|
||||||
|
+ int timestampSourceValue = 0;
|
||||||
|
+ if ((timestampSource.count > 0 && timestampSource.data.u8[0] ==
|
||||||
|
+ ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME)) {
|
||||||
|
+ timestampSourceValue = 1;
|
||||||
|
+ }
|
||||||
|
+ int forceTimestampSource = property_get_int32("persist.sys.phh.camera.force_timestampsource", -1);
|
||||||
|
+ //Don't override if it's -1, default value
|
||||||
|
+ if(forceTimestampSource == 0) timestampSourceValue = 0;
|
||||||
|
+ if(forceTimestampSource == 1) timestampSourceValue = 1;
|
||||||
|
+ if (timestampSourceValue == 1) {
|
||||||
|
mDeviceTimeBaseIsRealtime = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,87 @@
|
|||||||
|
From 29802ae4be55eeb7a309b7439f0eecf8ecfcdc45 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Tue, 24 Apr 2018 00:14:28 +0200
|
||||||
|
Subject: [PATCH 12/26] FIH devices: Fix "Earpiece" audio output
|
||||||
|
|
||||||
|
On some FIH devices (confirmed on Razer, and probably on Aquos SS2),
|
||||||
|
Earpiece is not listed in attachedDevices, and devicePort's profile
|
||||||
|
mentions it is AUDIO_CHANNEL_IN_MONO, instead of AUDIO_CHANNEL_OUT_MONO.
|
||||||
|
|
||||||
|
Detect such cases (output device, but got only AUDIO_CHANNEL_IN_MONO),
|
||||||
|
and fix both channelMasks and attachedDevices
|
||||||
|
|
||||||
|
Change-Id: I4a88ba6d34d0fcd346eeea2ca903772f0271040a
|
||||||
|
---
|
||||||
|
.../managerdefinitions/src/Serializer.cpp | 27 ++++++++++++++++---
|
||||||
|
1 file changed, 24 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
index 45ee70ab6e..2bf5705512 100644
|
||||||
|
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
@@ -416,23 +416,32 @@ std::variant<status_t, AudioGainTraits::Element> PolicySerializer::deserialize<A
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+static bool fixedEarpieceChannels = false;
|
||||||
|
template<>
|
||||||
|
std::variant<status_t, AudioProfileTraits::Element>
|
||||||
|
PolicySerializer::deserialize<AudioProfileTraits>(
|
||||||
|
- const xmlNode *cur, AudioProfileTraits::PtrSerializingCtx /*serializingContext*/)
|
||||||
|
+ const xmlNode *cur, AudioProfileTraits::PtrSerializingCtx serializingContext)
|
||||||
|
{
|
||||||
|
using Attributes = AudioProfileTraits::Attributes;
|
||||||
|
+ bool isOutput = serializingContext != nullptr;
|
||||||
|
|
||||||
|
std::string samplingRates = getXmlAttribute(cur, Attributes::samplingRates);
|
||||||
|
std::string format = getXmlAttribute(cur, Attributes::format);
|
||||||
|
std::string channels = getXmlAttribute(cur, Attributes::channelMasks);
|
||||||
|
+ ChannelTraits::Collection channelsMask = channelMasksFromString(channels, ",");
|
||||||
|
+
|
||||||
|
+ //Some Foxconn devices have wrong earpiece channel mask, leading to no channel mask
|
||||||
|
+ if(channelsMask.size() == 1 && *channelsMask.begin() == AUDIO_CHANNEL_IN_MONO && isOutput) {
|
||||||
|
+ fixedEarpieceChannels = true;
|
||||||
|
+ channelsMask = channelMasksFromString("AUDIO_CHANNEL_OUT_MONO", ",");
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (mIgnoreVendorExtensions && maybeVendorExtension(format)) {
|
||||||
|
ALOGI("%s: vendor extension format \"%s\" skipped", __func__, format.c_str());
|
||||||
|
return NO_INIT;
|
||||||
|
}
|
||||||
|
AudioProfileTraits::Element profile = new AudioProfile(formatFromString(format, gDynamicFormat),
|
||||||
|
- channelMasksFromString(channels, mChannelMasksSeparator.c_str()),
|
||||||
|
+ channelsMask,
|
||||||
|
samplingRatesFromString(samplingRates, mSamplingRatesSeparator.c_str()));
|
||||||
|
|
||||||
|
profile->setDynamicFormat(profile->getFormat() == gDynamicFormat);
|
||||||
|
@@ -571,7 +580,11 @@ std::variant<status_t, DevicePortTraits::Element> PolicySerializer::deserialize<
|
||||||
|
new DeviceDescriptor(type, name, address, encodedFormats);
|
||||||
|
|
||||||
|
AudioProfileTraits::Collection profiles;
|
||||||
|
- status_t status = deserializeCollection<AudioProfileTraits>(cur, &profiles, NULL);
|
||||||
|
+ status_t status;
|
||||||
|
+ if(audio_is_output_devices(type))
|
||||||
|
+ status = deserializeCollection<AudioProfileTraits>(cur, &profiles, (AudioProfileTraits::PtrSerializingCtx)1);
|
||||||
|
+ else
|
||||||
|
+ status = deserializeCollection<AudioProfileTraits>(cur, &profiles, NULL);
|
||||||
|
if (status != NO_ERROR) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
@@ -882,6 +895,14 @@ std::variant<status_t, ModuleTraits::Element> PolicySerializer::deserialize<Modu
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if(fixedEarpieceChannels) {
|
||||||
|
+ sp<DeviceDescriptor> device =
|
||||||
|
+ module->getDeclaredDevices().getDeviceFromTagName("Earpiece");
|
||||||
|
+ if(device != 0)
|
||||||
|
+ ctx->addDevice(device);
|
||||||
|
+ fixedEarpieceChannels = false;
|
||||||
|
+ }
|
||||||
|
return module;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
From 83d18a9021866184f0dacf407f684cf0a6575a6e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Sat, 12 Sep 2020 12:32:50 +0200
|
||||||
|
Subject: [PATCH 13/26] No longer make re-assigning legacy audio groups fatal.
|
||||||
|
Mi9 declares AUDIO_STREAM_PATCH and AUDIO_STREAM_REROUTING which is defined
|
||||||
|
by framework too
|
||||||
|
|
||||||
|
Change-Id: I794fe22d63a8af705be4f5f09b9879ecaab3eae5
|
||||||
|
---
|
||||||
|
services/audiopolicy/engine/common/src/EngineBase.cpp | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/engine/common/src/EngineBase.cpp b/services/audiopolicy/engine/common/src/EngineBase.cpp
|
||||||
|
index 99507eee5d..e31cc21b17 100644
|
||||||
|
--- a/services/audiopolicy/engine/common/src/EngineBase.cpp
|
||||||
|
+++ b/services/audiopolicy/engine/common/src/EngineBase.cpp
|
||||||
|
@@ -222,9 +222,9 @@ engineConfig::ParsingResult EngineBase::loadAudioPolicyEngineConfig()
|
||||||
|
}
|
||||||
|
if (group.stream != AUDIO_STREAM_DEFAULT) {
|
||||||
|
// A legacy stream can be assigned once to a volume group
|
||||||
|
- LOG_ALWAYS_FATAL_IF(checkStreamForGroups(group.stream, mVolumeGroups),
|
||||||
|
- "stream %s already assigned to a volume group, "
|
||||||
|
- "review the configuration", toString(group.stream).c_str());
|
||||||
|
+ if(checkStreamForGroups(group.stream, mVolumeGroups)) {
|
||||||
|
+ ALOGE("stream %s already assigned to a volume group, review the configuration", toString(group.stream).c_str());
|
||||||
|
+ }
|
||||||
|
volumeGroup->addSupportedStream(group.stream);
|
||||||
|
}
|
||||||
|
addSupportedAttributesToGroup(group, volumeGroup, strategy);
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From a5cddb1ec7a5b8bb8a6b141fe56d9364d222eaa6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Mon, 21 Dec 2020 20:19:11 +0100
|
||||||
|
Subject: [PATCH 14/26] Make camera IDs filter-out optional
|
||||||
|
|
||||||
|
Nowadays most people have Camera 2 apps, and would like to have all
|
||||||
|
cameras, rather than limit which cameras are available.
|
||||||
|
Add a property for that.
|
||||||
|
---
|
||||||
|
.../camera/libcameraservice/common/CameraProviderManager.cpp | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
index 3dd15d9fe9..93af10a0e7 100644
|
||||||
|
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
@@ -255,7 +255,9 @@ std::vector<std::string> CameraProviderManager::getAPI1CompatibleCameraDeviceIds
|
||||||
|
// API1 app doesn't handle logical and physical camera devices well. So
|
||||||
|
// for each camera facing, only take the first id advertised by HAL in
|
||||||
|
// all [logical, physical1, physical2, ...] id combos, and filter out the rest.
|
||||||
|
- filterLogicalCameraIdsLocked(providerDeviceIds);
|
||||||
|
+ if(!property_get_bool("persist.sys.phh.include_all_cameras", false)) {
|
||||||
|
+ filterLogicalCameraIdsLocked(providerDeviceIds);
|
||||||
|
+ }
|
||||||
|
collectDeviceIdsLocked(providerDeviceIds, publicDeviceIds, systemDeviceIds);
|
||||||
|
}
|
||||||
|
auto sortFunc =
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
From 254173b6f4964ff5dcdea58ef5c7e76069702577 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Sat, 13 Mar 2021 14:20:03 -0500
|
||||||
|
Subject: [PATCH 15/26] Support Samsung R multi-cams
|
||||||
|
|
||||||
|
Change-Id: If46f385e8dd16185cbf37ab083e6a1242e1d1555
|
||||||
|
---
|
||||||
|
services/camera/libcameraservice/Android.bp | 1 +
|
||||||
|
.../libcameraservice/common/hidl/HidlProviderInfo.cpp | 8 +++++++-
|
||||||
|
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/Android.bp b/services/camera/libcameraservice/Android.bp
|
||||||
|
index 7c4e4d9bcd..1faeb60ba7 100644
|
||||||
|
--- a/services/camera/libcameraservice/Android.bp
|
||||||
|
+++ b/services/camera/libcameraservice/Android.bp
|
||||||
|
@@ -165,6 +165,7 @@ cc_library_shared {
|
||||||
|
"android.hardware.camera.device@3.7",
|
||||||
|
"android.hardware.camera.device-V1-ndk",
|
||||||
|
"vendor.samsung.hardware.camera.provider@3.0",
|
||||||
|
+ "vendor.samsung.hardware.camera.provider@4.0",
|
||||||
|
"media_permission-aidl-cpp",
|
||||||
|
],
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp b/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
|
||||||
|
index b02cf26445..947ddba0ee 100644
|
||||||
|
--- a/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
|
||||||
|
@@ -28,6 +28,7 @@
|
||||||
|
|
||||||
|
#include <android/hardware/camera/device/3.7/ICameraDevice.h>
|
||||||
|
#include <vendor/samsung/hardware/camera/provider/3.0/ISehCameraProvider.h>
|
||||||
|
+#include <vendor/samsung/hardware/camera/provider/4.0/ISehCameraProvider.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const bool kEnableLazyHal(property_get_bool("ro.camera.enableLazyHal", false));
|
||||||
|
@@ -173,7 +174,9 @@ status_t HidlProviderInfo::initializeHidlProvider(
|
||||||
|
}
|
||||||
|
|
||||||
|
auto samsungCast = vendor::samsung::hardware::camera::provider::V3_0::ISehCameraProvider::castFrom(interface);
|
||||||
|
+ auto samsung40Cast = vendor::samsung::hardware::camera::provider::V4_0::ISehCameraProvider::castFrom(interface);
|
||||||
|
auto samsungProvider = samsungCast.isOk() ? static_cast<sp<vendor::samsung::hardware::camera::provider::V3_0::ISehCameraProvider>>(samsungCast) : nullptr;
|
||||||
|
+ auto samsung40Provider = samsung40Cast.isOk() ? static_cast<sp<vendor::samsung::hardware::camera::provider::V4_0::ISehCameraProvider>>(samsung40Cast) : nullptr;
|
||||||
|
|
||||||
|
hardware::Return<bool> linked = interface->linkToDeath(this, /*cookie*/ mId);
|
||||||
|
if (!linked.isOk()) {
|
||||||
|
@@ -211,6 +214,7 @@ status_t HidlProviderInfo::initializeHidlProvider(
|
||||||
|
status = idStatus;
|
||||||
|
if (status == Status::OK) {
|
||||||
|
for (auto& name : cameraDeviceNames) {
|
||||||
|
+ ALOGE("Listing camera ID %s", name.c_str());
|
||||||
|
uint16_t major, minor;
|
||||||
|
std::string type, id;
|
||||||
|
status_t res = parseDeviceName(name, &major, &minor, &type, &id);
|
||||||
|
@@ -224,7 +228,9 @@ status_t HidlProviderInfo::initializeHidlProvider(
|
||||||
|
}
|
||||||
|
} };
|
||||||
|
hardware::Return<void> ret;
|
||||||
|
- if(samsungProvider != nullptr && property_get_bool("persist.sys.phh.samsung.camera_ids", false))
|
||||||
|
+ if(samsung40Provider != nullptr && property_get_bool("persist.sys.phh.samsung.camera_ids", false))
|
||||||
|
+ ret = samsung40Provider->sehGetCameraIdList(cb);
|
||||||
|
+ else if(samsungProvider != nullptr && property_get_bool("persist.sys.phh.samsung.camera_ids", false))
|
||||||
|
ret = samsungProvider->sehGetCameraIdList(cb);
|
||||||
|
else
|
||||||
|
ret = interface->getCameraIdList(cb);
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user