我已经按照这里的教程进行操作:http ://androidsamples.blogspot.com/2009/06/how-to-display-thumbnails-of-images.html 以及另一个几乎相同的代码,我有在不同设备上处理图像的方式存在一些问题/不一致。
我收集图像的代码是这样的:
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 的模拟器,并且能够创建一个 sdcard 文件来挂载它。我使用 adb 将一些图像复制到一个文件夹中并重新启动了模拟器(我的应用程序一开始没有显示任何图像)。重新启动后一些图像显示在我的应用程序中,但不是全部。然后在我打开模拟器附带的图库应用程序后,我能够让我的图库很好地加载所有图像。但是我也有一个 HTC thunberbolt而且我上面有照片(在/sdcard/DCIM/100MEDIA下),它根本不会在同一个应用程序中显示任何图像(指的是我正在处理的那个)..我没有挂电话到电脑上,所以我知道我的手机能够访问 sdcard 没有问题。我也是我试过我手机附带的图库应用程序,我的照片/视频加载得很好。我相信 HTC 手机附带的应用程序与普通安卓手机附带的应用程序有点不同。这让我想知道如果系统没有以相同的方式处理图像..
我是 android 开发的新手,希望这会很简单.. 我查看了一些其他应用程序,例如 facebook,当我想上传照片时,它似乎直接带我进入 htc 提供的画廊..也许我可以采取同样的方法(不完全确定如何)..最终我希望用户能够选择多个图像并上传所有图像......我还找到了 Android 附带的相机应用程序的源代码:
https://android.googlesource.com/platform/packages/apps/Camera/+/master/src/com/android/camera
这有点有用,但在这一点上需要消化相当多的信息。
任何关于“这些东西是如何工作的”的解释都会很棒。但主要的是,我如何让我的画廊显示所有缩略图(如果需要,创建缩略图).. 或者,我如何与系统画廊交互..