Android应用如何获取相册中的图片

  介绍

这篇文章给大家介绍Android应用如何获取相册中的图片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>容易出错的地方:

1,当我们指定了照片的uri路径,我们就不能通过data.getData();来获取uri,而应该直接拿到uri(用全局变量或者其他方式),然后设置给imageView

imageView.setImageURI (uri);

2,我发现手机前置摄像头拍出来的照片只有几百KB,直接用imageView.setImageURI (uri);没有很大问题,但是后置摄像头拍出来的照片比较大,这个时候使用imageView.setImageURI (uri);就容易出现的内存(伯父)错误,我们需要先把uri转换为位图,再压缩位图,然后通过imageView.setImageBitmap(位图),来显示图片。

3,将照片存放到SD卡中后,照片不能立即出现在系统相册中,因此我们需要发送广播去提醒相册更新照片。

4,这里用到了sharepreference,要注意用完之后移除缓存。

代码:

<强> MainActivity:

package  com.sctu.edu.test;      import  android.content.Intent;   import  android.graphics.Bitmap;   import  android.graphics.BitmapFactory;   import  android.net.Uri;   import  android.os.Bundle;   import  android.os.Environment;   import  android.provider.MediaStore;   import  android.support.v7.app.AppCompatActivity;   import  android.util.Log;   import  android.view.View;   import  android.widget.ImageView;      import  com.sctu.edu.test.tools.ImageTools;      import  java.io.File;   import  java.io.IOException;   import  java.text.SimpleDateFormat;   import  java.util.Date;      public  class  MainActivity  extends  AppCompatActivity  {      private 才能static  final  int  PHOTO_FROM_GALLERY =, 1;   private 才能static  final  int  PHOTO_FROM_CAMERA =, 2;   private 才能;ImageView  imageView;   private 才能;File  appDir;   private 才能;Uri  uriForCamera;   private 才能;Date 日期;   private 才能String  str =,““   private 才能;SharePreference  sharePreference;      @Override才能   protected 才能;void  onCreate (Bundle  savedInstanceState), {   ,,,super.onCreate (savedInstanceState);   ,,,setContentView (R.layout.activity_main);   ,,,//Android不推荐使用全局变量,我在这里使用了sharePreference   ,,,sharePreference =, SharePreference.getInstance(这个);   ,,,imageView =, (ImageView), findViewById (R.id.imageView);   ,,}//从才能相册取图片   public 才能;void 画廊(View 视图),{   ,,,Intent  Intent =, new 意图();   ,,,intent.setType(“图像/*“);   ,,,intent.setAction (Intent.ACTION_GET_CONTENT);   ,,,startActivityForResult(意图,,PHOTO_FROM_GALLERY);   ,,}//拍才能照取图片   public 才能;void 相机(View 视图),{   ,,,Intent  Intent =, new 意图(MediaStore.ACTION_IMAGE_CAPTURE);      ,,,uriForCamera =, Uri.fromFile (createImageStoragePath ());   ,,,sharePreference.setCache (“uri",, String.valueOf (uriForCamera));   ,,,,   ,,,/* *   ,,,,*,指定了uri路径,startActivityForResult不返回意图,   ,,,,*,所以在onActivityResult()中不能通过data.getData()获取到uri;   ,,,*/,,,intent.putExtra (uriForCamera MediaStore.EXTRA_OUTPUT也);   ,,,startActivityForResult(意图,,PHOTO_FROM_CAMERA);   ,,}      @Override才能   protected 才能;void  onActivityResult (int  requestCode, int  resultCode,, Intent 数据),{   ,,,super.onActivityResult (requestCode, resultCode,,数据);   ,,,//第一层开关   ,,,switch  (requestCode), {   ,,,,,case  PHOTO_FROM_GALLERY:   ,,,,,,,//第二层开关   ,,,,,,,switch  (resultCode), {   ,,,,,,,,,case  RESULT_OK:   ,,,,,,,,,,,if  (data  !=, null), {   ,,,,,,,,,,,,,Uri  Uri =, data.getData ();   ,,,,,,,,,,,,,imageView.setImageURI (uri);   ,,,,,,,,,,,}   ,,,,,,,,,,,休息;   ,,,,,,,,,case  RESULT_CANCELED:   ,,,,,,,,,,,休息;   ,,,,,,,}   ,,,,,,,休息;   ,,,,,case  PHOTO_FROM_CAMERA:   ,,,,,,,if  (resultCode ==, RESULT_OK), {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android应用如何获取相册中的图片