MTK 最新的这套Camera2开发出来后没有恢复出厂设置的功能。
最近看了一下代码,根据里面的内容总结了一下在这个基础上开发了一个恢复出厂设置的功能。
主要的代码部分:
在feature中添加一个设置选项:restorefactory添加restore的菜单(不会做的根据zsd来写一个)。
同时在buildinplugin中添加对应的选项:
com.mediatek.camera.feature.setting.restorefactory.RestoreFactoryEntry
在host/Android.mk中添加对应的路径把这个文件编译到apk中。
主要代码部分:
添加RestorFactoryRestriction:
static {
sRelationGroup.setHeaderKey("key_restorefactory");
sRelationGroup.setBodyKeys("key_scene_mode,key_self_timer,key_picture_size,key_zsd" +
",key_anti_flicker,key_white_balance,key_iso" +
",key_brightness,key_contrast,key_hue,key_saturation,key_sharpness,key_image_properties");
sRelationGroup.addRelation(
new Relation.Builder("key_restorefactory", "key_restorefactory")
.addBody("key_scene_mode", "off", "off")
.addBody("key_self_timer", "0", "0")
.addBody("key_picture_size", "2560x1440", "2560x1440")
.addBody("key_zsd", "off", "off")
.addBody("key_anti_flicker", "auto", "auto")
.addBody("key_white_balance", "auto", "auto")
.addBody("key_iso", "auto", "auto")
.addBody("key_brightness", "middle", "low,middle,high")
.addBody("key_contrast", "middle", "low,middle,high")
.addBody("key_hue", "middle", "low,middle,high")
.addBody("key_saturation", "middle", "low,middle,high")
.addBody("key_sharpness", "middle", "low,middle,high")
.addBody("key_image_properties", "middle", "middle")
.build());
}
当然如果需要每一个属性你要恢复成其他选项的话你要自己配置。
使用这个配置:
在SettingBase.java这个配置中添加
String valueBeforeOverride = “”;
if(“key_restorefactory”.equals(headerKey)){
if(“key_brightness”.equals(getKey())||”key_contrast”.equals(getKey())||”key_hue”.equals(getKey())
||”key_saturation”.equals(getKey())||”key_sharpness”.equals(getKey())){
String mCurrentValue = mDataStore.getValue(getKey(),null,getStoreScope());
if(mCurrentValue == null || mCurrentValue.isEmpty()){
currentValue = “middle”;
mDataStore.setValue(getKey(),currentValue,getStoreScope(),true);
}
supportValues = getSupportedPlatformValues();
}else{
supportValues = getEntryValues();
}
}
这样就会直接使用RestorFactoryRestriction的配置。
同时还要清楚这个Camera2中配置的SharedPreferencesWrapper里面包括缓存中所有的内容
SharedPreferencesWrapper prefWrapper = getSharedPreferencesWrapperSync(scope);
prefWrapper.getValueCanche().clear();
SharedPreferences mSharedPreferences = prefWrapper.getSharedPreferences();
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.clear();
editor.commit();
mGlobalKeys.clear();