我正在尝试将galery中的照片添加到a ImageView但是我收到此错误:
java.lang.RuntimeException:将结果ResultInfo {who = null,request = 1,result = -1,data = Intent {dat = content:// media/external/images/media/1}}传递给activity {hotMetter. pack/hotMetter.pack.GetPhoto}:java.lang.NullPointerException
这是我的代码:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
}
Bitmap bitmap=null;
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == Activity.RESULT_OK)
{
if (requestCode == SELECT_PICTURE)
{
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
tv.setText(selectedImagePath);
img.setImageURI(selectedImageUri);
}
}
public String getPath(Uri uri)
{
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, …Run Code Online (Sandbox Code Playgroud) 我正在开发一个图像过滤器应用程序 但如果我没有任何图像,就无法真正尝试.
我知道我可以在手机上测试它,但它不一样,因为我需要错误信息和其他东西.
我只是想从AVD的图库中访问图像,以便我可以测试我的应用程序.我该如何添加一个?
我正在使用Android Studio.我看到了一些关于如何在Eclipse中执行此操作的示例,但我没有使用它.
那么,如何将图像添加到模拟器图库?
我正在寻找:现有照片库名称的列表(希望它们的顶部缩略图)画廊的内容(我可以根据需要加载缩略图和完整大小)
我如何获得"画廊"列表(不知道这是否是Android中适用于Gallery应用程序中可见图像分组的正确术语...)及其内容?我需要访问其结构中的图库,而不使用现有的图库显示(我正在创建一个全新的,而不是照片请求者的过度层等)
我认为MediaStore.Images是我需要的地方,但我没有看到任何会给我分组的东西......
我有一个OutOfMemory异常,画廊超过600x800像素JPEG.
环境
我一直在使用带有大约600x800像素的JPG图像的Gallery.
由于我的内容可能比图像更复杂,我将每个视图设置为一个RelativeLayout,它将JPView包装在ImageView中.
为了"加速"用户体验,我有一个4个插槽的简单缓存,预取(在一个looper中)左边有1个图像,1个图像右边显示图像并将它们保存在4槽HashMap中.
该平台
我使用的是256 RAM和128堆大小的AVD,屏幕为600x800.它也发生在Entourage Edge目标上,除了使用设备它更难调试.
问题
我一直在例外:
OutofMemoryError: bitmap size exceeds VM budget
Run Code Online (Sandbox Code Playgroud)
并且它在获取第五个图像时发生.我试图改变我的图像缓存的大小,它仍然是相同的.
奇怪的是:应该没有内存问题
为了确保堆限制远离我的需要,我在开始时定义了一个虚拟的8MB数组,并将其保留为未引用,以便立即调度.它是活动线程的成员,定义如下
static { @SuppressWarnings("unused")
byte dummy[] = new byte[ 8*1024*1024 ]; }
Run Code Online (Sandbox Code Playgroud)
结果是堆大小接近11MB并且它们都是免费的. 注意我在它开始崩溃后添加了这个技巧.它使OutOfMemory不那么频繁.
现在,我正在使用DDMS.在崩溃之前(崩溃后变化不大),DDMS显示:
ID Heap Size Allocated Free %Used #Objects
1 11.195 MB 2.428 MB 8.767 MB 21.69% 47,156
Run Code Online (Sandbox Code Playgroud)
并在详细信息表中显示:
Type Count Total Size Smallest Largest Median Average
free 1,536 8.739MB 16B 7.750MB 24B 5.825KB
Run Code Online (Sandbox Code Playgroud)
最大的块是7.7MB.然而LogCat说:
ERROR/dalvikvm-heap(1923): 925200-byte external allocation too large for this process.
Run Code Online (Sandbox Code Playgroud)
如果你介意中位数和平均值之间的关系,可以假设大多数可用的块非常小.但是,有一个块足够大的位图,它是7.7M.怎么还不够呢?
注意:我记录了一个堆跟踪.在查看分配的数据量时,感觉不会超过2M.它确实与DDMS的可用内存报告相匹配. …
我目前正在建立一个水平的视频库.
我想制作类似的内容,只有一个视频居中,部分是上一个和下一个视频:

我首先选择了一个画廊,但它的局限性使我寻找其他东西.我想显示一个页面指示器,使用Gallery实现起来非常困难.
第二种选择是从Android兼容性库中获取ViewPager.我找到了一种方法来实现页面指示器.但现在,如何部分显示左右页面?
android gallery pager android-viewpager android-support-library
是否有要求获取多张图片的意图?
我们知道Intent.ACTION_PICK或Intent.ACTION_GET_CONTENT获得单个图像.我们的应用程序也注册为IntentFilter for android.intent.action.SEND和android.intent.action.SEND_MULTIPLE
但是,我们希望我们的应用程序能够使用类似应用程序的Gallery来选择多个图像.有意图吗?
我正从我的应用程序中删除一个图像文件.我在做
new File(filename).delete ();
Run Code Online (Sandbox Code Playgroud)
这实际上是删除文件.但是图片仍然可以在画廊中看到.
在搜索时我发现我们应该使用
getContentResolver().delete(Uri.fromFile(file), null,null); 删除
但在这里我得到了例外:
未知的文件URL.java.lang.IllegalArgumentException:未知的URL文件:///mnt/sdcard/DCIM/Camera/IMG_20120523_122612.jpg
当我看到任何文件浏览器时,会出现此特定图像.请帮我解决这个问题.有没有其他方法可以在物理删除图像时更新图库
我将一些图像加载到图库中.现在我可以滚动但是一旦开始滚动滚动就不会停止.我希望画廊只是滚动到下一个图像,然后停止,直到用户再次执行滚动手势.
这是我的代码
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class GalleryExample extends Activity {
private Gallery gallery;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gallery = (Gallery) findViewById(R.id.examplegallery);
gallery.setAdapter(new AddImgAdp(this));
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
Toast.makeText(GalleryExample.this, "Position=" + position, Toast.LENGTH_SHORT).show();
}
});
}
public class AddImgAdp extends BaseAdapter {
int GalItemBg;
private Context cont;
private Integer[] Imgid = {
R.drawable.a_1, R.drawable.a_2, R.drawable.a_3, R.drawable.a_4, R.drawable.a_5, R.drawable.a_6, R.drawable.a_7
};
public AddImgAdp(Context c) …Run Code Online (Sandbox Code Playgroud) 我试图从图库中选择图像,但我只找到了选择单个图像的方法.
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);
Run Code Online (Sandbox Code Playgroud)
有没有办法选择多个图像?
我真的需要这个代码,我在互联网上搜索了3个小时,但我找不到一个完整而简单的代码,我测试了很多代码,但有些没有用,有些不好,请帮我一个完整而简单代码,谢谢编辑:我有选择图像的代码,但请给我一个完整的代码,我在标题中说的所有事情,因为我不能像代码.
btn_choose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"),SELECT_PICTURE);
alertDialog1.dismiss();
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
selectedImagePath1=selectedImagePath;
System.out.println("Image Path : " + selectedImagePath);
image_capture1.setImageURI(selectedImageUri);
}
Run Code Online (Sandbox Code Playgroud)