private class MyOrientationEventListener extends OrientationEventListener {
public MyOrientationEventListener(Context context) {
super(context);
}
@Override
public void onOrientationChanged(int orientation) {
if (orientation == ORIENTATION_UNKNOWN)
return;
CameraInfo info = new android.hardware.Camera.CameraInfo();
Camera.getCameraInfo(mCamera.mCurrentCameraId, info);
orientation = (orientation + 45) / 90 * 90;
int rotation = 0;
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
rotation = (info.orientation - orientation + 360) % 360;
} else { // back-facing camera
rotation = (info.orientation + orientation) % 360;
}
mParameters.setRotation(rotation);
}
public MyOrientationEventListener(Context context) {
super(context);
}
@Override
public void onOrientationChanged(int orientation) {
if (orientation == ORIENTATION_UNKNOWN)
return;
CameraInfo info = new android.hardware.Camera.CameraInfo();
Camera.getCameraInfo(mCamera.mCurrentCameraId, info);
orientation = (orientation + 45) / 90 * 90;
int rotation = 0;
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
rotation = (info.orientation - orientation + 360) % 360;
} else { // back-facing camera
rotation = (info.orientation + orientation) % 360;
}
mParameters.setRotation(rotation);
}
}
OrientationEventListener myOrientationEventListener;
@Override
protected void onResume() {
super.onResume();
myOrientationEventListener.enable();
}
@Override
protected void onPause() {
myOrientationEventListener.disable();
super.onPause();
}
本文介绍了一个自定义的OrientationEventListener监听器实现方式,该监听器能够根据手机的方向变化来调整摄像头预览画面的方向,确保前后置摄像头拍摄的画面始终处于正确的方位。
260

被折叠的 条评论
为什么被折叠?



