在surfacechanged相机上传输setparameters()的最佳方法

时间:2011-02-25 06:06:24

标签: android camera

我正在玩Android相机功能。我正在尝试使用菜单onCheck动态更改相机参数,然后调用surfaceChanged来实施更改。

public boolean onOptionsItemSelected(MenuItem item) {

            Camera.Parameters parameters = camera.getParameters();
            switch (item.getItemId()) {
            case R.id.EFFECT_AQUA:
                Toast.makeText(this, "AQUA", Toast.LENGTH_SHORT).show();
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                parameters.setColorEffect(Camera.Parameters.EFFECT_AQUA);
                surfaceChanged(null, 0, 0,0);
                return true;

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        Camera.Parameters parameters = camera.getParameters();
        camera.setParameters(parameters);
        camera.startPreview();
        }

当我运行应用时,检查menuItem会调用surfaceChanged,但setparamater命令不会使用/设置所选参数。

我正在考虑实施一个全局来捕捉变化,但我不喜欢它。当我们进行surfaceChanged调用时,还有另一种传输参数的方法吗?

1 个答案:

答案 0 :(得分:1)

从给定的代码片段我会说你忘了将更改后的参数发布到相机。如果您未在Camera实例上调用setParameters(参数参数),则相机将使用以前的参数设置。

Camera.Parameters parameters = camera.getParameters(); parameters.setColorEffect(Camera.Parameters.EFFECT_AQUA); camera.setParameters(parameters); // add this line to your code