jiekou19910106 发表于 2011-10-9 20:55:30

android照相及照片上传



http://www.apkbus.com/data/attachment/forum/201109/29/2135261y050vhy5e0svhy5.jpghttp://www.apkbus.com/data/attachment/forum/201109/29/213520utda7d8paaqdz6r1.jpg
Java代码

[*]package com.android.cist.camera.view;
[*]
[*]import java.io.ByteArrayOutputStream;
[*]import java.io.InputStream;
[*]import java.util.HashMap;
[*]import java.util.Map;
[*]
[*]import android.app.Activity;
[*]import android.app.AlertDialog;
[*]import android.content.ContentResolver;
[*]import android.content.DialogInterface;
[*]import android.content.Intent;
[*]import android.graphics.Bitmap;
[*]import android.graphics.BitmapFactory;
[*]import android.net.Uri;
[*]import android.os.Bundle;
[*]import android.os.Handler;
[*]import android.os.Message;
[*]import android.view.View;
[*]import android.view.View.OnClickListener;
[*]import android.widget.Button;
[*]import android.widget.EditText;
[*]import android.widget.ImageView;
[*]import android.widget.LinearLayout;
[*]import android.widget.Toast;
[*]
[*]import com.android.cist.R;
[*]import com.android.cist.network.HttpUtil;
[*]import com.android.cist.network.form.FormFile;
[*]import com.android.cist.network.form.HttpFormUtil;
[*]import com.android.cist.util.ApplicationUtil;
[*]import com.android.cist.util.ImageUtil;
[*]
[*]public class CameraActivity extends Activity implements OnClickListener{
[*]        private ImageView preview;
[*]        private EditText carNo;
[*]        private EditText addres;
[*]        private EditText type;
[*]        private Button back;
[*]        private Button submit;
[*]        private Button capture;
[*]        private Button reCapture;
[*]        private OnClickListener imgViewListener;
[*]        private Bitmap myBitmap;
[*]        private byte[] mContent;
[*]        private Handler handler;
[*]        String returnString;
[*]        private CalendarView happenDate;
[*]        private static final int REQUEST_CAMERA = 1;
[*]        private static final int REQUEST_CALENDAR = 2;
[*]
[*]        @ Override
[*]        public void onCreate ( Bundle savedInstanceState )
[*]        {
[*]                super.onCreate(savedInstanceState);
[*]                setContentView(R.layout.camera);
[*]                setUpViews();
[*]                setUpListeners();
[*]                ApplicationUtil.getInstance().addActivity(this);
[*]        }
[*]
[*]        @ Override
[*]        protected void onActivityResult ( int requestCode , int resultCode , Intent data )
[*]        {
[*]                super.onActivityResult(requestCode, resultCode, data);
[*]
[*]                ContentResolver resolver = getContentResolver();
[*]                /**
[*]                 * 因为两种方式都用到了startActivityForResult方法,
[*]                 * 这个方法执行完后都会执行onActivityResult方法, 所以为了区别到底选择了那个方式获取图片要进行判断,
[*]                 * 这里的requestCode跟startActivityForResult里面第二个参数对应
[*]                 */
[*]                if (requestCode == 0)
[*]                {
[*]                        try
[*]                        {
[*]                                // 获得图片的uri
[*]                                Uri originalUri = data.getData();
[*]                                // 将图片内容解析成字节数组
[*]                                mContent = readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));
[*]                                // 将字节数组转换为ImageView可调用的Bitmap对象
[*]                                myBitmap = getPicFromBytes(mContent, null);
[*]                                // //把得到的图片绑定在控件上显示
[*]                                preview.setImageBitmap(myBitmap);
[*]                        } catch ( Exception e )
[*]                        {
[*]                                System.out.println(e.getMessage());
[*]                        }
[*]
[*]                } else if (requestCode == REQUEST_CAMERA){
[*]                        try
[*]                        {
[*]                                super.onActivityResult(requestCode, resultCode, data);
[*]                                Bundle extras = data.getExtras();
[*]                                myBitmap = (Bitmap) extras.get("data");
[*]                                ByteArrayOutputStream baos = new ByteArrayOutputStream();
[*]                                myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
[*]                                mContent = baos.toByteArray();
[*]                        } catch ( Exception e )
[*]                        {
[*]                                e.printStackTrace();
[*]                        }
[*]                        // 把得到的图片绑定在控件上显示
[*]                        preview.setImageBitmap(ImageUtil.toRoundCorner(myBitmap, 10));//把拍摄的照片转成圆角显示在预览控件上
[*]                }else if(requestCode==REQUEST_CALENDAR){
[*]                        if(resultCode == RESULT_OK){
[*]                                happenDate.setCalendar(data.getIntExtra("year", 1900), data.getIntExtra("month", 0), data.getIntExtra("day", 1));
[*]                        }
[*]                }
[*]        }
[*]
[*]        public static Bitmap getPicFromBytes ( byte[] bytes , BitmapFactory.Options opts )
[*]        {
[*]                if (bytes != null)
[*]                        if (opts != null)
[*]                                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, opts);
[*]                        else
[*]                                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
[*]                return null;
[*]        }
[*]
[*]        public static byte[] readStream ( InputStream inStream ) throws Exception
[*]        {
[*]                byte[] buffer = new byte;
[*]                int len = -1;
[*]                ByteArrayOutputStream outStream = new ByteArrayOutputStream();
[*]                while ((len = inStream.read(buffer)) != -1)
[*]                {
[*]                        outStream.write(buffer, 0, len);
[*]                }
[*]                byte[] data = outStream.toByteArray();
[*]                outStream.close();
[*]                inStream.close();
[*]                return data;
[*]        }
[*]
[*]        @Override
[*]        public void onClick(View v) {
[*]                int id = v.getId();
[*]                switch(id){
[*]                        case R.id.capture:{
[*]                                final CharSequence[] items =
[*]                                { "相册", "拍照" };
[*]                                AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
[*]                                                new DialogInterface.OnClickListener()
[*]                                                {
[*]                                                        public void onClick ( DialogInterface dialog , int item )
[*]                                                        {
[*]                                                                // 这里item是根据选择的方式,
[*]                                                                // 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
[*]                                                                if (item == 1){
[*]                                                                        Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
[*]                                                                        startActivityForResult(getImageByCamera, REQUEST_CAMERA);
[*]                                                                } else{
[*]                                                                        Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
[*]                                                                        getImage.addCategory(Intent.CATEGORY_OPENABLE);
[*]                                                                        getImage.setType("image/jpeg");
[*]
[*]




admin 发表于 2011-10-9 22:03:45

支持一下 你的程序呢?
页: [1]
查看完整版本: android照相及照片上传