使用AlertDialog弹窗实现相机拍照或者从图库选取图片显示

本文介绍了在Android应用中如何通过AlertDialog弹窗让用户选择使用相机拍照或从图库选取图片,并详细讲解了从intent中获取Uri以及如何通过contentProvider查询图片路径的过程。不涉及图片大小处理。
摘要由CSDN通过智能技术生成

通过图库选图片主要就是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(),  
                  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值