【发布时间】:2016-09-26 11:18:16
【问题描述】:
我的应用程序中有一个自定义相机的片段,我正在尝试为我的相机实现闪光灯开/关按钮。
现在我有这样的东西:
private Camera camera;
private Camera.Parameters params;
private boolean flash;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// ...
// Flash on/off button click;
final ImageButton buttonTurnFlash = (ImageButton) view.findViewById(R.id.button_turn_flash);
buttonTurnFlash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { turnFlash(); }
});
}
private void turnFlash() {
if (flash) flash = false;
else flash = true;
}
然后当用户点击“拍照”按钮时我调用这个方法:
private void takePicture() {
try {
if (flash) {
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
}
final Bitmap bitmap = textureView.getBitmap();
final FileOutputStream fos = Controller.getContext().openFileOutput("image.jpg", Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
} catch (Exception e) { e.printStackTrace(); }
}
如果闪光灯关闭,我会得到一张非常漂亮的照片。但是如果我打开闪光灯,尝试拍照,闪光灯确实会闪烁,但结果是一张没有闪光灯的照片,就像闪光灯关闭一样。
我是相机方面的新手,但我很确定当闪光灯闪烁然后调用方法 getBitmap() 时,他会得到位图,闪光灯已经消失或已经闪烁。有什么办法可以延迟刷机直到 getBitmap() 方法完成?最好的方法是什么?
【问题讨论】:
标签: java android camera textureview