Android之照相机的使用
来源:互联网 发布:java语言培训中心 编辑:程序博客网 时间:2024/05/02 01:25
最近在做图形处理的项目,要使用到照相机。主要实现调用图库功能打开图片或者调用照相机照相将图片返回并显示出来。下面是主要代码:
package com.cloay.camera;import java.io.FileNotFoundException;import android.app.Activity;import android.app.AlertDialog;import android.content.ContentResolver;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.ImageButton;import android.widget.ImageView;/** * 打开照相机或者图库添加图片 * CameraTestActivity.java * @author Cloay * 2011-11-30 */public class CameraTestActivity extends Activity {private ImageButton camera;private ImageView image; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); image = (ImageView) findViewById(R.id.image); camera = (ImageButton) findViewById(R.id.camera); camera.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if(event.getAction() == MotionEvent.ACTION_DOWN){v.setBackgroundResource(R.drawable.camera_bg_pressed);}if(event.getAction() == MotionEvent.ACTION_UP){showMenuDialog();v.setBackgroundResource(R.drawable.camera_bg_normal);}return false;}}); } private void showMenuDialog() {View menuView = View.inflate(CameraTestActivity.this, R.layout.menu, null);final AlertDialog menuDialog = new AlertDialog.Builder(CameraTestActivity.this).setView(menuView).setTitle("选择操作")//.setIcon(R.drawable.camera).create();menuDialog.show();menuView.findViewById(R.id.camera).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {menuDialog.dismiss();Intent intentCamera = new Intent("android.media.action.IMAGE_CAPTURE");//使用照相机startActivityForResult(intentCamera, Activity.DEFAULT_KEYS_DIALER);}});menuView.findViewById(R.id.picture).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {menuDialog.dismiss();//Intent intentPhoto = new Intent(Intent.ACTION_GET_CONTENT, null); //intentPhoto.setType("image/*"); //这个参数是确定要选择的内容为图片//intentPhoto.putExtra("crop", "circle"); //这个参数 不太懂,唯一知道的是:设置了参数,就会调用裁剪,如果不设置,就会跳过裁剪的过程。//intentPhoto.putExtra("aspectX", 33); //这个是裁剪时候的 裁剪框的 X 方向的比例。//intentPhoto.putExtra("aspectY",43); //同上Y 方向的比例. (注意: aspectX, aspectY ,两个值都需要为 整数,如果有一个为浮点数,就会导致比例失效。)//设置aspectX 与 aspectY 后,裁剪框会按照所指定的比例出现,放大缩小都不会更改。如果不指定,那么 裁剪框就可以随意调整了。//intentPhoto.putExtra("outputX", 50); //返回数据的时候的 X 像素大小。//intentPhoto.putExtra("outputY", 100); //返回的时候 Y 的像素大小。//以上两个值,设置之后会按照两个值生成一个Bitmap, 两个值就是这个bitmap的横向和纵向的像素值,如果裁剪的图像和这个像素值不符合,那么空白部分以黑色填充。//intentPhoto.putExtra("noFaceDetection", true); // 是否去除面部检测, 如果你需要特定的比例去裁剪图片,那么这个一定要去掉,因为它会破坏掉特定的比例。////intentPhoto.putExtra("return-data", true); //是否要返回值。 一般都要。//startActivityForResult(intentPhoto, 1); Intent intent = new Intent(); /* 开启Pictures画面Type设定为image */ intent.setType("image/*"); /* 使用Intent.ACTION_GET_CONTENT这个Action */ intent.setAction(Intent.ACTION_GET_CONTENT); /* 取得相片后返回本画面 */ startActivityForResult(intent, 2);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if(requestCode == 2){if (resultCode == RESULT_OK) { Uri uri = data.getData(); ContentResolver cr = this.getContentResolver(); try { Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); /* 将Bitmap设定到ImageView */ image.setImageBitmap(bitmap); } catch (FileNotFoundException e) { image.setImageResource(R.drawable.empty); } } }if(requestCode == Activity.DEFAULT_KEYS_DIALER){if(data != null){Bundle extras = data.getExtras();Bitmap bitmap = (Bitmap) extras.get("data");image.setImageBitmap(bitmap);}else{image.setImageResource(R.drawable.empty);}}super.onActivityResult(requestCode, resultCode, data);} }注释非常详细,代码比较简单就不做过多解释了!
说明:转载请注明出处!
- Android之照相机的使用
- Android开发应用之照相机的使用
- Xamarin.Android 照相机的使用
- Android中照相机的使用
- android之 照相机 Camera
- Android多媒体之照相机
- 使用照相机的功能
- 照相机的使用
- Android照相机俩种常见的使用方式(一)
- Android照相机俩种常见的使用方式(二)
- android打开照相机的方法
- Android 照相机权限的声明
- IOS使用照相机的功能
- Android 照相机触摸浮层之探索
- Android之调用系统照相机并裁剪
- Android照相机
- Android 照相机
- android照相机
- linux常用命令100个
- POJ 1012 Joseph 约瑟夫-保证坏人先被清除
- 北京理工大学计算机学院2011年研究生复试面试题搜集
- 有关读书的一些思考
- socket error总结(转)
- Android之照相机的使用
- CSDN上Android与IPhone开发博客精选
- POJ 3517 And Then There Was One 约瑟夫环
- JavaScript引入外部js文件时报错
- 怎么在自己的Eclipse里面装上windowbuilder
- POJ 1781 In Danger 约瑟夫环(log(m))
- t-sql
- 求一个字符串中的最长回文序列
- ubuntu下使用eclipse编译C++