LBr*_*Bre 5 camera android focus zxing vuzix
我们正在为Vuzix M100开发一个应用程序,它应该连续读取条形码并在textView中显示结果.因此,相机每5秒拍摄一张照片并将位图发送到zxing条形码扫描仪.我们差不多完成了,但相机只关注第一张照片.有什么建议?这是我们代码的重要部分:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.textView1);
mPreview = (SurfaceView) findViewById(R.id.sv1);
mPreview.getHolder().addCallback(this);
mCamera = Camera.open();
final Parameters param = mCamera.getParameters();
param.setJpegQuality(100);
param.setPictureSize(1600, 1200);
param.setFocusMode(param.FOCUS_MODE_CONTINUOUS_PICTURE);
param.setSceneMode(Parameters.SCENE_MODE_BARCODE);
mCamera.setParameters(param);
final Handler h = new Handler();
final int delay = 5000;
h.postDelayed(new Runnable(){
int count = 1;
public void run(){
tryAutoFocus();
param.setFocusMode(param.FOCUS_MODE_FIXED);
param.setFocusMode(param.FOCUS_MODE_AUTO);
h.postDelayed(this, delay);
}
}, delay);
}
Run Code Online (Sandbox Code Playgroud)
.
private void tryAutoFocus() {
final PictureCallback myPictureCallback = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
try {
Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length, options);
createExternalStoragePublicPicture(bmp);
} catch (Exception e) {
e.printStackTrace();
}
}
};
AutoFocusCallback myAutoFocusCallback = new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera arg1) {
// TODO: Problem: Fokussiert nur beim ersten Foto
mCamera.takePicture(null, null, null, myPictureCallback);
mCamera.cancelAutoFocus();
mCamera.startPreview();
}
};
mCamera.autoFocus(myAutoFocusCallback);
}
Run Code Online (Sandbox Code Playgroud)
这是一个老问题,但仍然是:
请注意,通过设置场景Camera.Parameters.setSceneMode()
实际上可能会覆盖任何先前的设置。引用API文档:
更改场景模式可能会覆盖其他参数(例如闪光模式、对焦模式、白平衡)。例如,假设最初的闪光灯模式处于打开状态,并且支持的闪光灯模式处于打开/关闭状态。在夜景模式下,闪光模式和支持的闪光模式都可能更改为关闭。设置场景模式后,应用程序应调用 getParameters 来了解某些参数是否发生更改。
此外,文档还暗示不仅可以覆盖当前设置,还可以覆盖支持的参数值。
所以我建议:
getSupportedFocusModes()
归档时间: |
|
查看次数: |
261 次 |
最近记录: |