android照相及照片上傳

來源:互聯網
上載者:User
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;          }      }  }  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.