检测缺少后置摄像头

2023-11-24

我的应用程序具有需要后置摄像头的功能。有没有前置摄像头与我的需求无关。事实证明,在所有情况下,建立一个强大的例程来检测后置摄像头是否存在是很棘手的。例如,一位拥有 HTC Evo 3D 的用户抱怨该应用程序说没有后置摄像头(显然有),而且我也收到过许多其他用户的类似投诉。

测试这是一件棘手的事情,因为尽管我有很多设备,但我没有只有前置摄像头的设备,例如 Nexus 7 或用户提到的任何型号。

这是我所拥有的,这是从本网站上其他答案的代码中获取的:

boolean rearCameraFound = false;
    if(BUILD_VERSION > 8){
        int cameraCount = 0;
        Camera cam = null;
        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
        cameraCount = Camera.getNumberOfCameras();
        for ( int camIdx = 0; camIdx < cameraCount; camIdx++ ) {
            Camera.getCameraInfo( camIdx, cameraInfo );
            if ( cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK  ) {
                try {
                    cam = Camera.open( camIdx );
                    Log.d("TAG", "Rear camera detected");
                    rearCameraFound = true;
                } catch (RuntimeException e) {
                    Log.e("TAG", "Camera failed to open: " + e.getLocalizedMessage());
                }
            }
            if ( cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT ) {
                Log.d("TAG", "Front camera detected");
            }
        }
        return rearCameraFound;
    }else{
        if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
            // this device has a camera
            return true;
        } else {
            // no camera on this device
            return false;
        }
    }

我现在用这个更简单的版本替换了这段代码:

PackageManager pm = context.getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);

然而,我不知道在只有前置摄像头的 Nexus 7 上会发生什么。这会返回 true 吗?

我正在寻找可以告诉我是否有后置摄像头的代码!


Nexus 7(只有一个前置摄像头)返回 falseFEATURE_CAMERA,代替它,您可以使用FEATURE_CAMERA_FRONT。看看这个讨论.

现在,通过使用上述内容,您可以确保至少有一台摄像机。那么现在,你可以检查手机中的摄像头数量,如果大于1,那么肯定有后置摄像头。

import android.hardware.Camera;

int numCameras = Camera.getNumberOfCameras();
if (numCameras > 1) {
  rearCamera = true;
}

