diff --git a/app/src/main/java/me/phh/treble/app/LenovoSettings.kt b/app/src/main/java/me/phh/treble/app/LenovoSettings.kt
index 4dc724e97112..51b5fe4dd042 100644
--- a/app/src/main/java/me/phh/treble/app/LenovoSettings.kt
+++ b/app/src/main/java/me/phh/treble/app/LenovoSettings.kt
@@ -10,6 +10,10 @@ object LenovoSettings : Settings {
return Tools.vendorFp.contains("Lenovo") &&
(File(Lenovo.dtPanel).exists() || File(Lenovo.dtPanel_Y700_2023).exists())
}
+
+ fun bluetooth_fix(): Boolean {
+ return Tools.vendorFp.startsWith("Lenovo/TB322FC")
+ }
}
class LenovoSettingsFragment : SettingsFragment() {
diff --git a/app/src/main/java/me/phh/treble/app/Misc.kt b/app/src/main/java/me/phh/treble/app/Misc.kt
index 6ae24497f1d9..3424d8e97a7e 100644
--- a/app/src/main/java/me/phh/treble/app/Misc.kt
+++ b/app/src/main/java/me/phh/treble/app/Misc.kt
@@ -221,6 +221,10 @@ object Misc: EntryStartup {
val value = sp.getBoolean(key, false)
SystemProperties.set("persist.bluetooth.system_audio_hal.enabled", if (value) "true" else "false")
}
+ MiscSettings.a2dp_offload -> {
+ val value = sp.getBoolean(key, false)
+ SystemProperties.set("persist.bluetooth.enable_bt_offload", if (value) "true" else "false")
+ }
MiscSettings.noHwcomposer -> {
val value = sp.getBoolean(key, false)
enableHwcOverlay(!value)
@@ -367,7 +371,16 @@ object Misc: EntryStartup {
spListener.onSharedPreferenceChanged(sp, MiscSettings.forceCamera2APIHAL3)
if (! sp.contains(MiscSettings.headsetFix))
sp.edit().putBoolean(MiscSettings.headsetFix, HuaweiSettings.enabled()).commit()
- sp.edit().putBoolean(MiscSettings.sysbta, SystemProperties.getBoolean("persist.bluetooth.system_audio_hal.enabled", false)).apply()
+ if (LenovoSettings.bluetooth_fix() && ! sp.contains(MiscSettings.sysbta)) {
+ // Y700 gen4 and first time boot
+ Log.i("PHH", "Applying bluetooth fix")
+ sp.edit().putBoolean(MiscSettings.sysbta, false).apply()
+ sp.edit().putBoolean(MiscSettings.a2dp_offload, true).apply()
+ } else {
+ Log.i("PHH", "Don't apply bluetooth fix")
+ sp.edit().putBoolean(MiscSettings.sysbta, SystemProperties.getBoolean("persist.bluetooth.system_audio_hal.enabled", false)).apply()
+ sp.edit().putBoolean(MiscSettings.a2dp_offload, SystemProperties.getBoolean("persist.bluetooth.enable_bt_offload", false)).apply()
+ }
spListener.onSharedPreferenceChanged(sp, MiscSettings.headsetFix)
spListener.onSharedPreferenceChanged(sp, MiscSettings.bluetooth)
spListener.onSharedPreferenceChanged(sp, MiscSettings.displayFps)
diff --git a/app/src/main/java/me/phh/treble/app/MiscSettings.kt b/app/src/main/java/me/phh/treble/app/MiscSettings.kt
index 030494bc8f26..ba85beeac128 100644
--- a/app/src/main/java/me/phh/treble/app/MiscSettings.kt
+++ b/app/src/main/java/me/phh/treble/app/MiscSettings.kt
@@ -29,6 +29,7 @@ object MiscSettings : Settings {
val disableFastAudio = "key_misc_disable_fast_audio"
val cameraTimestampOverride = "key_misc_camera_timestamp"
val sysbta = "key_misc_dynamic_sysbta"
+ val a2dp_offload = "key_misc_a2dp_offload"
val noHwcomposer = "key_misc_no_hwcomposer"
val storageFUSE = "key_misc_storage_fuse"
val backlightScale = "key_misc_backlight_scale"
diff --git a/app/src/main/res/xml/pref_misc.xml b/app/src/main/res/xml/pref_misc.xml
index bb468320c44d..23fb674e2a8a 100644
--- a/app/src/main/res/xml/pref_misc.xml
+++ b/app/src/main/res/xml/pref_misc.xml
@@ -146,6 +146,11 @@
android:defaultValue="true"
android:key="key_misc_dynamic_sysbta"
android:title="Use System Wide BT HAL" />
+