zoukankan      html  css  js  c++  java
  • android照相及照片上传

     
     


    Java代码

    1. package com.android.cist.camera.view;

    2. import java.io.ByteArrayOutputStream;
    3. import java.io.InputStream;
    4. import java.util.HashMap;
    5. import java.util.Map;

    6. import android.app.Activity;
    7. import android.app.AlertDialog;
    8. import android.content.ContentResolver;
    9. import android.content.DialogInterface;
    10. import android.content.Intent;
    11. import android.graphics.Bitmap;
    12. import android.graphics.BitmapFactory;
    13. import android.net.Uri;
    14. import android.os.Bundle;
    15. import android.os.Handler;
    16. import android.os.Message;
    17. import android.view.View;
    18. import android.view.View.OnClickListener;
    19. import android.widget.Button;
    20. import android.widget.EditText;
    21. import android.widget.ImageView;
    22. import android.widget.LinearLayout;
    23. import android.widget.Toast;

    24. import com.android.cist.R;
    25. import com.android.cist.network.HttpUtil;
    26. import com.android.cist.network.form.FormFile;
    27. import com.android.cist.network.form.HttpFormUtil;
    28. import com.android.cist.util.ApplicationUtil;
    29. import com.android.cist.util.ImageUtil;

    30. public class CameraActivity extends Activity implements OnClickListener{
    31.         private ImageView preview;
    32.         private EditText carNo;
    33.         private EditText addres;
    34.         private EditText type;
    35.         private Button back;
    36.         private Button submit;
    37.         private Button capture;
    38.         private Button reCapture;
    39.         private OnClickListener imgViewListener;
    40.         private Bitmap myBitmap;
    41.         private byte[] mContent;
    42.         private Handler handler;
    43.         String returnString;
    44.         private CalendarView happenDate;
    45.         private static final int REQUEST_CAMERA = 1;
    46.         private static final int REQUEST_CALENDAR = 2;

    47.         @ Override
    48.         public void onCreate ( Bundle savedInstanceState )
    49.         {
    50.                 super.onCreate(savedInstanceState);
    51.                 setContentView(R.layout.camera);
    52.                 setUpViews();
    53.                 setUpListeners();
    54.                 ApplicationUtil.getInstance().addActivity(this);
    55.         }

    56.         @ Override
    57.         protected void onActivityResult ( int requestCode , int resultCode , Intent data )
    58.         {
    59.                 super.onActivityResult(requestCode, resultCode, data);

    60.                 ContentResolver resolver = getContentResolver();
    61.                 /**
    62.                  * 因为两种方式都用到了startActivityForResult方法,
    63.                  * 这个方法执行完后都会执行onActivityResult方法, 所以为了区别到底选择了那个方式获取图片要进行判断,
    64.                  * 这里的requestCode跟startActivityForResult里面第二个参数对应
    65.                  */
    66.                 if (requestCode == 0)
    67.                 {
    68.                         try
    69.                         {
    70.                                 // 获得图片的uri
    71.                                 Uri originalUri = data.getData();
    72.                                 // 将图片内容解析成字节数组
    73.                                 mContent = readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));
    74.                                 // 将字节数组转换为ImageView可调用的Bitmap对象
    75.                                 myBitmap = getPicFromBytes(mContent, null);
    76.                                 // //把得到的图片绑定在控件上显示
    77.                                 preview.setImageBitmap(myBitmap);
    78.                         } catch ( Exception e )
    79.                         {
    80.                                 System.out.println(e.getMessage());
    81.                         }

    82.                 } else if (requestCode == REQUEST_CAMERA){
    83.                         try
    84.                         {
    85.                                 super.onActivityResult(requestCode, resultCode, data);
    86.                                 Bundle extras = data.getExtras();
    87.                                 myBitmap = (Bitmap) extras.get("data");
    88.                                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
    89.                                 myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    90.                                 mContent = baos.toByteArray();
    91.                         } catch ( Exception e )
    92.                         {
    93.                                 e.printStackTrace();
    94.                         }
    95.                         // 把得到的图片绑定在控件上显示
    96.                         preview.setImageBitmap(ImageUtil.toRoundCorner(myBitmap, 10));//把拍摄的照片转成圆角显示在预览控件上
    97.                 }else if(requestCode==REQUEST_CALENDAR){
    98.                         if(resultCode == RESULT_OK){
    99.                                 happenDate.setCalendar(data.getIntExtra("year", 1900), data.getIntExtra("month", 0), data.getIntExtra("day", 1));
    100.                         }
    101.                 }
    102.         }

    103.         public static Bitmap getPicFromBytes ( byte[] bytes , BitmapFactory.Options opts )
    104.         {
    105.                 if (bytes != null)
    106.                         if (opts != null)
    107.                                 return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, opts);
    108.                         else
    109.                                 return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    110.                 return null;
    111.         }

    112.         public static byte[] readStream ( InputStream inStream ) throws Exception
    113.         {
    114.                 byte[] buffer = new byte[1024];
    115.                 int len = -1;
    116.                 ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    117.                 while ((len = inStream.read(buffer)) != -1)
    118.                 {
    119.                         outStream.write(buffer, 0, len);
    120.                 }
    121.                 byte[] data = outStream.toByteArray();
    122.                 outStream.close();
    123.                 inStream.close();
    124.                 return data;
    125.         }

    126.         @Override
    127.         public void onClick(View v) {
    128.                 int id = v.getId();
    129.                 switch(id){
    130.                         case R.id.capture:{
    131.                                 final CharSequence[] items =
    132.                                 { "相册", "拍照" };
    133.                                 AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
    134.                                                 new DialogInterface.OnClickListener()
    135.                                                 {
    136.                                                         public void onClick ( DialogInterface dialog , int item )
    137.                                                         {
    138.                                                                 // 这里item是根据选择的方式,
    139.                                                                 // 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
    140.                                                                 if (item == 1){
    141.                                                                         Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
    142.                                                                         startActivityForResult(getImageByCamera, REQUEST_CAMERA);
    143.                                                                 } else{
    144.                                                                         Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
    145.                                                                         getImage.addCategory(Intent.CATEGORY_OPENABLE);
    146.                                                                         getImage.setType("image/jpeg");
    147.                                                                         startActivityForResult(getImage, 0);
    148.                                                                 }
    149.                                                         }
    150.                                                 }).create();
    151.                                 dlg.show();
    152.                         }
    153.                         break;
    154.                         /*case R.id.reCapture:{
    155.                                 final CharSequence[] items =
    156.                                 { "相册", "拍照" };
    157.                                 AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
    158.                                                 new DialogInterface.OnClickListener()
    159.                                                 {
    160.                                                         public void onClick ( DialogInterface dialog , int item )
    161.                                                         {
    162.                                                                 // 这里item是根据选择的方式,
    163.                                                                 // 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
    164.                                                                 if (item == 1)
    165.                                                                 {
    166.                                                                         Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
    167.                                                                         startActivityForResult(getImageByCamera, 1);
    168.                                                                 } else
    169.                                                                 {
    170.                                                                         Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
    171.                                                                         getImage.addCategory(Intent.CATEGORY_OPENABLE);
    172.                                                                         getImage.setType("image/jpeg");
    173.                                                                         startActivityForResult(getImage, 0);
    174.                                                                 }
    175.                                                         }
    176.                                                 }).create();
    177.                                 dlg.show();
    178.                         }
    179.                         break;*/
    180.                         case R.id.submit:{
    181.                                 new PostThread().start();//开启线程提交数据
    182.                         }
    183.                         break;
    184.                         case R.id.back:{
    185.                                 CameraActivity.this.finish();//返回,销毁当前Activity
    186.                         }
    187.                         break;
    188.                         default:
    189.                         break;
    190.                 }
    191.         }
    192.        
    193. }

     

  • 相关阅读:
    python中的编码问题
    CVPR2018 Tutorial 之 Visual Recognition and Beyond
    hdu 1376 Octal Fractions
    hdu 1329 Hanoi Tower Troubles Again!
    hdu 1309 Loansome Car Buyer
    hdu 1333 Smith Numbers
    hdu 1288 Hat's Tea
    hdu 1284 钱币兑换问题
    hdu 1275 两车追及或相遇问题
    hdu 1270 小希的数表
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/3257766.html
Copyright © 2011-2022 走看看