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里 } }}
布局文件代码如下:
现在正在学习阶段,如有错误之处,请大牛们指导,我定修改此文章...