这是相当棘手的。但我现在能想到的仅此而已。尝试一下吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测缺少后置摄像头 的相关文章

  • 从 SharedPreferences 获取 Value 的 TextView 没有显示任何内容,尽管应该有默认值

    我有一个问题SharedPreferences这有点奇怪 我有一个Activity持有一个Fragment in a ViewPager 该片段显示图标和文本 您可以从另一个活动更改此片段中显示的图标 复选标记或十字 复选标记是默认值 和文
  • 无法在 extsd 卡中创建文件夹

    我有一个 Android 平板电脑 其中外部 SD 卡称为 mnt extsd 其内部存储称为 mnt sdcard 当我尝试通过以下代码在 mnt sdcard 中创建文件夹时 应用程序成功在根目录中创建文件夹 当我尝试在 mnt ext
  • 使用root清除状态栏通知

    我目前正在开发一个应用程序 使用无障碍服务来处理通知 特别烦人的是第三方应用无法清除状态栏通知 除了启动链接到通知的意图 并启动应用程序 我寻找了很长时间的方法使用 root 关闭通知或清除完整列表 但我失败了 我想我记得我看到过一个应用程
  • 在父视图之外对子视图进行动画处理

    我试图在其父视图之外对视图进行动画处理 当我这样做时 子视图无法在其父视图之外进行动画处理 我通过使用解决了这个问题setClipChildren false 它起作用了 当视图动画时up 当我为视图设置动画时down图像仍然隐藏 这是有效
  • 在phonegap中播放本地声音

    我有一个 wav文件在我的www文件夹 我正在使用 jQuery 和以下代码 警报响起 但声音不播放 难道我做错了什么
  • 更改首选项的背景颜色

    我有一个PreferenceCategory xml 文件 我已经在其中定义了所有首选项 我从扩展的类中调用它PreferenceActivity 我无法设置设置屏幕的背景 该屏幕是在如下所示的 xml 文件的帮助下显示的 请看我已经定义了
  • Whatsapp 在 Android 中共享音频文件时正在剪切音频文件

    我在共享格式不是 mp3 的音频文件时遇到问题 文件被共享 但长度较短 例如 如果文件有 10 秒 则仅共享 5 秒 如果我使用 mp3 格式 它会完全共享 但其他格式会出现问题 注意 该文件在其他应用程序 如Messenger 中共享没有
  • 在屏幕上随机生成一个圆圈并将其设为绿色或红色

    所以我一直在尝试制作一个游戏应用程序 它可以在 Android 屏幕上随机显示带有文本的红色按钮或带有文本的绿色按钮 如果有人可以帮助我 我将不胜感激 另外 如果有人知道如何做到这一点 我想慢慢地产生更快的酷优势 谢谢 SuppressLi
  • 如何在 Android 中创建刮刮卡?

    我需要为我在学校的期末项目创建一个 刮刮卡 应用程序 但找不到如何实现刮刮事件的方法 如何创建背景图像并在其上放置灰色矩形 所以当我刮刮这些矩形时我会看到他们下面的图片 实现必须在 Android 中 因为我还不知道如何在 Objectiv
  • 将寻呼机视为列表视图行项目

    我有一个包含 20 行的列表视图 我想为列表视图中的每一行设置一个视图寻呼机 由于列表视图的行中的项目可能是一个或多个 并且我想使用视图分页器显示列表视图行项目 为此 我使用以下代码 将显示在列表视图行中的自定义布局 作为分页器项目
  • 注销时Firebase facebook按钮android身份验证

    我在我的 Android 应用程序中使用 firebase 并在 facebook SDK 中使用登录 我面临的唯一问题是 当我使用 facebook 登录然后注销时 facebook 登录按钮处于 注销 状态 当我单击它时 它会询问我是否
  • 使用 POST 将数据从 Android 发送到 AppEngine Datastore

    抱歉 如果这是一个简单的问题 但我只是不知道我应该做什么 而且我认为我有点超出了我的深度 我想将数据从 Android 应用程序发送到在 Google App Engine 上运行的应用程序 数据必须从那里写入数据存储区 我的数据主要采用对
  • 将 ArrayList 保存在捆绑包 savingInstanceState 中

    ArrayList 是在类级别定义的 这些是我保存的实例方法 Override protected void onSaveInstanceState Bundle outState super onSaveInstanceState out
  • 如何在Firebase Android应用程序中分离两个不同的用户?

    我有一个应用程序 有两种不同类型的用户 一种是教师 第二种是普通用户 如果普通会员登录 他会去normal memberActivity如果他是教师会员 他会去Teacher memberActivity 我如何在登录活动中执行此操作 我的
  • Android 在创建时出现 SQLiteException

    首先我想说我是android新手 所以如果这个问题太愚蠢我很抱歉 我正在为带有两个表的 SQLite 数据库编写一个内容提供程序 表格上是在导航抽屉活动中显示列表 第二个表格是在 ListFragment 中显示 每次启动应用程序时 我都会
  • 如何知道点击的widget id?

    我已经实施了一个widget与ImageButton and a TextView That ImageButton启动一个activity当它被点击时 这activity使用用户在活动上写入的内容更新小部件文本EditText 现在的问题
  • 我可以使用“导入 com.facebook.FacebookSdk;”使用 Facebook SDK 3.23.1?

    在我的 app build gradle 文件中 我有compile com facebook android facebook android sdk 3 23 1 在我的 BaseActivity java 文件 其中有 public
  • 使用startActivityForResult,如何获取子活动中的requestCode?

    我有四项活动 即 A B C 和 D 我的情况是A将通过startActivityForResult启动活动B startActivityForResult new Intent this B class ONE 在另一种情况下 我将使用不
  • Android框架结构与MFC/Win32结构的比较?

    我为 Android 和 Windows 进行开发 使用 MFC 有时使用 win32 昨天我随意比较了这两个框架 它们显然非常非常不同 因此 Windows 开发与 Android 开发有很大不同 我想知道人们认为 Android 这样的
  • 在 Android SDK 中通过单击按钮更改背景颜色不起作用

    我有一个简单的程序 可以在单击按钮后更改背景颜色 但它不起作用 public class ChangeBackgroundActivity extends Activity Called when the activity is first

随机推荐