【问题标题】:Launch Back Camera On a Button Click?单击按钮启动后置摄像头?
【发布时间】:2021-08-15 08:38:21
【问题描述】:

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

【问题讨论】:

  • 为了打开相机为什么这么多代码兄弟。无论是从活动还是片段中,只要满足您的条件(例如单击哪个按钮),您就会触发意图。
  • @Thirumalai 我只想打开设备默认摄像头。
  • 默认前置摄像头将在您使用 val intent 时打开:Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivity(intent)。如果你想要特定的正面或背面,你已经通过了相应的额外放置

标签: android camera android-camera android-camera-intent camera-flash


【解决方案1】:

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

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

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

【讨论】:

  • 就像在回答中一样:它可能不会,你也不能用它做任何事情(好吧,除了创建自己的Activity 处理相机)。您是否尝试过安装其他一些相机应用程序(并设置为默认值)并测试使用所有三个 Intent 参数设置后置摄像头是否适用?
  • 我只能使用默认相机,不能使用其他相机应用
  • 几乎每个设备制造商都制作了自己的相机应用程序并设置为默认设置,因此实际上市场上已经有多个“默认相机”应用程序。仍然用户可能总是安装更好的等效项并将其设置为默认值(例如Open Camera 安装了 50M+ 次)。并且它们中的任何一个(默认或已安装)可能不尊重您的Intent 参数,我的经验是这很常见......您将无法获得始终在每台设备上设置摄像头的可靠方法。 nuff 说,祝你好运
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多