Android照相及照片上传

Android照相及照片上传

Android照相及照片上传

Android照相及照片上传

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[1024];            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");                                        startActivityForResult(getImage, 0);                                    }                                }                            }).create();                    dlg.show();                }                break;                /*case R.id.reCapture:{                   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, 1);                                   } else                                   {                                       Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);                                       getImage.addCategory(Intent.CATEGORY_OPENABLE);                                       getImage.setType("image/jpeg");                                       startActivityForResult(getImage, 0);                                   }                               }                           }).create();                   dlg.show();               }               break;*/               case R.id.submit:{                    new PostThread().start();//开启线程提交数据                }                break;                case R.id.back:{                    CameraActivity.this.finish();//返回,销毁当前Activity                }                break;                default:                break;            }        }            }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyfpzp.html