当前位置: 首页 > 面试题库 >

相机意图结果问题

罗浩然
2023-03-14
问题内容

我试图启动内置相机拍摄照片,该图片将具有由启动相机的活动指定的名称。(下面的代码)

  1. 相机返回时,onActivityResult()直接转到resultCode == Activity.RESULT_CANCELED。对此的任何解释和解决方案将不胜感激。

  2. 相机确实可以拍摄图像,我可以使用文件查看器在sdcard中看到它,但是它的名称是相机中的库存图像。如何获得该拍摄图像的名称作为活动提供的图像?

相机意图代码

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File image = new File("Team image.jpg");
camera.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
camera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
camera.putExtra(MediaStore.Images.Media.TITLE, "Team image");
        startActivityForResult(camera, PICTURE_RESULT);

活动结果代码

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){

    if(requestCode == PICTURE_RESULT){
        if(resultCode == Activity.RESULT_OK) {
            if(data!=null){
                Bitmap image = BitmapFactory.decodeFile(data.getExtras().get(MediaStore.Images.Media.TITLE).toString());
                grid.add(image);            
                images.addItem(image);
            }
            if(data==null){
                Toast.makeText(Team_Viewer.this, "no data.", Toast.LENGTH_SHORT).show();
            }
        }
        else if(resultCode == Activity.RESULT_CANCELED) {
            Toast.makeText(Team_Viewer.this, "Picture could not be taken.", Toast.LENGTH_SHORT).show();
        }
}
}

问题答案:

这两个问题可能相关,与您创建传递给相机的文件参考的方式有关。如果要将图像文件保存到SD卡,则需要创建文件引用,该文件引用应包含该位置的完整路径,而不仅仅是文件名。例如,此代码会将映像文件保存在SD卡根目录中:

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File image = new File(Environment.getExternalStorageDirectory(),"TeamImage.jpg");
camera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));

startActivityForResult(camera, PICTURE_RESULT);

我还更改了您的文件名,使其不包含空格;只是因为我不确定Camera应用程序也不会在该应用程序上崩溃。由于相机在尝试打开并写入文件位置时会感到困惑,因此可能总是使用来返回RESULT_CANCELED。您不需要此处的WRITE_EXTERNAL_STORAGE权限,因为“相机”应用正在访问SD卡。

还有一点需要注意:我不认为其他其他MediaStore附加功能都可以通过此Intent传递。通常,如果要将元数据附加到图像,则必须先将带有该元数据的Uri引用插入MediaStore
ContentProvider,然后再将图像保存到磁盘。

希望有帮助!



 类似资料:
  • 我正试着拍一张照片并把它保存到一个自定义的位置- onActivityResult()中的数据为空。我错过了什么?

  • 我正试图让我的应用程序为新的Android M权限更改做好准备,发现了一些奇怪的行为。我的应用程序使用相机意图机制,允许用户从相机中获得一张照片。但是在另一个活动中,需要使用具有camera权限的camera本身(因为库依赖项card.io需要这样做)。 这是我用来让用户用相机点击一张照片和/或选择一张图像的代码 我在活动中单击按钮时调用。当我没有相机权限在我的应用程序,它的工作很好,但与添加,我

  • 我正在尝试使用摄像头将图像上传到firebase。但是,我得到的图像质量太低(不可读)。我已经编写了以下代码(没有编译错误)。但是,我不明白为什么它不能产生一个可读的图像。 我尝试过改变位图的质量参数。压缩,但图像质量保持不变。但同样的压缩代码适用于来自gallery的图像。

  • 编辑:我调试了应用程序,并用初始化了。这消除了错误,但是现在ImageView没有得到更新,但是当我从Gallery中选择image时,它已经更新了。

  • 我想从摄像机中捕获视频并保存在应用程序目录中(不要将视频保存在设备库中),然后将视频路径插入数据库以加载并显示在我的应用程序中 我在活动中尝试: 但是当转到文件目录时,视频大小为0Kb!!并保存到设备库如何解决这个问题?谢谢

  • 我正在使用相机意图启动应用程序中的相机,但一旦意图被激发,就被激发,我甚至还没有拍摄到一张照片。 当我拍摄一张照片时,选择它并返回到我的活动中,根本不会被调用 下面是我如何发射相机 为什么只在相机意图启动后调用?