android 调用系统相册和系统拍照功能的Demo

其实这真的没有什么技术含量,就是有点时候,想找又找不到这种代码,因为越简单越容易忽视,记录一下,万一哪天会用到。。。。。。

package com.app.activity;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
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.renderscript.Sampler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {
	private Button butph, buttc;
	private ImageView im;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		butph = (Button) findViewById(R.id.phones);
		buttc = (Button) findViewById(R.id.tukuxuanze);
		im = (ImageView) findViewById(R.id.imageView1);
		butph.setOnClickListener(this);
		buttc.setOnClickListener(this);
	}

	private Uri imuri;

	private String getFileName() {
		Date date = new Date(System.currentTimeMillis());
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MMdd_HH");
		return dateFormat.format(date) + "bitmap.jpg";

	}

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		switch (arg0.getId()) {
		case R.id.imageView1:

			break;
		case R.id.phones:
			// 手机sdcark的跟路径,当然这里可以写
			File output = new File(Environment.getExternalStorageDirectory(),
					getFileName());

			try {
				if (output.exists()) {
					output.delete();
				}
				output.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			// 图片的存储设置
			imuri = Uri.fromFile(output);
			Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");

			intent.putExtra(MediaStore.EXTRA_OUTPUT, imuri);
			startActivityForResult(intent, 100);
			break;
		case R.id.tukuxuanze:
			bitmapFormTuku();

			break;
		default:
			break;
		}
	}

	/**
	 * 调用图库中图片的各种参数
	 */
	private void bitmapFormTuku() {
		Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
		intent.setType("image/*");
		// intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
		// "image/*");
		intent.putExtra("crop", true);// 设置了参数,就会调用裁剪,如果不设置,就会跳过裁剪的过程。
		intent.putExtra("aspectX", 53);// 这个是裁剪时候的 裁剪框的 X 方向的比例。
		intent.putExtra("aspecty", 63);

		intent.putExtra("outputX", 50); // 返回数据的时候的 X 像素大小。
		intent.putExtra("outputY", 100); // 返回的时候 Y 的像素大小。

		intent.putExtra("return-data", true);// 是否要返回值。 一般都要
		startActivityForResult(intent, 300);
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		if (resultCode == RESULT_OK) {
			switch (requestCode) {
			case 100:

				Intent intent = new Intent("com.android.camera.action.CROP");
				intent.setDataAndType(imuri, "image/*");
				intent.putExtra("scale", true);
				intent.putExtra(MediaStore.EXTRA_OUTPUT, imuri);
				startActivityForResult(intent, 200);

				break;
			case 200:

				try {
					Bitmap bit = BitmapFactory
							.decodeStream(getContentResolver().openInputStream(
									imuri));
					im.setImageBitmap(bit);
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			case 300:

				Uri uri = data.getData();
				if (data != null) {
					im.setImageURI(uri);
				}

				break;
			default:
				break;
			}
		}
	}

}

当然,要在minafest.xml中添加读取sd卡的权限

点击下载源码

http://download.csdn.net/detail/jiajia1112223/9447906

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值