博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java乔晓松-android中调用系统拍照功能并显示拍照的图片
阅读量:5888 次
发布时间:2019-06-19

本文共 5866 字,大约阅读时间需要 19 分钟。

android中调用系统拍照功能并显示拍照的图片

如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图

代码如下:

package com.example.myphotos;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;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.Button;import android.widget.ImageView;/** * 2013-6-27 上午10:27:23 *  * @author 乔晓松 */public class CameraActivity extends Activity {	private Button button;	private ImageView imageView;	private String fileName;	@SuppressLint({ "SimpleDateFormat", "SdCardPath" })	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		this.setContentView(R.layout.activity_camera);		button = (Button) findViewById(R.id.btn_camera);		imageView = (ImageView) findViewById(R.id.imageView1);		File file = new File("/sdcard/myImage/");		file.mkdirs();// 创建文件夹		button.setOnClickListener(new OnClickListener() {			@Override			public void onClick(View v) {				Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);								startActivityForResult(intent, 1);			}		});		// Intent intent = new Intent();		// intent.setAction("android.intent.action.MAIN");		// intent.addCategory("android.intent.category.LAUNCHER");		// intent.setFlags(0x10200000);		// intent.setComponent(new ComponentName("com.android.camera",		// "com.android.camera.Camera"));		// startActivity(intent);	}	@SuppressLint({ "SdCardPath", "SimpleDateFormat" })	@Override	protected void onActivityResult(int requestCode, int resultCode, Intent data) {		super.onActivityResult(requestCode, resultCode, data);		if (resultCode == Activity.RESULT_OK) {				String sdStatus = Environment.getExternalStorageState();			if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用				Log.v("TestFile",						"SD card is not avaiable/writeable right now.");				return;			}                            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");String name = format.format(new Date());fileName = "/sdcard/myImage/" + name + ".jpg";			Bundle bundle = data.getExtras();			Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式			FileOutputStream b = null;			try {				b = new FileOutputStream(fileName);				bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件			} catch (FileNotFoundException e) {				e.printStackTrace();			} finally {				try {					b.flush();					b.close();				} catch (IOException e) {					e.printStackTrace();				}			}			imageView.setImageBitmap(bitmap);// 将图片显示在ImageView里		}	}}

上面获取到的拍摄照片的缩略图,要想获取到拍摄照片的原图,就要在打开相机的时候,把照片保存的地址必须设置好,代码如下:

package com.example.myphotos;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;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.Button;import android.widget.ImageView;/** * 2013-6-27 上午10:27:23 *  * @author 乔晓松 */public class CameraActivity extends Activity {	private Button button;	private ImageView imageView;	private String fileName;	@SuppressLint({ "SimpleDateFormat", "SdCardPath" })	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		this.setContentView(R.layout.activity_camera);		button = (Button) findViewById(R.id.btn_camera);		imageView = (ImageView) findViewById(R.id.imageView1);		File file = new File("/sdcard/myImage/");		file.mkdirs();// 创建文件夹		button.setOnClickListener(new OnClickListener() {			@Override			public void onClick(View v) {				SimpleDateFormat format = new SimpleDateFormat(						"yyyy-MM-dd HH.mm.ss");				String name = format.format(new Date());				fileName = "/sdcard/myImage/" + name + ".jpg";				Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);				intent.putExtra(MediaStore.EXTRA_OUTPUT,						Uri.fromFile(new File(fileName)));				startActivityForResult(intent, 1);			}		});		// Intent intent = new Intent();		// intent.setAction("android.intent.action.MAIN");		// intent.addCategory("android.intent.category.LAUNCHER");		// intent.setFlags(0x10200000);		// intent.setComponent(new ComponentName("com.android.camera",		// "com.android.camera.Camera"));		// startActivity(intent);	}	@SuppressLint({ "SdCardPath", "SimpleDateFormat" })	@Override	protected void onActivityResult(int requestCode, int resultCode, Intent data) {		super.onActivityResult(requestCode, resultCode, data);		if (resultCode == Activity.RESULT_OK) {			String sdStatus = Environment.getExternalStorageState();			if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用				Log.v("TestFile",						"SD card is not avaiable/writeable right now.");				return;			}			Bundle bundle = data.getExtras();			Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式			FileOutputStream b = null;			try {				b = new FileOutputStream(fileName);				bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件			} catch (FileNotFoundException e) {				e.printStackTrace();			} finally {				try {					b.flush();					b.close();				} catch (IOException e) {					e.printStackTrace();				}			}			imageView.setImageBitmap(bitmap);// 将图片显示在ImageView里		}	}}

 

 

布局文件代码如下:

 

 

现在正在学习阶段,如有错误之处,请大牛们指导,我定修改此文章...

 

 

转载地址:http://vjgix.baihongyu.com/

你可能感兴趣的文章
通付盾安全加固——拓展安卓内核安全边界
查看>>
2012年度十大杰出IT博客之 丁虎强
查看>>
【ORACLE】ORACLE常用功能函数
查看>>
Console.WriteLine占位符的小知识点
查看>>
zabbix 安装使用手册(HA)-1
查看>>
find中mtime的+ - n
查看>>
LVS之偷懒脚本
查看>>
openssl工具详解及自建CA方法
查看>>
ftp匿名用户,虚拟用户,配置文件参数含义
查看>>
我的友情链接
查看>>
很多种QQ挂机方法
查看>>
mysql入门笔记1
查看>>
VM虚拟机添加硬盘
查看>>
常用单位解析、换算、线速转发
查看>>
Ex2010-09 Create a new Certificate
查看>>
vim命令学习总结
查看>>
线性表--单链表(C++)
查看>>
mysql 5.7.9 免安装版本
查看>>
【基础技术】Java基础那些事儿系列-成员变量与局部变量
查看>>
0726linux基础内容小记
查看>>