import android.graphics.RectF; //导入方法依赖的package包/类
@Override
public void run() {
try {
final Camera camera = cameraManager.open(previewView, displayRotation(), !DISABLE_CONTINUOUS_AUTOFOCUS);
final Rect framingRect = cameraManager.getFrame();
final RectF framingRectInPreview = new RectF(cameraManager.getFramePreview());
framingRectInPreview.offsetTo(0, 0);
final boolean cameraFlip = cameraManager.getFacing() == CameraInfo.CAMERA_FACING_FRONT;
final int cameraRotation = cameraManager.getOrientation();
runOnUiThread(new Runnable() {
@Override
public void run() {
scannerView.setFraming(framingRect, framingRectInPreview, displayRotation(), cameraRotation,
cameraFlip);
}
});
final String focusMode = camera.getParameters().getFocusMode();
final boolean nonContinuousAutoFocus = Camera.Parameters.FOCUS_MODE_AUTO.equals(focusMode)
|| Camera.Parameters.FOCUS_MODE_MACRO.equals(focusMode);
if (nonContinuousAutoFocus)
cameraHandler.post(new AutoFocusRunnable(camera));
cameraHandler.post(fetchAndDecodeRunnable);
} catch (final Exception x) {
log.info("problem opening camera", x);
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!isFinishing())
WarnDialogFragment
.newInstance(R.string.scan_camera_problem_dialog_title,
getString(R.string.scan_camera_problem_dialog_message))
.show(getFragmentManager(), "dialog");
}
});
}
}