zoukankan      html  css  js  c++  java
  • 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;  
            }  
        }  
    }  
  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/top5/p/2336506.html
Copyright © 2011-2022 走看看