为什么返回值不是我的预期。

时间:2013-06-08 07:05:56

标签: android android-camera

代码片段用于将Camera Parameters设置为:

lockRun(new Runnable() {
    @Override
    public void run() {
        Log.v("jerikc","applyParameters before width="+getParameters().getPictureSize().width+",height="+getParameters().getPictureSize());
        //preview size changed, zsd changed, camera mode changed, open camera.
        mSettingChecker.applyPreferenceToParameters();
        Log.v("jerikc","applyParameters after width="+getParameters().getPictureSize().width+",height="+getParameters().getPictureSize());
    }
});

SettingChecker.java

public void applyPreferenceToParameters() {
    Log.v("jerikc","SettingChecker.applyPreferenceToParameters before width="+mContext.getParameters().getPictureSize().width+",height="+mContext.getParameters().getPictureSize());
    ...
    Log.v("jerikc","SettingChecker.applyPreferenceToParameters after width="+mContext.getParameters().getPictureSize().width+",height="+mContext.getParameters().getPictureSize());
}

日志如下:

V/jerikc (17866): applyParameters before width=2560,height=android.hardware.Camera$Size@4fde180
V/jerikc (17866): SettingChecker.applyPreferenceToParameters before width=2560,height=android.hardware.Camera$Size@4fde180
V/jerikc (17866): SettingChecker.applyPreferenceToParameters after width=4096,height=android.hardware.Camera$Size@7fc9900
V/jerikc (17866): applyParameters after width=2560,height=android.hardware.Camera$Size@4fde180

我在调用之前和之后都添加了日志 mSettingChecker.applyPreferenceToParameters()。我还添加了日志 在方法 applyPreferenceToParameters 之前和之后。该 getParameters()将返回 mParameter 对象。

为什么宽度值不同(一个是4096,另一个是 2560)?

1 个答案:

答案 0 :(得分:1)

正如您在记录行末尾的@4fde180@7fc9900输出中所看到的,您正在使用不同的Camera.Size个对象。

您的方法applyPreferenceToParameters()似乎并未将更改后的值存储在您希望在其他方法/类中的位置。