Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android(2.1或更高版本)上获取设备上的所有图像(特别是SD卡)_Android_Image Processing_Gallery_Thumbnails_Android Sdcard - Fatal编程技术网

如何在android(2.1或更高版本)上获取设备上的所有图像(特别是SD卡)

如何在android(2.1或更高版本)上获取设备上的所有图像(特别是SD卡),android,image-processing,gallery,thumbnails,android-sdcard,Android,Image Processing,Gallery,Thumbnails,Android Sdcard,我在这里遵循了教程: 还有一个几乎相同的代码,我在不同设备上处理图像时遇到了一些问题/不一致 我收集图像的代码如下: private void init_phone_image_grid() { String[] img = { MediaStore.Images.Thumbnails._ID }; Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI; imagecursor = managedQuery

我在这里遵循了教程: 还有一个几乎相同的代码,我在不同设备上处理图像时遇到了一些问题/不一致

我收集图像的代码如下:

private void init_phone_image_grid() {
    String[] img = { MediaStore.Images.Thumbnails._ID };
    Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI;
    imagecursor = managedQuery(uri, img, null,
            null, MediaStore.Images.Thumbnails.IMAGE_ID);
    image_column_index = imagecursor
            .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
    count = imagecursor.getCount();
    imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
    imagegrid.setAdapter(new ImageAdapter(getApplicationContext()));
    imagegrid.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView parent, View v, int position,
                long id) {
            System.gc();
            String[] proj = { MediaStore.Images.Media.DATA };
            actualimagecursor = managedQuery(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj,
                    null, null, null);
            actual_image_column_index = actualimagecursor
                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            actualimagecursor.moveToPosition(position);
            String i = actualimagecursor
                    .getString(actual_image_column_index);
            System.gc();
            Intent intent = new Intent(getApplicationContext(),
                    EvidenceImageView.class);
            intent.putExtra("filename", i);
            startActivity(intent);
        }
    });
}
我有一个运行android 2.2的模拟器,能够创建一个SD卡文件来挂载它。。我使用adb将一些图像复制到一个文件夹中,并重新启动了模拟器(我的应用程序起初没有显示任何图像)。。重新启动后,我的应用程序中出现了一些图像,但不是全部。。然后,在打开模拟器附带的Gallery应用程序后,我可以让我的Gallery加载所有图像。。不过我也有一台HTC Thunberbot,上面有照片(在/sdcard/DCIM/100MEDIA下) 而且它不会在同一个应用程序中显示任何图像(指我正在使用的那个应用程序)。。我没有将手机连接到计算机,因此我知道我的手机能够访问SD卡没有问题。。此外,我还尝试了手机附带的gallery应用程序,我的照片/视频加载效果很好。。我相信HTC手机附带的应用程序与普通安卓手机附带的应用程序有些不同。。这让我想知道系统是否没有以同样的方式处理图像

我是android开发的新手,希望这会很简单。。我查看了一些其他应用程序,比如facebook,当我想上传照片时,它似乎会直接带我进入htc提供的图库。。也许我可以采取同样的方法(不完全确定如何)。。 最终,我希望用户能够选择多个图像,并上传它们所有。。。 我还找到了android附带的摄像头应用程序的源代码:

这有点有用,但在这一点上有相当多的信息需要消化

任何关于“这东西是如何工作的”的解释都会很好。但最重要的是,我如何让我的图库显示所有的缩略图(如有必要,创建缩略图)。。或者,我如何与系统库交互

它似乎把我直接带到了 htc提供的画廊,当我 想上传一张照片。。也许我 我们可以采取同样的方法

这有什么问题吗


非常感谢您提供了如何使用默认媒体播放器的提示。那里有很多好信息。但最终我可能不得不编写自己的缩略图查看器,因为我希望用户能够快速选择许多图像,我只是越想越觉得这样不可能。谢谢你的提示+1来自我。问题是我的手机没有自己创建缩略图,因此缩略图的光标没有得到任何结果。我所做的是检查缩略图的计数与imagecursor的计数,如果它们不同,我会浏览设备上的所有图像,并调用MediaStore.images.Thumbnails.getThumbnail(contentResolver,image\u id,MediaStore.images.Thumbnails.MINI\u KIND,null);其中image_id是全尺寸图像的原始id。我实际上将其存储在本地数据库中,并且仅当计数不同或最新图像与本地数据库中最新图像的日期不匹配时,我才重新编制索引