实现调用Android手机的拍照功能

很简单,直接上示例吧

1 xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10 
11     <Button
12         android:id="@+id/btnTakePic"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="拍照" />
16 
17     <ImageView
18         android:id="@+id/imgview"
19         android:layout_width="100dp"
20         android:layout_height="100dp"
21         android:layout_alignLeft="@+id/btnTakePic"
22         android:layout_below="@+id/btnTakePic"
23         android:layout_marginTop="38dp" />
24 
25 </RelativeLayout>

2 java代码

  1 package com.example.takepictrures;
  2 
  3 import java.io.ByteArrayOutputStream;
  4 import java.io.File;
  5 import java.io.IOException;
  6 import java.text.SimpleDateFormat;
  7 import java.util.Date;
  8 import com.example.util.saveToSdCard;
  9 import android.net.Uri;
 10 import android.os.Bundle;
 11 import android.os.Environment;
 12 import android.provider.MediaStore;
 13 import android.provider.MediaStore.Audio.Media;
 14 import android.app.Activity;
 15 import android.content.ContentValues;
 16 import android.content.Intent;
 17 import android.graphics.Bitmap;
 18 import android.graphics.BitmapFactory;
 19 import android.view.Menu;
 20 import android.view.View;
 21 import android.view.View.OnClickListener;
 22 import android.widget.Button;
 23 import android.widget.ImageView;
 24 
 25 public class MainActivity extends Activity implements OnClickListener {
 26 
 27     public Button button;
 28     private static final int PHOTO_GRAPH = 1;// ����
 29     public ImageView imageView;
 30 
 31     @Override
 32     protected void onCreate(Bundle savedInstanceState) {
 33         super.onCreate(savedInstanceState);
 34         setContentView(R.layout.activity_main);
 35         imageView = (ImageView) this.findViewById(R.id.imgview);
 36         button = (Button) this.findViewById(R.id.btnTakePic);
 37         button.setOnClickListener(this);
 38 
 39     }
 40 
 41     @Override
 42     public boolean onCreateOptionsMenu(Menu menu) {
 43         // Inflate the menu; this adds items to the action bar if it is present.
 44         getMenuInflater().inflate(R.menu.main, menu);
 45         return true;
 46     }
 47 
 48     @Override
 49     public void onClick(View view) {
 50         switch (view.getId()) {
 51         case R.id.btnTakePic:
 52             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 53             startActivityForResult(intent, PHOTO_GRAPH);
 54             break;
 55 
 56         default:
 57             break;
 58         }
 59     }
 60 
 61     @Override
 62     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 63         if (resultCode == NONE)
 64             return;
 65 
 66         if (requestCode == PHOTO_GRAPH) {
 67 
 68             File picture = new File(Environment.getExternalStorageDirectory()
 69                     + "/temp.jpg");
 70             // startPhotoZoom(Uri.fromFile(picture));
 71         }
 72 
 73         if (data == null)
 74             return;
 75 
 76         // if (requestCode == PHOTO_ZOOM) {
 77         // startPhotoZoom(data.getData());
 78         // }
 79         
 80         String fileName = "";
 81         if (requestCode == 1) {
 82             Bundle extras = data.getExtras();
 83             if (extras != null) {
 84                 Bitmap photo = extras.getParcelable("data");
 85                 ByteArrayOutputStream stream = new ByteArrayOutputStream();
 86                 photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0-100)ѹ���ļ�
 87                  
///这儿保存到sd卡就Ok了 88 try { 89 fileName = saveToSdCard.getFileName(); 90 saveToSdCard.saveMyBitmap(photo, fileName); 91 } catch (IOException e) { 92 // TODO Auto-generated catch block 93 e.printStackTrace(); 94 } 95 imageView.setImageBitmap(photo); 96 } 97 } 98 super.onActivityResult(requestCode, resultCode, data); 99 } 100 101 102 // public void startPhotoZoom(Uri uri) { 103 // Intent intent = new Intent("com.android.camera.action.CROP"); 104 // intent.setDataAndType(uri, IMAGE_UNSPECIFIED); 105 // intent.putExtra("crop", "true"); 106 // // aspectX aspectY 107 // intent.putExtra("aspectX", 1); 108 // intent.putExtra("aspectY", 1); 109 // // outputX outputY 110 // intent.putExtra("outputX", 300); 111 // intent.putExtra("outputY", 500); 112 // intent.putExtra("return-data", true); 113 // startActivityForResult(intent, PHOTO_RESOULT); 114 // } 115 116 }
原文地址:https://www.cnblogs.com/summers/p/4324113.html