我正在开发一个没有使用意图的Android自定义相机应用程序(以避免获得Android内置的相机功能)。我在我的应用中启用了自动对焦功能。我按下了一个keyVolume按钮拍照。我正在使用以下代码来设置参数。
Camera.Parameters p = camera.getParameters();
camera.autoFocus(autoFocusCallback);
p.setFocusMode(Parameters.FOCUS_MODE_AUTO);
camera.setParameters(p1);
camera.takePicture(shutterCallback, rawCallback, jpgCallback);
void setHandler(Handler autoFocusHandler, int autoFocusMessage)
{
this.autoFocusHandler = autoFocusHandler;
this.autoFocusMessage = autoFocusMessage;
}
private AutoFocusCallback autoFocusCallback = new AutoFocusCallback()
{
private Object success;
@Override
public void onAutoFocus(boolean autoFocusSuccess, Camera camera)
{
if (autoFocusHandler != null)
{
Message message = autoFocusHandler.obtainMessage(autoFocusMessage, success);
autoFocusHandler.sendMessageDelayed(message, AUTOFOCUS_INTERVAL_MS);
autoFocusHandler = null;
}
else
{
}
}
};
但问题是,此代码仅适用于LG手机。并且在运行之后我将在所有其他手机上关闭。
错误日志看起来像这样
http://textuploader.com/?p=6&id=kOc9G
没有得到我错的地方。请帮忙!谢谢!
答案 0 :(得分:2)
不同的手机有不同的相机参数。检查模式是否可以实际设置befire。
例如,在您的情况下,有public List<String> getSupportedFocusModes ()
函数
Camera.Parameters
上课。
Afaik,像acer或zte等廉价手机,对其相机的编程支持非常弱。
UPD:代码示例
Camera.Parameters p = camera.getParameters();
List<String> modes = p.getSupportedFocusModes();
if(modes.contains(Camera.Parameters.FOCUS_MODE_AUTO))
{
p.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
camera.setParameters(p);
camera.autoFocus(autoFocusCallback);
}
else
{
// this is default focus mode if autofocus unsupported.
// also, we should not call camera.autoFocus(autoFocusCallback) here
p.setFocusMode(Camera.Parameters.FOCUS_MODE_FIXED);
camera.setParameters(p);
}
答案 1 :(得分:1)
您正在使用
Camera.Parameters p = camera.getParameters();
所以替换
camera.setParameters(p1);
与
camera.setParameters(p);
我认为这应该对你有帮助....
Camera.Parameters p = camera.getParameters();
List<Size> sizes = p.getSupportedPictureSizes();
// Choose any one you want among sizes
size = sizes.get(0);
p.setPictureSize(size.width, size.height);
camera.setParameters(p);
答案 2 :(得分:1)
请勿使用“p.setFocusMode(Parameters.FOCUS_MODE_AUTO);”线。
默认情况下,对焦模式为FOCUS_MODE_AUTO。