1 package com.example.choosepictest;
2
3 import java.io.File;
4 import java.io.FileNotFoundException;
5 import java.io.IOException;
6
7 import android.app.Activity;
8 import android.content.Intent;
9 import android.graphics.Bitmap;
10 import android.graphics.BitmapFactory;
11 import android.net.Uri;
12 import android.os.Bundle;
13 import android.os.Environment;
14 import android.provider.MediaStore;
15 import android.view.View;
16 import android.view.View.OnClickListener;
17 import android.widget.Button;
18 import android.widget.ImageView;
19
20 public class MainActivity extends Activity {
21
22 public static final int TAKE_PHOTO = 1;
23
24 public static final int CROP_PHOTO = 2;
25
26 private Button takePhoto;
27
28 private Button chooseFromAlbum;
29
30 private ImageView picture;
31
32 private Uri imageUri;
33
34 @Override
35 protected void onCreate(Bundle savedInstanceState) {
36 super.onCreate(savedInstanceState);
37 setContentView(R.layout.activity_main);
38 takePhoto = (Button) findViewById(R.id.take_photo);
39 chooseFromAlbum = (Button) findViewById(R.id.choose_from_album);
40 picture = (ImageView) findViewById(R.id.picture);
41 takePhoto.setOnClickListener(new OnClickListener() {
42 @Override
43 public void onClick(View v) {
44 File outputImage = new File(Environment.getExternalStorageDirectory(),
45 "output_image.jpg");
46 try {
47 if (outputImage.exists()) {
48 outputImage.delete();
49 }
50 outputImage.createNewFile();
51 } catch (IOException e) {
52 e.printStackTrace();
53 }
54 imageUri = Uri.fromFile(outputImage);
55 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
56 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
57 startActivityForResult(intent, TAKE_PHOTO);
58 }
59 });
60 chooseFromAlbum.setOnClickListener(new OnClickListener() {
61 @Override
62 public void onClick(View v) {
63 File outputImage = new File(Environment.getExternalStorageDirectory(),
64 "output_image.jpg");
65 try {
66 if (outputImage.exists()) {
67 outputImage.delete();
68 }
69 outputImage.createNewFile();
70 } catch (IOException e) {
71 e.printStackTrace();
72 }
73 imageUri = Uri.fromFile(outputImage);
74 Intent intent = new Intent("android.intent.action.GET_CONTENT");
75 intent.setType("image/*");
76 intent.putExtra("crop", true);
77 intent.putExtra("scale", true);
78 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
79 startActivityForResult(intent, CROP_PHOTO);
80 }
81 });
82 }
83
84 @Override
85 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
86 switch (requestCode) {
87 case TAKE_PHOTO:
88 if (resultCode == RESULT_OK) {
89 Intent intent = new Intent("com.android.camera.action.CROP");
90 intent.setDataAndType(imageUri, "image/*");
91 intent.putExtra("scale", true);
92 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
93 startActivityForResult(intent, CROP_PHOTO);
94 }
95 break;
96 case CROP_PHOTO:
97 if (resultCode == RESULT_OK) {
98 try {
99 Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver()
100 .openInputStream(imageUri));
101 picture.setImageBitmap(bitmap);
102 } catch (FileNotFoundException e) {
103 e.printStackTrace();
104 }
105 }
106 break;
107 default:
108 break;
109 }
110 }
111
112 }