下面列出了android.hardware.Camera.CameraInfo#CAMERA_FACING_BACK 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public CameraSurfaceView(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
context = ctx;
setEGLContextClientVersion(2);
setRenderer(this);
setRenderMode(RENDERMODE_WHEN_DIRTY);
// Find the total number of available cameras and the ID of the default camera
numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
selectedCameraId = i;
}
}
}
public CameraSurfaceView(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
context = ctx;
setEGLContextClientVersion(2);
setRenderer(this);
setRenderMode(RENDERMODE_WHEN_DIRTY);
// Find the total number of available cameras and the ID of the default camera
numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
selectedCameraId = i;
}
}
}
public CameraSurfaceView(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
context = ctx;
setEGLContextClientVersion(2);
setRenderer(this);
setRenderMode(RENDERMODE_WHEN_DIRTY);
// Find the total number of available cameras and the ID of the default camera
numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
selectedCameraId = i;
}
}
}
public CameraSurfaceView(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
context = ctx;
setEGLContextClientVersion(2);
setRenderer(this);
setRenderMode(RENDERMODE_WHEN_DIRTY);
// Find the total number of available cameras and the ID of the default camera
numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
selectedCameraId = i;
}
}
}
public CameraSurfaceView(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
context = ctx;
setEGLContextClientVersion(2);
setRenderer(this);
setRenderMode(RENDERMODE_WHEN_DIRTY);
// Find the total number of available cameras and the ID of the default camera
numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
selectedCameraId = i;
}
}
}
public CameraSurfaceView(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
context = ctx;
setEGLContextClientVersion(2);
setRenderer(this);
setRenderMode(RENDERMODE_WHEN_DIRTY);
// Find the total number of available cameras and the ID of the default camera
numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
selectedCameraId = i;
}
}
}
private boolean tryCreateCamera(int facing) {
CameraInfo info = new CameraInfo();
for (int nCam = 0; nCam < Camera.getNumberOfCameras(); nCam++) {
Camera.getCameraInfo(nCam, info);
if (info.facing == facing) {
camera = Camera.open(nCam);
cameraInfo = info;
//Size size = choosePictureSize(camera.getParameters().getSupportedPictureSizes());
Camera.Parameters params = camera.getParameters();
params.setPictureFormat(ImageFormat.JPEG);
//params.setPictureSize(size.width,size.height);
//params.setJpegThumbnailSize(128,128);
//params.setPreviewSize(size.width/2,size.height/2);
if (this.getCameraDirection() == CameraInfo.CAMERA_FACING_BACK) {
params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
}
camera.setParameters(params);
return true;
}
}
return false;
}
private boolean hasBackCamera()
{
int n = android.hardware.Camera.getNumberOfCameras();
CameraInfo info = new CameraInfo();
for (int i = 0; i < n; i++)
{
android.hardware.Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_BACK)
{
Log.i(TAG, "back camera found: " + i);
return true;
}
}
Log.i(TAG, "no back camera");
return false;
}
public void flipCamera() {
if (Camera.getNumberOfCameras() > 1) {
cameraId = cameraId == CameraInfo.CAMERA_FACING_BACK
? CameraInfo.CAMERA_FACING_FRONT
: CameraInfo.CAMERA_FACING_BACK;
onPause();
onResume();
TextSecurePreferences.setDirectCaptureCameraId(getContext(), cameraId);
}
}
private int getCameraId() {
CameraInfo ci = new CameraInfo();
for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
Camera.getCameraInfo(i, ci);
if (ci.facing == CameraInfo.CAMERA_FACING_BACK)
return i;
}
return -1; // No camera found
}
private int getCameraId() {
CameraInfo ci = new CameraInfo();
for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
Camera.getCameraInfo(i, ci);
if (ci.facing == CameraInfo.CAMERA_FACING_BACK)
return i;
}
return -1; // No camera found
}
/** Initializes cameraId state from global preferences. */
private void initCameraSelection() {
cameraId = preferences.getCameraId();
if (cameraId > CameraInfo.CAMERA_FACING_FRONT) {
Log.e(TAG, "out of bounds camera id: " + cameraId);
cameraId = CameraInfo.CAMERA_FACING_BACK;
preferences.setCameraId(cameraId);
}
}
private void setCameraIconForCurrentCamera() {
ImageButton button = findViewById(R.id.control_camera_selection);
switch (cameraId) {
case CameraInfo.CAMERA_FACING_BACK:
button.setImageResource(R.drawable.ic_camera_rear_white_24);
break;
case CameraInfo.CAMERA_FACING_FRONT:
button.setImageResource(R.drawable.ic_camera_front_white_24);
break;
default:
break;
}
}
/** Initializes cameraId state from global preferences. */
@SuppressWarnings("deprecation")
private void initCameraSelection() {
int cameraIdInt = preferences.getCameraId();
if (cameraIdInt > CameraInfo.CAMERA_FACING_FRONT) {
Log.e(TAG, "out of bounds camera id: " + cameraIdInt);
cameraIdInt = CameraInfo.CAMERA_FACING_BACK;
preferences.setCameraId(cameraIdInt);
}
cameraId = String.valueOf(cameraIdInt);
}
private int getCameraId() {
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_BACK) {
return i;
}
}
return 0;
}
public boolean isRearCamera() {
return cameraId == CameraInfo.CAMERA_FACING_BACK;
}
protected int getCameraDirection() {
return CameraInfo.CAMERA_FACING_BACK;
}
private int getOtherDirection(int facing) {
return (facing == CameraInfo.CAMERA_FACING_BACK) ? CameraInfo.CAMERA_FACING_FRONT : CameraInfo.CAMERA_FACING_BACK;
}
@Override
protected int getCameraDirection() {
//return CameraInfo.CAMERA_FACING_FRONT;
return CameraInfo.CAMERA_FACING_BACK;
}
private void initialize() {
Camera camera = null;
final CameraInfo cameraInfo = new CameraInfo();
final int cameraId = mCameraId;
if (cameraId == CAMERA_BACK || cameraId == CAMERA_FRONT) {
final int numberOfCameras = Camera.getNumberOfCameras();
final int facing = cameraId == CAMERA_BACK ? CameraInfo.CAMERA_FACING_BACK :
CameraInfo.CAMERA_FACING_FRONT;
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == facing) {
camera = Camera.open(i);
mCameraId = i;
break;
}
}
} else {
camera = Camera.open(cameraId);
Camera.getCameraInfo(cameraId, cameraInfo);
}
if (camera == null) {
throw new CodeScannerException("Unable to access camera");
}
final Parameters parameters = camera.getParameters();
if (parameters == null) {
throw new CodeScannerException("Unable to configure camera");
}
final int orientation = Utils.getDisplayOrientation(mContext, cameraInfo);
final boolean portrait = Utils.isPortrait(orientation);
final Point imageSize =
Utils.findSuitableImageSize(parameters, portrait ? mHeight : mWidth,
portrait ? mWidth : mHeight);
final int imageWidth = imageSize.getX();
final int imageHeight = imageSize.getY();
parameters.setPreviewSize(imageWidth, imageHeight);
parameters.setPreviewFormat(ImageFormat.NV21);
final Point previewSize = Utils.getPreviewSize(portrait ? imageHeight : imageWidth,
portrait ? imageWidth : imageHeight, mWidth, mHeight);
final List<String> focusModes = parameters.getSupportedFocusModes();
final boolean autoFocusSupported = focusModes != null &&
(focusModes.contains(Parameters.FOCUS_MODE_AUTO) ||
focusModes.contains(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE));
if (!autoFocusSupported) {
mAutoFocusEnabled = false;
}
final Point viewSize = new Point(mWidth, mHeight);
if (autoFocusSupported && mAutoFocusEnabled) {
Utils.setAutoFocusMode(parameters, mAutoFocusMode);
final Rect frameRect = mScannerView.getFrameRect();
if (frameRect != null) {
Utils.configureDefaultFocusArea(parameters, frameRect, previewSize, viewSize,
imageWidth, imageHeight, orientation);
}
}
final List<String> flashModes = parameters.getSupportedFlashModes();
final boolean flashSupported =
flashModes != null && flashModes.contains(Parameters.FLASH_MODE_TORCH);
if (!flashSupported) {
mFlashEnabled = false;
}
final int zoom = mZoom;
if (zoom != 0) {
Utils.setZoom(parameters, zoom);
}
Utils.configureFpsRange(parameters);
Utils.configureSceneMode(parameters);
Utils.configureVideoStabilization(parameters);
camera.setParameters(parameters);
camera.setDisplayOrientation(orientation);
synchronized (mInitializeLock) {
final Decoder decoder =
new Decoder(mDecoderStateListener, mFormats, mDecodeCallback);
mDecoderWrapper =
new DecoderWrapper(camera, cameraInfo, decoder, imageSize, previewSize,
viewSize, orientation, autoFocusSupported, flashSupported);
decoder.start();
mInitialization = false;
mInitialized = true;
}
mMainThreadHandler.post(new FinishInitializationTask(previewSize));
}