【AudioProfile】设置震动默认开启

本文详细介绍了如何在Android系统中通过AudioProfileSoundSettings配置震动模式,包括偏好设置、数据库操作及状态判断等关键步骤。通过XML文件定义checkbox的配置,并在代码中实现对震动状态的读取与设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述
使此处的震动默认开启,关于在情景模式下的设置在AudioProfileSoundSettings中
可以找到相关的preference mVibrate

private CheckBoxPreference mVibrate;

addPreferencesFromResource(R.xml.audio_profile_sound_settings);
private static final String KEY_VIBRATE = "vibrate";
mVibrate = (CheckBoxPreference) findPreference(KEY_VIBRATE);
if (mAudioProfile.mIsVibrate == AudioProfile.IS_VIBRATE) {
    mVibrate.setChecked(true);
} else {
mVibrate.setChecked(false)
}

查看xml文件中

<com.sprd.audioprofile.AudioProfileCheckBoxPrefrence
        android:key="vibrate"
        android:title="@string/vibrate_title"
        android:summary="@string/vibrate_summary"
        android:persistent="false" />

在此处设置defaultValue可以选择checkbox是否被选中
但是if (mAudioProfile.mIsVibrate == AudioProfile.IS_VIBRATE)这条判断语句中会对vibrate的状态进行是否选中的判断
mAudioProfile = AudioProfile.restoreProfileWithId(this, mEditId);
查看AudioProfile文件
public static final int IS_VIBRATE = 1;
查看AudioProfile.restoreProfileWithId方法
利用cursor获取contentresolver后,在restore()方法中进行查询改变值

p.mIsVibrate = cursor.getInt(cursor.getColumnIndex(AudioProfileColumns.IS_VIBRATE));

public static final String PROFILE_TABLE = "profiles";
public static final String AUTHORITY = "com.sprd.audioprofile.provider";
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + PROFILE_TABLE);

查询的contentprovider的uri

在AduioProfileProvider中,createProfileTable中
这里写图片描述
进行默认属性的写入

AudioProfileColumns.IS_VIBRATE + " INTEGER DEFAULT " + AudioProfile.NOT_VIBRATE + ", "

将其修改

AudioProfileColumns.IS_VIBRATE + " INTEGER DEFAULT " + AudioProfile.IS_VIBRATE + ", "

失败了

在frameworks/base/packages/settingsprovider/src/com/android/providers/setting下
DatabaseHelper.java
这里写图片描述
将vibrateWhenRinging 的值改为1.
编译SettingsProvider 和Settings 才可以成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值