美文网首页
android 打开相册或相机获取图片

android 打开相册或相机获取图片

作者: 快乐小哥 | 来源:发表于2017-01-06 10:04 被阅读672次

首先我们写好一个布局

用来添加图片的gridview,

```

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {

private final int RESQUEST=1;

private final int REQUEST_CODE_CAPTURE_CAMEIA=2;

private GridView rv_add_picture;

private Listpics;

private PicAdapter mMPicAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//初始化各种数据

pics=newArrayList<>();

pics.add("file:///android_asset/ic_add_white_gray_small.png");

rv_add_picture= (GridView) findViewById(R.id.rv_add_picture);

mMPicAdapter=newPicAdapter(pics,this);

rv_add_picture.setOnItemClickListener(this);

rv_add_picture.setAdapter(mMPicAdapter);

}

```

//进入相册或相机后回调过来数据

@Override

protected voidonActivityResult(intrequestCode,intresultCode,Intent data) {

super.onActivityResult(requestCode,resultCode,data);

if(resultCode == Activity.RESULT_OK) {

if(requestCode ==RESQUEST) {

Uri uriPic = data.getData();

getRealPathFromURI(uriPic);

}else if(requestCode ==REQUEST_CODE_CAPTURE_CAMEIA) {

Uri uri = data.getData();

if(uri ==null) {

//use bundle to get data

Bundle bundle = data.getExtras();

if(bundle !=null) {

Bitmap photo = (Bitmap) bundle.get("data");//get bitmap

String spath = Environment.getExternalStorageDirectory() + File.separator+"gridview"+ File.separator+ System.currentTimeMillis() +".jpeg";

//spath :生成图片取个名字和路径包含类型

saveImage(photo,spath);

}

}

}

}

}

//保存图片到指定路径

public void saveImage(Bitmap photo,String spath) {

try{

BufferedOutputStream bos =newBufferedOutputStream(

newFileOutputStream(spath,false));

photo.compress(Bitmap.CompressFormat.JPEG,100,bos);

pics.add(0,spath);

mMPicAdapter.setData(pics);

bos.flush();

bos.close();

}catch(Exception e) {

e.printStackTrace();

}

}

//获取相册图片路径

public voidgetRealPathFromURI(Uri contentUri) {

String[] filePathColumns = {MediaStore.MediaColumns.DATA};

ContentResolver contentResolver = getContentResolver();

Cursor c = contentResolver.query(contentUri,filePathColumns,null,null,null);

if(c !=null) {

c.moveToFirst();

intcolumnIndex = c.getColumnIndex(filePathColumns[0]);

String pathImg = c.getString(columnIndex);

c.close();

pics.add(0,pathImg);

mMPicAdapter.setData(pics);

}

}

@Override

public void onItemClick(AdapterView parent,View view,intposition,longid) {

if(position ==pics.size() -1) {

AlertDialog.Builder builder =newAlertDialog.Builder(this)

.setNegativeButton("拍照",newDialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog,intwhich) {

String state = Environment.getExternalStorageState();

//如果插入了内存卡的话

if(state.equals(Environment.MEDIA_MOUNTED)) {

Intent getImageByCamera =newIntent("android.media.action.IMAGE_CAPTURE");

startActivityForResult(getImageByCamera,REQUEST_CODE_CAPTURE_CAMEIA);

}

else{

Toast.makeText(getApplicationContext(),"请确认已经插入SD卡",Toast.LENGTH_LONG).show();

}

}

}).setPositiveButton("相册",newDialogInterface.OnClickListener() {

@Override

public voidonClick(DialogInterface dialog,intwhich) {

Intent picIntent =newIntent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivityForResult(picIntent,RESQUEST);

}

});

builder.show();

}

}

}

```

这时候我们就可以得到我们想要的功能了,界面不是特别的优雅,可以按照自己的需求,进行修改相应的界面就可以了!

图片1 图二

由于用的模拟器,所以图片是这样的!

相关文章

  • android 打开相册或相机获取图片

    首先我们写好一个布局 用来添加图片的gridview, ``` public class MainActivity...

  • Android打开系统拍照&相册获取头像

    Android打开系统拍照&相册获取头像 现在许多应用都有上传头像的功能,再次奉上代开系统相册或打开系统相机拍照的...

  • 【Android】从相册或相机中获取一张图片

    【Android】从相册或相机中获取一张图片 前言:关于权限请求 Android 从 6.0 开始增加权限检查,所...

  • 小程序原生API收集--媒体API

    1、从相册选择图片,或使用相机拍照 2、预览图片 3、获取图片信息 4、保存图片到系统相册

  • iOS中更换头像

    w首先一般更换头像的图片从二个地方获取:相机或者相册 1.打开相机或者相册代码如下 UIImagePickerCo...

  • Android获取图片:拍照和从相册中选择

    概述 在Android开发中获取图片主要包括如下两种方式: 打开相机拍照 从图库中选择图片 一、打开相机拍照 打开...

  • 系统SDK介绍-02

    系统SDK介绍 打开相册选择图片 打开相册选择视频 打开相机拍摄图片 打开相机拍摄视频 配置权限: 在info.p...

  • 图片多选的实现

    图片多选的实现 分为两部分1 调用相机拍照添加图片2 打开相册添加图片 1 使用相机添加图片 打开相册添加图片使用...

  • iOS获取图片名称

    获取图片名称, 一、要求 1、获取相册图片名称 2、获取拍照图片名称 二、实现 本次记录的方法是调用系统相册、相机...

  • Android 打开相机、相册和裁剪图片

    Android 打开相机、相册和裁剪图片是基本上每个应用都需要用到的功能。在 Android 7.0 之后,不再支...

网友评论

      本文标题:android 打开相册或相机获取图片

      本文链接:https://www.haomeiwen.com/subject/hqptbttx.html