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;  
            }  
        }  
    }  
  • 相关阅读:
    Time Zone 【模拟时区转换】(HDU暑假2018多校第一场)
    HDU 1281 棋盘游戏 【二分图最大匹配】
    Codeforces Round #527 (Div. 3) F. Tree with Maximum Cost 【DFS换根 || 树形dp】
    Codeforces Round #527 (Div. 3) D2. Great Vova Wall (Version 2) 【思维】
    Codeforces Round #527 (Div. 3) D1. Great Vova Wall (Version 1) 【思维】
    Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】
    Avito Cool Challenge 2018 E. Missing Numbers 【枚举】
    Avito Cool Challenge 2018 C. Colorful Bricks 【排列组合】
    005 如何分析问题框架
    004 如何定义和澄清问题
  • 原文地址:https://www.cnblogs.com/top5/p/2336506.html
Copyright © 2011-2022 走看看