0

我只是想知道是否有任何方法可以仅使用意图来启动后置摄像头。我不想使用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;
                }
            }
        }
    }
4

2 回答 2

0

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

  val intent : Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
  intent.putExtra("android.intent.extras.CAMERA_FACING", 0)
于 2021-05-27T05:51:58.017 回答
0

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

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

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

于 2021-05-27T05:36:56.357 回答