相关疑难解决方法(0)

允许用户为图像选择相机或图库

我想做的事情似乎很简单,但经过几天的搜索,我无法弄明白.

我有一个应用程序,允许用户选择多个(最多5个)图像.我正在使用ImageView.当用户点击时ImageView,我想允许他们选择

  1. 从图库中选择图像,或
  2. 使用相机拍摄图像.

我开始使用ACTION_GET_CONTENT意图,这对于进入画廊非常有用.那么我尝试使用ACTION_PICK_ACTIVITY意图允许用户选择相机或图库:

Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
Intent gallIntent=new Intent(Intent.ACTION_GET_CONTENT);
gallIntent.setType("image/*"); 
Intent camIntent = new Intent("android.media.action.IMAGE_CAPTURE");
pickIntent.putExtra(Intent.EXTRA_INTENT, camIntent);
pickIntent.putExtra(Intent.EXTRA_INTENT, gallIntent)
pickIntent.putExtra(Intent.EXTRA_TITLE, "Select Source");
startActivityForResult(pickIntent, IMAGE_SELECTOR);
Run Code Online (Sandbox Code Playgroud)

但似乎我只能添加一个EXTRA_INTENT.菜单按预期显示,但唯一的选项是图库和文件....没有相机).

有没有更好/更简单的方法来做到这一点,我错过了?谢谢你的帮助.

android android-intent android-gallery android-camera android-intent-chooser

149
推荐指数
9
解决办法
10万
查看次数

使用ACTION_IMAGE_CAPTURE拍摄的图像在某些Gingerbread设备上的ExifInterface.TAG_ORIENTATION返回1

在处理ACTION_IMAGE_CAPTURE活动时我遇到了方向问题.我已经使用过,TAG_ORIENTATION所以我会相应地旋转图片.但现在我们发现在一些较新的设备上这不起作用.事实上,它为所有方向返回1.

这是我们观察到的设备列表;

  • 三星Infuse 4G(2.3.3)
  • 三星Galaxy SII X(2.3.5)
  • 索尼Xperia Arc(2.3.3)

有趣的是,一旦这个图像是图库它正确显示,如果我选择它,TAG_ORIENTATION就会正确填充.所以不知何故OS正确地填写了这些信息,但没有ActivityResult.

确定方向的最可靠方法是什么?有人在另一个问题上建议比较高度和宽度但是在获得这些时,它们会根据方向正确切换(另一个谜)

编辑:似乎这可能连接到另一个错误,其中操作系统复制在库中拍摄的图像(它只应该将图像保存在我们指定的URL中),事情是这个图像在库中有ORIENTATION信息而指定位置的一个没有.

这是错误; http://code.google.com/p/android/issues/detail?id=19268

编辑2:我已经向Android提交了一个新的错误.我很确定这是与上述错误相关的操作系统错误. http://code.google.com/p/android/issues/detail?id=22822

android exif image-capture orientation

40
推荐指数
3
解决办法
4万
查看次数

35
推荐指数
2
解决办法
7万
查看次数

Android EXIF数据总是0,如何更改呢?

我有一个应用程序,使用本机捕获照片Camera,然后将它们上传到服务器.我的问题是所有照片的EXIF方向值都为0,这会使显示器在其他地方混乱.

如何更改EXIF方向?我不是在寻找一种方法来纠正每种情况,只需将其更改为不同的值.

我正在使用三星Galaxy Note 4

我尝试了这个在拍照前设置相机方向的解决方案:设置Android Photo EXIF方向

Camera c = Camera.open();
c.setDisplayOrientation(90);

Camera.Parameters params = mCamera.getParameters();
params.setRotation(0); // tried 0, 90, 180
c.setParameters(params);
Run Code Online (Sandbox Code Playgroud)

但它不会影响生成的EXIF数据,它仍然始终为0

我也试过这些解决方案,在拍摄后旋转图像:EXIF方向标记值始终为0,用于使用肖像相机app拍摄的图像

当旋转照片时,EXIF方向始终为0.

我还尝试直接设置EXIF数据:如何在Android中进行位图压缩后保存Exif数据

private Camera.PictureCallback mPicture = new Camera.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        final File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE, "");
        try {
            FileOutputStream fos = new FileOutputStream(pictureFile);

            ExifInterface exif = new ExifInterface(pictureFile.toString());
            exif.setAttribute(ExifInterface.TAG_ORIENTATION, "3");
            exif.saveAttributes();

            fos.write(data);
            fos.close();

            //upload photo..
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但上传后EXIF Orientation仍为0.

我也看过这些解决方案:

Exif数据TAG_ORIENTATION始终为0 …

camera android exif image orientation

25
推荐指数
3
解决办法
1万
查看次数