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;@ Overridepublic void onCreate ( Bundle savedInstanceState ){super.onCreate(savedInstanceState);setContentView(R.layout.camera);setUpViews();setUpListeners();ApplicationUtil.getInstance().addActivity(this);}@ Overrideprotected void onActivityResult ( int requestCode , int resultCode , Intent data ){super.onActivityResult(requestCode, resultCode, data);ContentResolver resolver = getContentResolver();/** * 因为两种方式都用到了startActivityForResult方法, * 这个方法执行完后都会执行onActivityResult方法, 所以为了区别到底选择了那个方式获取图片要进行判断, * 这里的requestCode跟startActivityForResult里面第二个参数对应 */if (requestCode == 0){try{// 获得图片的uriUri 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);elsereturn 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;}@Overridepublic 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;}}}

更多相关文章

  1. 箭头函数的基础使用
  2. Android(安卓)-- App生成快捷方式
  3. android之Spinner
  4. android 创建快捷方式
  5. Android(安卓)App应用底部导航栏实现的一种方式
  6. Android(安卓)头像修改
  7. android Bitmap->BGR字节数组
  8. 我今天的面试题,注册广播有几种方式,这些方式有何优缺点?请谈谈Andr
  9. android中怎么获得所有应用程序的快捷方式

随机推荐

  1. Android 搜索 把软键盘上的回车键改为搜
  2. Android笔试的一部分知识点
  3. Android通信方式篇(四)-Binder机制(开篇)
  4. Android之网络请求8————OkHttp源码5:
  5. [Android] AsyncTask使用实例---加载网络
  6. Android中ContentProvider简介
  7. Android TextView中文字通过SpannableStr
  8. android ImageView图片缩放
  9. seekBar,RatingBar拖动条
  10. 专辑: 善知堂android 4.0.3 就业视频教程