Android MTKCamera SharedPreferences配置全局设置项

来源:互联网 发布:浏览器端口设置在哪里 编辑:程序博客网 时间:2024/06/04 01:06

在Mtk平台的相机中,设置项都保存在SharedPreferences文件中,文件名称可以分为几种情况:

文件名 描述 com.mediatek.camera_preferences.xml 全局设置的配置文件 com.mediatek.camera_preferences_0.xml 后摄 com.mediatek.camera_preferences_1.xml 前摄 com.mediatek.camera_preferences_secure0.xml 安全模式下后摄 com.mediatek.camera_preferences_secure1.xml 安全模式下前摄

1. 配置文件文件名的由来

这点我们可以从ComboPreferences.java中看出

\\ src\com\android\camera\ComboPreferences.javapublic class ComboPreferences implements SharedPreferences, OnSharedPreferenceChangeListener {    public ComboPreferences(Context context, boolean isSecureCamera) {        // 1. 全局模式的配置文件名        // PreferenceManager.getDefaultSharedPreferences(Context)为framework层的方法        // 其最后返回:context.getPackageName() + "_preferences";        // 即"com.mediatek.camera" + "_preferences"        mPrefGlobal = PreferenceManager.getDefaultSharedPreferences(context);        mIsSecureCamera = isSecureCamera;    }    public SharedPreferences getSharedPreference(Context context, int cameraId) {        // 2/3. cameraId为0表示后摄,1表示前摄,在非双摄机型上面        String prefName = context.getPackageName() + "_preferences_" + cameraId;        if (mIsSecureCamera) {            // 4/5. 安全模式下配置文件的名称            prefName = context.getPackageName() + "_preferences_secure" + cameraId;        }        return context.getSharedPreferences(prefName, Context.MODE_PRIVATE);    }}

2. 如何配置某项设置为全局项

如果某项设置项是全局的,那么无论前后摄,无论是否是安全模式,都会使用全局中的值。
典型的全局设置项为KEY_RECORD_LOCATION,即地理位置信息。该设置项无论前后摄、安全与否都是一样的。

要想将某项设置变成全局,只需要加上两行代码即可。下面以快门声音为例
1. src\com\android\camera\ComboPreferences.java

private static boolean isGlobal(String key) {    return key.equals(SettingConstants.KEY_CAMERA_ID)            || key.equals(SettingConstants.KEY_RECORD_LOCATION)            || key.equals(SettingConstants.KEY_MULTI_FACE_BEAUTY)            || key.equals(SettingConstants.KEY_SHUTTER_SOUND);   // add this}
  1. src\com\mediatek\camera\setting\preference\SharedPreferencesTransfer.java
 private static boolean isGlobal(String key) {       return key.equals(SettingConstants.KEY_CAMERA_ID)               || key.equals(SettingConstants.KEY_RECORD_LOCATION)               || key.equals(SettingConstants.KEY_MULTI_FACE_BEAUTY)               || key.equals(SettingConstants.KEY_SHUTTER_SOUND);   // add this   }
原创粉丝点击