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. }

     

  • 相关阅读:
    安卓系统的文件管理神器Solid Explorer(v2.2)
    地月距离竟然如此遥远
    Android在争议中逃离Linux内核的GPL约束【转】
    gearman
    PHP基础学习
    函数式编程
    有向图的实现
    无向图的实现
    百度地图API获取数据
    python队列的实现
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/3257766.html
Copyright © 2011-2022 走看看