单击按钮启动后置摄像头?

问题描述

我只想知道有没有什么方法可以仅使用意图启动后置摄像头。我不想使用intent.putextra 的东西。所以基本上我的代码应该是这样的

final Intent cameraIntent = new Intent();
            cameraIntent.putExtra("android.intent.extras.CAMERA_FACING",0);
            cameraIntent.setPackage(defaultCameraPackage);
            cameraIntent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
            cameraIntent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,cameraUrl);
            ((Activity) mContext).startActivityForResult(cameraIntent,CHOOSE_PHOTO_INTENT);

但上面的代码有时会启动前置摄像头。我想直接启动后置摄像头。如果可以在 Android 中帮助我解决这个问题。

为了打开认相机,我使用以下代码

 public void defaultpackage() {
        PackageManager packageManager = mContext.getPackageManager();

        List<ApplicationInfo> list = packageManager
                .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
        for (int n = 0; n < list.size(); n++) {
            if ((list.get(n).flags & ApplicationInfo.FLAG_SYstem) == 1) {
                if (list.get(n).loadLabel(packageManager).toString()
                        .equalsIgnoreCase("Camera")) {
                    defaultCameraPackage = list.get(n).packageName;
                    Log.e("package","" + defaultCameraPackage);
                    break;
                }
            }
        }
    }

解决方法

如果您正在寻找可靠的方法:没有办法。请注意,Intent 正在启动第 3 方应用程序,它可能会读取和尊重 Bundle 参数,也可能不会...取决于设备和默认相机应用程序设置。这就是为什么您的代码可能无法在任何地方工作。但您仍然可以尝试使用一些额外的 Intent 参数,例如:

  • cameraIntent.putExtra("android.intent.extras.LENS_FACING_FRONT",0)
  • cameraIntent.putExtra("android.intent.extra.USE_FRONT_CAMERA",false)

你的和上面的两个参数可能涵盖大多数情况/应用,但你仍然不能 100% 确定

,

试试这个兄弟,它对我有用。

  val intent : Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
  intent.putExtra("android.intent.extras.CAMERA_FACING",0)