通过图库选图片主要就是onActivityResult方法中返回的intent中获取Uri,再根据Uri和指定列名使用contentProvider去查找出此图片的路径
使用相机拍照显示之前一篇文章已经有描述,此篇文章不对图片的大小进行处理。
2016/12/28
今天偶尔看到拍摄后再调用系统截图的,自己也搬过来吧。
代码:
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
private static final int FROM_CAMERA=1;
private static final int FROM_PIC=2;
private ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(this);
img=(ImageView) findViewById(R.id.img);
}
@Override
public void onClick(View v) {
initView();
}
private void initView(){
AlertDialog.Builder builder=new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("选择图片:")
//设置两个item
.setItems(new String[]{"相机","图库"}, new android.content.DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
pickPicFromCam();
break;
case 1:
pickPicFromPic();
break;
default:
break;
}
}});
builder.create().show();
}
private void pickPicFromCam(){
try {
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(createImageFile()));
startActivityForResult(intent, FROM_CAMERA);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void pickPicFromPic(){
Intent intent=new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, FROM_PIC);
}
String mCurrentPhotoPath;
//创建路径
private File createImageFile() throws IOException {
// Create an image file name
// String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new
// Date());
// String imageFileName = "JPEG_" + timeStamp + "_";
// File storageDir =
// getExternalFilesDir(Environment.DIRECTORY_PICTURES);//由getExternalFilesDir(),以及getFilesDir()创建的目录,应用卸载后会被删除!
//
// File image = File.createTempFile(
// imageFileName, /* prefix */
// ".jpg", /* suffix */
// storageDir /* directory */
// );
//
// // Save a file: path for use with ACTION_VIEW intents
// mCurrentPhotoPath = "file:" + image.getAbsolutePath();
// return image;
//检测内存卡是否存在
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
Log.d("my", "no SDCARD!!!!");
} else {
String pre = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss_SSS")
.format(new Date());
//创建图片保存的位置
File path = new File(Environment.getExternalStorageDirectory(),