一、main.xml布局文件

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent">     <ImageView android:id="@+id/imageView"         android:adjustViewBounds="true"        android:layout_gravity="center"        android:minWidth="150dip"         android:minHeight="150dip"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/>     <Button android:id="@+id/btnPhone"         android:layout_width="fill_parent"         android:layout_height="wrap_content"        android:text="相册" />     <Button android:id="@+id/btnTakePicture"         android:layout_height="wrap_content"        android:layout_width="fill_parent"         android:text="拍照" /> </LinearLayout>

二、核心代码

package com.ljq.test;import java.io.ByteArrayOutputStream;import java.io.File;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.view.View;import android.widget.Button;import android.widget.ImageView;public class TestActivity extends Activity {    private static final int NONE = 0;    private static final int PHOTO_GRAPH = 1;// 拍照    private static final int PHOTO_ZOOM = 2; // 缩放    private static final int PHOTO_RESOULT = 3;// 结果    private static final String IMAGE_UNSPECIFIED = "image/*";    private ImageView imageView = null;    private Button btnPhone = null;    private Button btnTakePicture = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                imageView = (ImageView) findViewById(R.id.imageView);        btnPhone = (Button) findViewById(R.id.btnPhone);        btnPhone.setOnClickListener(onClickListener);        btnTakePicture = (Button) findViewById(R.id.btnTakePicture);        btnTakePicture.setOnClickListener(onClickListener);    }        private final View.OnClickListener onClickListener = new View.OnClickListener() {        @Override        public void onClick(View v) {            if(v==btnPhone){ //从相册获取图片                Intent intent = new Intent(Intent.ACTION_PICK, null);                intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);                startActivityForResult(intent, PHOTO_ZOOM);            }else if(v==btnTakePicture){ //从拍照获取图片                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment                    .getExternalStorageDirectory(),"temp.jpg")));                startActivityForResult(intent, PHOTO_GRAPH);            }        }    };    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (resultCode == NONE)            return;        // 拍照        if (requestCode == PHOTO_GRAPH) {            // 设置文件保存路径            File picture = new File(Environment.getExternalStorageDirectory()                    + "/temp.jpg");            startPhotoZoom(Uri.fromFile(picture));        }        if (data == null)            return;        // 读取相册缩放图片        if (requestCode == PHOTO_ZOOM) {            startPhotoZoom(data.getData());        }        // 处理结果        if (requestCode == PHOTO_RESOULT) {            Bundle extras = data.getExtras();            if (extras != null) {                Bitmap photo = extras.getParcelable("data");                ByteArrayOutputStream stream = new ByteArrayOutputStream();                photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0-100)压缩文件                //此处可以把Bitmap保存到sd卡中,具体请看:http://www.cnblogs.com/linjiqin/archive/2011/12/28/2304940.html                imageView.setImageBitmap(photo); //把图片显示在ImageView控件上            }        }        super.onActivityResult(requestCode, resultCode, data);    }    /**     * 收缩图片     *      * @param uri     */    public void startPhotoZoom(Uri uri) {        Intent intent = new Intent("com.android.camera.action.CROP");        intent.setDataAndType(uri, IMAGE_UNSPECIFIED);        intent.putExtra("crop", "true");        // aspectX aspectY 是宽高的比例        intent.putExtra("aspectX", 1);        intent.putExtra("aspectY", 1);        // outputX outputY 是裁剪图片宽高        intent.putExtra("outputX", 300);        intent.putExtra("outputY", 500);        intent.putExtra("return-data", true);        startActivityForResult(intent, PHOTO_RESOULT);    }}

很简单的一个实例,如果需要实现更多自定义的功能,请看上篇文档。

Android Camera 使用小结

更多相关文章

  1. android 安卓 开发 图片库获得图片的绝对路径
  2. TableRow 背景问题以及修改对话框标题高度或者图片
  3. Android 把从网络获取的图片缓存到内存中
  4. Android 的网络编程(17)-android显示网络图片
  5. androidSDK下的图片资源
  6. 自定义RadioButton 文字在下,图片在上
  7. 自定义progressbar使用图片
  8. Shape实现圆形图片
  9. Android 异步加载图片

随机推荐

  1. android dpi dp 和px之间的关系
  2. android 使用SharedPreferences保存list
  3. android的sd卡上创建目录不显示
  4. Android(安卓)积累一些RxJava2.0有关的知
  5. android常见问题记录(03.13update)
  6. android 控件
  7. 给Android(安卓)JellyBean添加internal r
  8. 使用 adb 命令向 Android(安卓)发送广播
  9. 如何实现Siri中的波纹动画
  10. android activity statck