android判斷攝像頭
Ⅰ android Camera 如何判斷當前使用的攝像頭是前置還是後置
可以通過:
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, info);
判斷使用是前置還是後置攝像頭,可以通過if (info.facing == CameraInfo.CAMERA_FACING_FRONT) 來判斷
如果是已經打開的camera實例的話,可以通過
CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId];
if(mCameraId == CameraInfo.CAMERA_FACING_FRONT) 來判斷
Ⅱ android camera如何判斷當前使用的攝像頭是前置還是後置
現在 android 平台的智能手機一般都標配有兩顆攝像頭。在 Camera 中都存在攝像頭切換的功能。
並且有一些功能前後置攝像頭上會有所不同。譬如人臉檢測,人臉識別,自動對焦,閃光燈等功能,
如果前置攝像頭的像素太低,不支持該功能的話,就需要在前置攝像頭上關掉該 feature.
那麼是如何判斷並切換前後置攝像頭的呢?
我們先來看下 CameraInfo 這個類,
[java] view plain
/**
* Information about a camera
*/
public static class CameraInfo {
/**
* The facing of the camera is opposite to that of the screen.
*/
public static final int CAMERA_FACING_BACK = 0;
/**
* The facing of the camera is the same as that of the screen.
*/
public static final int CAMERA_FACING_FRONT = 1;
/**
* The direction that the camera faces. It should be
* CAMERA_FACING_BACK or CAMERA_FACING_FRONT.
*/
public int facing;
/**
* <p>The orientation of the camera image. The value is the angle that the
* camera image needs to be rotated clockwise so it shows correctly on
* the display in its natural orientation. It should be 0, 90, 180, or 270.</p>
*
* <p>For example, suppose a device has a naturally tall screen. The
* back-facing camera sensor is mounted in landscape. You are looking at
* the screen. If the top side of the camera sensor is aligned with the
* right edge of the screen in natural orientation, the value should be
* 90. If the top side of a front-facing camera sensor is aligned with
* the right of the screen, the value should be 270.</p>
*
* @see #setDisplayOrientation(int)
* @see Parameters#setRotation(int)
* @see Parameters#setPreviewSize(int, int)
* @see Parameters#setPictureSize(int, int)
* @see Parameters#setJpegThumbnailSize(int, int)
*/
public int orientation;
};
見名知義,它就是一個 Camera 信息類。它是通過與屏幕的方向是否一致來定義前後置攝像頭的。
與屏幕方向相反即為 BACK_FACING_CAMERA
與屏幕方向一致即為 FRONT_FACING_CAMERA
那麼在代碼中我們是如何獲取當前使用的 CamerInfo 呢
[java] view plain
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, info);
當然,使用該代碼的前提是要 import android.hardware.Camera.CameraInfo;
判斷使用是前置還是後置攝像頭,可以通過if (info.facing == CameraInfo.CAMERA_FACING_FRONT) 來判斷。
當Camera 的實例已經創建了的情況下,則需要通過如下方式來判斷。
[java] view plain
CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId];
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
//stopFaceDetection();
}
也可以通過 if(mCameraId == CameraInfo.CAMERA_FACING_FRONT) 來判斷。
其中 mCameraId 是當前使用的 CameraId, 一般前置為1, 後置為 0。
Ⅲ Android中判斷是否有前置攝像頭,後置攝像頭的方法
下面的代碼為一系列的方法,用來判斷是否有前置攝像頭(Front Camera),後置攝像頭。
private static boolean checkCameraFacing(final int facing) {
if (getSdkVersion() < Build.VERSION_CODES.GINGERBREAD) {
return false;
}
final int cameraCount = Camera.getNumberOfCameras();
CameraInfo info = new CameraInfo();
for (int i = 0; i < cameraCount; i++) {
Camera.getCameraInfo(i, info);
if (facing == info.facing) {
return true;
}
}
return false;
}
public static boolean hasBackFacingCamera() {
final int CAMERA_FACING_BACK = 0;
return checkCameraFacing(CAMERA_FACING_BACK);
}
public static boolean hasFrontFacingCamera() {
final int CAMERA_FACING_BACK = 1;
return checkCameraFacing(CAMERA_FACING_BACK);
}
public static int getSdkVersion() {
return android.os.Build.VERSION.SDK_INT;
}
注意:由於getNumberOfCameras以及getCameraInfo均為API 9 引入,所以方法只適用於2.3及其以上。
Ⅳ Android中判斷是否有前置攝像頭,後置攝像頭的方法
以下代碼為一系列的方法,用來判斷是否有前置攝像頭(Front Camera),後置攝像頭。
復制代碼代碼如下:
private static boolean checkCameraFacing(final int facing) {
if (getSdkVersion() < Build.VERSION_CODES.GINGERBREAD) {
return false;
}
final int cameraCount = Camera.getNumberOfCameras();
CameraInfo info = new CameraInfo();
for (int i = 0; i < cameraCount; i++) {
Camera.getCameraInfo(i, info);
if (facing == info.facing) {
return true;
}
}
return false;
}
public static boolean hasBackFacingCamera() {
final int CAMERA_FACING_BACK = 0;
return checkCameraFacing(CAMERA_FACING_BACK);
}
public static boolean hasFrontFacingCamera() {
final int CAMERA_FACING_BACK = 1;
return checkCameraFacing(CAMERA_FACING_BACK);
}
public static int getSdkVersion() {
return android.os.Build.VERSION.SDK_INT;
}
注意:由於getNumberOfCameras以及getCameraInfo均為API 9 引入,所以方法只適用於2.3及其以上。
Ⅳ android Camera 如何判斷當前使用的攝像頭是前置還是後置
可以通過:
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, info);
判斷使用是前置還是後置攝像頭,可以通過if (info.facing == CameraInfo.CAMERA_FACING_FRONT) 來判斷
如果是已經打開的camera實例的話,可以通過
CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId];
if(mCameraId == CameraInfo.CAMERA_FACING_FRONT) 來判斷
Ⅵ 檢查Android是否具有攝像頭
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.os.Build;
public class CameraUtils {
/**
* 檢測是否有前置攝像頭
* @return
*/
public static boolean hasFrontFacingCamera() {
final int CAMERA_FACING_BACK = 1;
return checkCameraFacing(CAMERA_FACING_BACK);
}
/**
* 檢測是否有後置攝像頭
* @return
*/
public static boolean hasBackFacingCamera() {
final int CAMERA_FACING_BACK = 0;
return checkCameraFacing(CAMERA_FACING_BACK);
}
private static boolean checkCameraFacing(final int facing) {
if (getSdkVersion() < Build.VERSION_CODES.GINGERBREAD) {
return false;
}
final int cameraCount = Camera.getNumberOfCameras();
CameraInfo info = new CameraInfo();
for (int i = 0; i < cameraCount; i++) {
Camera.getCameraInfo(i, info);
if (facing == info.facing) {
return true;
}
}
return false;
}
public static int getSdkVersion() {
return android.os.Build.VERSION.SDK_INT;
}
}
Ⅶ Android怎麼判斷打開攝像頭許可權被禁用
一、安卓
1.360手機衛士
底部安全防護>隱私行為監控>軟體隱私許可權管理>要禁止的應用>取消勾選「拍照/攝像」
2.LBE
許可權管理(主界面往下拖動)>拍照和錄像>取消勾選要禁止的應用
3.小米MIUI
安全中心>授權管理>應用許可權管理>隱私相關>取消勾選「拍照和錄像」
4.魅族Flyme
設置>應用控制(四個小方格圖標)>許可權>要禁止的應用>取消勾選「攝像頭(拍照/錄像)」
其他的第三方安全軟體的設置方法也大同小異。
二、蘋果
依次點擊:設置>隱私>相機>關閉不需要用到相機的APP使用許可權
望採納,謝謝。