在不显示选择器的情况下启动 Native Camera

Posted

技术标签:

【中文标题】在不显示选择器的情况下启动 Native Camera【英文标题】:Start Native Camera without showing chooser 【发布时间】:2012-05-29 22:14:46 【问题描述】:

是否可以启动原生 android 相机应用来启动默认相机而不是显示意图选择器,然后启动 Activity 以获得结果?

【问题讨论】:

【参考方案1】:

您可以使用 Intent 启动相机应用,例如: Android camera intent

你可以像这样在你的意图中设置一个特定的类:Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");intent.setClassName("com.android.camera", "com.android.camera.Camera");

这不会显示意图选择器并启动默认的相机应用程序。

【讨论】:

这不起作用。在清单中注册此活动时出错,我也这样做了。但问题仍然存在 这不适用于不同的手机,因为许多 OEM 使用自己的相机,具有不同的类/包名称。 ***.com/questions/3748605/… setClassName 不起作用,没有这条线它可以工作,但如果有一些 3rd 方应用程序,如 Line CameraPaper Camera 安装在你手机上面的action会打开一个选择器。那么如何在不显示选择器的情况下打开默认相机呢? 检查camera-app的包和类是什么,并将这些信息放在setClassName中。【参考方案2】:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);            
 startActivityForResult(intent, TAKE_PICTURE);

【讨论】:

【参考方案3】:
imageView = (ImageView)findViewById(R.id.imageView1);
        Button photoButton = (Button)findViewById(R.id.button1);
        photoButton.setOnClickListener(new View.OnClickListener() 

            @Override
            public void onClick(View v) 
                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(cameraIntent, CAMERA_REQUEST);
            
        );
    

    protected void onActivityResult(int requestCode, int resultCode, Intent data)  
        if (requestCode == CAMERA_REQUEST)  
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            imageView.setImageBitmap(photo);
         

     

在清单中

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

【讨论】:

这要求选择器。我只想启动原生安卓相机,我想隐藏选择器意味着它直接打开原生相机应用程序。

以上是关于在不显示选择器的情况下启动 Native Camera的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试在不打开选择器的情况下向多个人发送电子邮件,这可能吗?

谷歌文档如何在不使用 Flash 查看器的情况下显示我的 .PPT 文件?

在不使用 xcode react-native 的情况下更改设备

为什么glDrawElments()在不使用任何着色器的情况下工作?

React Native中如何在不改变路由的情况下改变NavigatorIOS的标题

为啥 glDrawElments() 在不使用任何着色器的情况下工作?