Android中判断是否有前置摄像头、后置摄像头的方法

通常我们进行摄像头操作,如扫描二维码需要判断是否有后置摄像头(Rear camera),比如Nexus 7 一代就没有后置摄像头,这样在尝试使用的时候,我们需要进行判断进行一些提示或者处理。

以下代码为一系列的方法,用来判断是否有前置摄像头(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及其以上。

延伸阅读:http://developer.android.com/reference/android/hardware/Camera.html http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html

(0)

相关推荐

  • Android判断用户是否允许了摄像头权限实例代码

    如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是Manifest配置的问题,因为这是开发者的事. 用户在使用APP时,如果首次进入用摄像头的地方,手机会提示是否允许该应用使用摄像头.有些用户小手一抖.或者压根就不想开启摄像头,咔擦,就给你关了,那好了.下回再进入该功能,就会出现APP一片黑,或者崩溃的情况. 作为开发者,正常思路是要提示用户,摄像头权限被你关了,赶紧去手动开启,不然,就别想用该功能了!那,咱们该怎么实现这个思路呢? 一.判断摄像头权限 Android API没提供判断

  • Android开发教程之调用摄像头功能的方法详解

    本文实例讲述了Android调用摄像头功能的方法.分享给大家供大家参考,具体如下: 我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码 摄像头权限: <uses-permission android:name="android.permission.CAMERA"/> SD卡读写权限: <uses-permission androi

  • Android调用前后摄像头同时工作实例代码

    硬件环境:小米4 Android版本:6.0 咱们先看效果图: 我把代码贴出来: AndroidMainfest.xml文件(需要新增camera权限): <uses-permission android:name="android.permission.CAMERA" /> activity_main.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayo

  • Android实现手机摄像头的自动对焦

    如何实现Android相机的自动对焦,而且是连续自动对焦的.当然直接调用系统相机就不用说了,那个很简单的.下面我们主要来看看如如何自己实现一个相机,并且实现自动连续对焦. 代码如下: public class MainActivity extends Activity { private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private boolean flag = false; private Strin

  • Android编程实现摄像头临摹效果的方法

    本文实例讲述了Android编程实现摄像头临摹效果的方法.分享给大家供大家参考,具体如下: 这篇文章结合本人的开发实例,介绍如何实现摄像头临摹效果,即将摄像头拍摄的画面作为临摹的物体投射到画纸上,用户可以在画纸上继续作画,效果如图1. 主要可以分成四步,第一步在AndroidManifest.xml文件里添加对摄像机的使用许可. <uses-permissionandroid:name="android.permission.CAMERA"/> 第二步在布局文件里使用fra

  • android开发之调用手机的摄像头使用MediaRecorder录像并播放

    我们玩玩手机的录像功能吧.做个DEMO. 看看录制过程: 复制代码 代码如下: mediarecorder = new MediaRecorder();// 创建mediarecorder对象 // 设置录制视频源为Camera(相机) mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); // 设置录制完成后视频的封装格式THREE_GPP为3gp.MPEG_4为mp4 mediarecorder.setOutputFo

  • Android 开发随手笔记之使用摄像头拍照

    在Android中,使用摄像头拍照一般有两种方法, 一种是调用系统自带的Camera,另一种是自己写一个摄像的界面. 我们要添加如下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> 1.调用系统Camera 调用系统

  • Android实现调用摄像头

    应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用. 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保已经在AndroidManifest.xml中正确声明了对摄像头的使用及其它相关的feature 1. 摄像头相关权限设置 <!--摄像头权限 --> <uses-permission android:name="android.permission.CAMERA" /> <!--存

  • Android中判断是否有前置摄像头、后置摄像头的方法

    通常我们进行摄像头操作,如扫描二维码需要判断是否有后置摄像头(Rear camera),比如Nexus 7 一代就没有后置摄像头,这样在尝试使用的时候,我们需要进行判断进行一些提示或者处理. 以下代码为一系列的方法,用来判断是否有前置摄像头(Front Camera),后置摄像头. 复制代码 代码如下: private static boolean checkCameraFacing(final int facing) {     if (getSdkVersion() < Build.VERS

  • Android中判断屏幕是否亮屏和是否解锁功能

    1.屏幕是否亮屏: PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); //true为打开,false为关闭 boolean ifOpen = powerManager.isScreenOn(); 2.屏幕是否解锁: KeyguardManager mKeyguardManager = (KeyguardManager) context.getSystemServi

  • Android中判断手机是否联网实例

    本文实例讲述了Android中判断手机是否联网的方法,分享给大家供大家参考.具体步骤如下: 首先在AndroidManifest.xml中添加与连接网络相关的权限: 复制代码 代码如下: <uses-permission android:name="android.permission.INTERNET"></uses-permission>  <uses-permission android:name="android.permission.A

  • Android中判断网络是否连接实例详解

    Android中判断网络是否连接实例详解 在android中,如何监测网络的状态呢,这个有的时候也是十分重要的,方法如下: public class ConnectionDetector { private Context _context; public ConnectionDetector(Context context){ this._context = context; } public boolean isConnectingToInternet(){ ConnectivityMana

  • Android中判断listview是否滑动到顶部和底部的实现方法

    今天实现listview的下拉刷新和上拉加载的时候,遇到了一个问题,*就是说需要根据listview中滑动的位置来进行下拉刷新和上拉加载.* 具体点,只有当我的listview滑动到最顶部的时候,这时候下拉才执行刷新操作:只有当我的listview滑动到最底部的时候,这时候上拉才执行加载操作. 那么怎么判断listview的滑动位置呢?其实还是比较好解决的,说一下我的想法: 顶部的判断,根据listview中的第一个item距离listview顶部的距离是否为0. 底部的判断,根据listvie

  • Android中判断当前API的版本号方法

    Android中由于不同版本API会有一些变化,导致一些较早版本可能不支持新的方法,或者某些功能处理过程不太一样,需要判断当前版本然后进行适当的处理. 那么,如何判断当前API的版本号呢? 例如判断api版本号是否大于等于19: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {...} 其中,Build.VERSION_CODES.KITKAT = 19 Build.VERSION.SDK_INT是什么: public stat

  • C++中操作符的前置与后置有什么区别

    目录 一.值得思考的问题 二.意想不到的事实 三.++ 操作符重载 四.真正的区别 五.小结 一.值得思考的问题 下面的代码有没有区别?为什么? 二.意想不到的事实 现代编译器产品会对代码进行优化 优化使得最终的二进制程序更加高效 优化后的二进制程序丢失了 C/C++ 的原生语义 不可能从编译后的二进制程序还原 C/C++ 程序 三.++ 操作符重载 ++ 操作符可以重载吗?如何区分前置++ 和后置++? ++ 操作符可以被重载 全局函数和成员函数均可进行重载 重载前置++操作符不需要额外的参数

  • Android中检测当前是否为主线程最可靠的解决方法

    如果在Android中判断某个线程是否是主线程?对于这个问题,你可能说根据线程的名字,当然这个可以解决问题,但是这样是最可靠的么?万一某天Google一下子将线程的名字改称其他神马东西呢. 方法揭晓 下面的方法是最可靠的解决方案. 复制代码 代码如下: public static boolean isInMainThread() {       return Looper.myLooper() == Looper.getMainLooper(); } 实际上,写到这里就基本解决了文章标题的问题了

  • 前置++和后置++ 运算的详解及实例代码

    一般认为前置++是先将变量的值加1,然后使用加1后的值参与运算:而后置++是先使用该值参与运算,然后再将该值加1. 先看第一个例子: package test; public class Plus_Test01 { public static void main(String[] args) { int i = 100; i = i++; System.out.println(i); } } 猜猜结果是什么? 接着看第二个: package test; public class Plus_Tes

  • Android中关于百度糯米app关闭网页或窗口的方法(99%人不知)

    我们公司做了一款使用百度钱包的移动网页支付进行支付的产品,用户通过百度钱包.百度糯米扫描我们 产品的二维码,选择商品,点击支付将会自动调用百度钱包进行支付,支付成功后返回成功页面,在我们的成功页面有关闭 网页按钮,点击关闭按钮或者返回按钮将会关闭页面. 在百度钱包中使用百度轻应用的BLightApp.closeWindow() 方法可以关闭,但是在百度糯米中,按道理可以使用呀, 但是根本就不行,改成传统的window.close()也不行.当时我们在网上搜索和百度糯米的官网中,都没找到解决方法.

随机推荐