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" /> +