我正在玩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
调用时,还有另一种传输参数的方法吗?
答案 0 :(得分:1)
从给定的代码片段我会说你忘了将更改后的参数发布到相机。如果您未在Camera实例上调用setParameters(参数参数),则相机将使用以前的参数设置。
Camera.Parameters parameters = camera.getParameters();
parameters.setColorEffect(Camera.Parameters.EFFECT_AQUA);
camera.setParameters(parameters); // add this line to your code