相关疑难解决方法(0)

从mediastore获取URI的文件名和路径

onActivityResult从mediastore图像选择返回,我可以使用以下内容获取图像的URI:

Uri selectedImage = data.getData();
Run Code Online (Sandbox Code Playgroud)

将其转换为字符串可以得到:

content://media/external/images/media/47
Run Code Online (Sandbox Code Playgroud)

或者路径给出:

/external/images/media/47
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法找到将其转换为绝对路径的方法,因为我想将图像加载到位图而不必将其复制到某处.我知道这可以使用URI和内容解析器完成,但这似乎在重新启动手机时中断,我想MediaStore在重新启动之间不会保持其编号相同.

android uri absolute-path mediastore

376
推荐指数
12
解决办法
32万
查看次数

Android:从内容URI获取文件URI?

在我的应用程序中,用户将选择应用程序随后处理的音频文件.问题是,为了让应用程序按照我想要的方式处理音频文件,我需要URI为文件格式.当我使用Android的原生音乐播放器在应用程序中浏览音频文件时,URI是一个内容URI,如下所示:

content://media/external/audio/media/710
Run Code Online (Sandbox Code Playgroud)

但是,使用流行的文件管理器应用程序Astro,我得到以下内容:

file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
Run Code Online (Sandbox Code Playgroud)

后者对我来说更容易使用,但当然我希望应用程序具有用户选择的音频文件的功能,而不管他们用来浏览他们的集合的程序.所以我的问题是,有没有办法将content://样式URI转换为file://URI?否则,你会建议我解决这个问题?以下是调用选择器的代码,供参考:

Intent ringIntent = new Intent();
ringIntent.setType("audio/mp3");
ringIntent.setAction(Intent.ACTION_GET_CONTENT);
ringIntent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(ringIntent, "Select Ringtone"), SELECT_RINGTONE);
Run Code Online (Sandbox Code Playgroud)

我使用内容URI执行以下操作:

m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
Run Code Online (Sandbox Code Playgroud)

然后用所述文件做一些FileInputStream.

android uri file

109
推荐指数
6
解决办法
12万
查看次数

Android获取相机位图的方向?并向后旋转-90度

我有这个代码:

//choosed a picture
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode == RESULT_OK) {
        if (requestCode == ImageHelper.SELECT_PICTURE) {

            String picture           = "";

            Uri selectedImageUri     = data.getData();
            //OI FILE Manager
            String filemanagerstring = selectedImageUri.getPath();
            //MEDIA GALLERY
            String selectedImagePath = ImageHelper.getPath(mycontext, selectedImageUri);

            picture=(selectedImagePath!=null)?selectedImagePath:filemanagerstring;
Run Code Online (Sandbox Code Playgroud)

...

这只是一个图片选择器,来自画廊.这很不错,但是当我在一个imageview上打开这张照片时,带有相机的"PORTRAIT MODE"的图像看起来不错,但带有相机的"LANDSCAPE MODE"的图像在-90度开启.

我怎样才能将这些照片旋转回去?

    Bitmap output       = Bitmap.createBitmap(newwidth, newheight, Config.ARGB_8888);
    Canvas canvas       = new Canvas(output);
Run Code Online (Sandbox Code Playgroud)

我试过这个:

Log.e("w h", bitmap.getWidth()+" "+bitmap.getHeight());
if (bitmap.getWidth()<bitmap.getHeight()) canvas.rotate(-90);
Run Code Online (Sandbox Code Playgroud)

但这不起作用,所有图像大小为:*2560 1920像素(PORTRAIT和LANDSCAPE模式全部)

如何旋转LANDSCAPE图片?

谢谢莱斯利

android

55
推荐指数
3
解决办法
6万
查看次数

在我的Android应用中访问图片应用中的图片

就像iPhone有一个UIImagePickerController让用户访问存储在设备上的图片一样,Android SDK中是否有类似的控件?

谢谢.

android android-image

42
推荐指数
2
解决办法
4万
查看次数

从内置存储的Android手机上的图库中获取图像

嗨,我正在开发一个Android Gallery应用程序,我从内置库中获取图像并显示它.我正在使用如下代码

        String[] projection = {MediaStore.Images.Thumbnails._ID};


   Cursor cursor = getContentResolver().query(MediaStore.Images.Thumbnails.INTERNAL_CONTENT_URI,
                projection, // Which columns to return
                null,       // Return all rows
                null,       
                null);


        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
        int size = cursor.getCount();
        // If size is 0, there are no images on the SD Card.
        if (size == 0) 
        {
            Log.e("size 0","0");
        }
Run Code Online (Sandbox Code Playgroud)

问题是,当我在仅具有内部存储(Galaxy Nexus)的手机上运行此代码时,即使内置图库中有图像,我也会收到大小为零的Log.我该如何解决这个问题.请帮忙.谢谢!

android gridview image-gallery android-gallery

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