Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4b44ea6 authored by Jason Chiu's avatar Jason Chiu
Browse files

[Catalyst] Migrate charging sound and vibration preference

Bug: 389131869
Test: atest ChargingSoundPreferenceTest, manual
Flag: com.android.settings.flags.catalyst_sound_screen_25q4
Change-Id: I62245598dc16d8e9d6f3a5155e7504b800b98475
parent 9c5683ec
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -171,7 +171,7 @@

    <!-- Charging sounds -->
    <SwitchPreferenceCompat
        android:key="charging_sounds"
        android:key="charging_sounds_enabled"
        android:title="@string/charging_sounds_title"
        android:order="-40"/>

+3 −0
Original line number Diff line number Diff line
@@ -123,6 +123,9 @@ const val KEY_DIAL_PAD_TONE = "dtmf_tone"
/** Contract key for the "Screen locking sound" setting. */
const val KEY_SCREEN_LOCKING_SOUND = "screen_locking_sound"

/** Contract key for the "Charging sounds and vibration" setting. */
const val KEY_CHARGING_SOUNDS = "charging_sounds"

/** Contract key for the "Remove animation" setting. */
const val KEY_REMOVE_ANIMATION = "remove_animation"

+60 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 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.notification

import android.app.settings.SettingsEnums.ACTION_CHARGING_SOUND
import android.content.Context
import android.provider.Settings.Secure.CHARGING_SOUNDS_ENABLED
import com.android.settings.DefaultValueStoreDelegate
import com.android.settings.R
import com.android.settings.contract.KEY_CHARGING_SOUNDS
import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settingslib.datastore.SettingsSecureStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
import com.android.settingslib.metadata.SwitchPreference

// LINT.IfChange
class ChargingSoundPreference :
    SwitchPreference(CHARGING_SOUNDS_ENABLED, R.string.charging_sounds_title),
    PreferenceActionMetricsProvider,
    PreferenceAvailabilityProvider {
    override val preferenceActionMetrics: Int
        get() = ACTION_CHARGING_SOUND

    override fun tags(context: Context) = arrayOf(KEY_CHARGING_SOUNDS)

    override fun storage(context: Context) =
        DefaultValueStoreDelegate(SettingsSecureStore.get(context), true)

    override fun isAvailable(context: Context) =
        context.resources.getBoolean(R.bool.config_show_charging_sounds)

    override fun getReadPermissions(context: Context) = SettingsSecureStore.getReadPermissions()

    override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
        ReadWritePermit.ALLOW

    override fun getWritePermissions(context: Context) = SettingsSecureStore.getWritePermissions()

    override fun getWritePermit(context: Context, callingPid: Int, callingUid: Int) =
        ReadWritePermit.ALLOW

    override val sensitivityLevel
        get() = SensitivityLevel.NO_SENSITIVITY
}
// LINT.ThenChange(ChargingSoundPreferenceController.java)
+5 −4
Original line number Diff line number Diff line
@@ -16,24 +16,24 @@

package com.android.settings.notification;

import static android.provider.Settings.Secure.CHARGING_SOUNDS_ENABLED;

import static com.android.settings.notification.SettingPref.TYPE_SECURE;

import android.content.Context;
import android.provider.Settings.Secure;

import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.core.lifecycle.Lifecycle;

// LINT.IfChange
public class ChargingSoundPreferenceController extends SettingPrefController {

    private static final String KEY_CHARGING_SOUNDS = "charging_sounds";

    public ChargingSoundPreferenceController(Context context, SettingsPreferenceFragment parent,
            Lifecycle lifecycle) {
        super(context, parent, lifecycle);
        mPreference = new SettingPref(
            TYPE_SECURE, KEY_CHARGING_SOUNDS, Secure.CHARGING_SOUNDS_ENABLED, DEFAULT_ON);
                TYPE_SECURE, CHARGING_SOUNDS_ENABLED, CHARGING_SOUNDS_ENABLED, DEFAULT_ON);
    }

    @Override
@@ -41,3 +41,4 @@ public class ChargingSoundPreferenceController extends SettingPrefController {
        return mContext.getResources().getBoolean(R.bool.config_show_charging_sounds);
    }
}
// LINT.ThenChange(ChargingSoundPreference.kt)
+1 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ open class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
            +DialPadTonePreference() order -50
            if (Flags.catalystSoundScreen25q4()) {
                +ScreenLockSoundPreference() order -45
                +ChargingSoundPreference() order -40
            }
        }

Loading