如何检查设备中是不是安装了摄像头?

Posted

技术标签:

【中文标题】如何检查设备中是不是安装了摄像头?【英文标题】:How to check is there camera installed in the device or not?如何检查设备中是否安装了摄像头? 【发布时间】:2016-06-30 11:56:01 【问题描述】:

这是我的代码。我想从相机或图库中选择图像。 为此,我必须检查设备的相机支持功能。

  public void selectImage() 
            final String[] items = new String[]"Camera", "Gallery";
            final Integer[] icons = new Integer[]R.drawable.ic_camera, R.drawable.ic_gallery;
            ListAdapter adapter = new ArrayAdapterWithIcon(getActivity(), items, icons);
            new AlertDialog.Builder(getActivity()).setTitle("Select Picture")
                    .setAdapter(adapter, new DialogInterface.OnClickListener() 
                        public void onClick(DialogInterface dialog, int item) 
                            if (items[item].equals("Camera")) 
                                if (//here i want to check is there mobile exists camera or not) 
                                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                    startActivityForResult(intent, REQUEST_CAMERA);
                                 
                             else if (items[item].equals("Gallery")) 

                                    Intent intent = new Intent();
                                    intent.setType("image/*");
                                    intent.setAction(Intent.ACTION_GET_CONTENT);
                                    intent.addCategory(Intent.CATEGORY_OPENABLE);
                                    startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);

                            
                        
                    ).show();

        

我尝试了很多,但没有成功。

【问题讨论】:

检查这些解决方案***.com/a/5266165/3946958 【参考方案1】:
import android.hardware.Camera;`

使用Camera.getNumberOfCameras();。如果它返回值大于0,则表示您的设备有摄像头。

【讨论】:

【参考方案2】:

使用它来显示图库以从中选择图像:

private void showGallery() 
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    startActivityForResult(intent, 1234);


使用它打开相机(检查设备是否有相机):

private void showCamera() 
        // get the package manager and check if device has camera
        PackageManager pm = getPackageManager();
        if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) 
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            // ensure that there is some activity to handle camera intents
            if (takePictureIntent.resolveActivity(pm) != null) 
                startActivityForResult(takePictureIntent, 5678);
            
         else 
            Snackbar.make(mView, "your device dont have camera", Snackbar.LENGTH_LONG).show();
        
    

注意:确保在清单中声明相机的权限为:

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

更多详情,请查看this。

【讨论】:

你的方法也适用于我,但我不想要简单的方法。只有 1 或 2 行代码。意思是真假。 是的。所以你只需要showCamera()的if-else。

以上是关于如何检查设备中是不是安装了摄像头?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 上检查用户设备上是不是安装了特定应用程序? [复制]

如何以编程方式检查 Android 中是不是安装了应用程序?

如何检查设备是不是有闪光灯 LED android

如何使用 corona sdk 检查我的应用程序之一是不是安装在 IOS 设备中

如何正确检查已安装的 GooglePlayServices 是不是正常工作?

Google Maps Android API V2 检查设备上是不是安装了 GoogleMaps