前言
上一篇《MTK camera 4.2 app 启动时读取设置》提到了相机在启动时会根据设置下派参数。
这一篇wiki我们会分析下派参数完成后,界面会如何根据设置,下派的参数更新。
函数入口 applyParametersToUIImmediately()
void com.android.camera.SettingChecker.applyParametersToUIImmediately() 常用调用方式:
紧跟applyParameters(),applyParametersToServer().
通过在代码中查看applyParametersToUIImmediately()的引用位置,可以看到它总是在下派参数的时候使用,体现了函数命名的意义。
代码分析
代码中有如下注释
//Some preference is on screen, we should update immediately before applyParameterToUI().
意思是界面上有一些preference,我们需要在 applyParamtersToUi()立即更新执行前立即更新。
- 取得SETTING_GROUP_ALL_IN_SCREEN
- 取得ComboPreferences
- 取得currentMode
- clear override settings
之后会调用四个函数,getModeTableKeyValues,getSceneTableKeyValues,getRestrictionsKeyValues,getCapabilityKeyValues去取得(key,value)。
每次获得(key,value)之后都会通过overrideSettings()更新key对应的ListPreference.mOverrideValue
最后通过getPickerManager.refresh()强制更新。因为ListPreferences中只有PickerManager在界面。
getModeTableKeyValues
MATRIX_MODE_STATE
getSceneTableKeyValues
ROW_SETTING_SCENCE_MODE
MATRIX_SCENE_STATE
getRestrictionsKeyValues
RESTRICTIOINS
getCapabilityKeyValues
applyParametersToUI
与applyParametersToUIImmediately的相同点是代码的基本流程相同。 不同是,使用SETTING_GROUP_ALL_IN_SETTING。最后没有强制manager.refresh()