android照相及照片上传
16lz
2021-01-23
android照相及照片上传
Java代码
- packagecom.android.cist.camera.view;
- importjava.io.ByteArrayOutputStream;
- importjava.io.InputStream;
- importjava.util.HashMap;
- importjava.util.Map;
- importandroid.app.Activity;
- importandroid.app.AlertDialog;
- importandroid.content.ContentResolver;
- importandroid.content.DialogInterface;
- importandroid.content.Intent;
- importandroid.graphics.Bitmap;
- importandroid.graphics.BitmapFactory;
- importandroid.net.Uri;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- importandroid.os.Message;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.EditText;
- importandroid.widget.ImageView;
- importandroid.widget.LinearLayout;
- importandroid.widget.Toast;
- importcom.android.cist.R;
- importcom.android.cist.network.HttpUtil;
- importcom.android.cist.network.form.FormFile;
- importcom.android.cist.network.form.HttpFormUtil;
- importcom.android.cist.util.ApplicationUtil;
- importcom.android.cist.util.ImageUtil;
- publicclassCameraActivityextendsActivityimplementsOnClickListener{
- privateImageViewpreview;
- privateEditTextcarNo;
- privateEditTextaddres;
- privateEditTexttype;
- privateButtonback;
- privateButtonsubmit;
- privateButtoncapture;
- privateButtonreCapture;
- privateOnClickListenerimgViewListener;
- privateBitmapmyBitmap;
- privatebyte[]mContent;
- privateHandlerhandler;
- StringreturnString;
- privateCalendarViewhappenDate;
- privatestaticfinalintREQUEST_CAMERA=1;
- privatestaticfinalintREQUEST_CALENDAR=2;
- @Override
- publicvoidonCreate(BundlesavedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.camera);
- setUpViews();
- setUpListeners();
- ApplicationUtil.getInstance().addActivity(this);
- }
- @Override
- protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)
- {
- super.onActivityResult(requestCode,resultCode,data);
- ContentResolverresolver=getContentResolver();
- /**
- *因为两种方式都用到了startActivityForResult方法,
- *这个方法执行完后都会执行onActivityResult方法,所以为了区别到底选择了那个方式获取图片要进行判断,
- *这里的requestCode跟startActivityForResult里面第二个参数对应
- */
- if(requestCode==0)
- {
- try
- {
- //获得图片的uri
- UrioriginalUri=data.getData();
- //将图片内容解析成字节数组
- mContent=readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));
- //将字节数组转换为ImageView可调用的Bitmap对象
- myBitmap=getPicFromBytes(mContent,null);
- ////把得到的图片绑定在控件上显示
- preview.setImageBitmap(myBitmap);
- }catch(Exceptione)
- {
- System.out.println(e.getMessage());
- }
- }elseif(requestCode==REQUEST_CAMERA){
- try
- {
- super.onActivityResult(requestCode,resultCode,data);
- Bundleextras=data.getExtras();
- myBitmap=(Bitmap)extras.get("data");
- ByteArrayOutputStreambaos=newByteArrayOutputStream();
- myBitmap.compress(Bitmap.CompressFormat.JPEG,100,baos);
- mContent=baos.toByteArray();
- }catch(Exceptione)
- {
- e.printStackTrace();
- }
- //把得到的图片绑定在控件上显示
- preview.setImageBitmap(ImageUtil.toRoundCorner(myBitmap,10));//把拍摄的照片转成圆角显示在预览控件上
- }elseif(requestCode==REQUEST_CALENDAR){
- if(resultCode==RESULT_OK){
- happenDate.setCalendar(data.getIntExtra("year",1900),data.getIntExtra("month",0),data.getIntExtra("day",1));
- }
- }
- }
- publicstaticBitmapgetPicFromBytes(byte[]bytes,BitmapFactory.Optionsopts)
- {
- if(bytes!=null)
- if(opts!=null)
- returnBitmapFactory.decodeByteArray(bytes,0,bytes.length,opts);
- else
- returnBitmapFactory.decodeByteArray(bytes,0,bytes.length);
- returnnull;
- }
- publicstaticbyte[]readStream(InputStreaminStream)throwsException
- {
- byte[]buffer=newbyte[1024];
- intlen=-1;
- ByteArrayOutputStreamoutStream=newByteArrayOutputStream();
- while((len=inStream.read(buffer))!=-1)
- {
- outStream.write(buffer,0,len);
- }
- byte[]data=outStream.toByteArray();
- outStream.close();
- inStream.close();
- returndata;
- }
- @Override
- publicvoidonClick(Viewv){
- intid=v.getId();
- switch(id){
- caseR.id.capture:{
- finalCharSequence[]items=
- {"相册","拍照"};
- AlertDialogdlg=newAlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
- newDialogInterface.OnClickListener()
- {
- publicvoidonClick(DialogInterfacedialog,intitem)
- {
- //这里item是根据选择的方式,
- //在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
- if(item==1){
- IntentgetImageByCamera=newIntent("android.media.action.IMAGE_CAPTURE");
- startActivityForResult(getImageByCamera,REQUEST_CAMERA);
- }else{
- IntentgetImage=newIntent(Intent.ACTION_GET_CONTENT);
- getImage.addCategory(Intent.CATEGORY_OPENABLE);
- getImage.setType("image/jpeg");
- startActivityForResult(getImage,0);
- }
- }
- }).create();
- dlg.show();
- }
- break;
- /*caseR.id.reCapture:{
- finalCharSequence[]items=
- {"相册","拍照"};
- AlertDialogdlg=newAlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
- newDialogInterface.OnClickListener()
- {
- publicvoidonClick(DialogInterfacedialog,intitem)
- {
- //这里item是根据选择的方式,
- //在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
- if(item==1)
- {
- IntentgetImageByCamera=newIntent("android.media.action.IMAGE_CAPTURE");
- startActivityForResult(getImageByCamera,1);
- }else
- {
- IntentgetImage=newIntent(Intent.ACTION_GET_CONTENT);
- getImage.addCategory(Intent.CATEGORY_OPENABLE);
- getImage.setType("image/jpeg");
- startActivityForResult(getImage,0);
- }
- }
- }).create();
- dlg.show();
- }
- break;*/
- caseR.id.submit:{
- newPostThread().start();//开启线程提交数据
- }
- break;
- caseR.id.back:{
- CameraActivity.this.finish();//返回,销毁当前Activity
- }
- break;
- default:
- break;
- }
- }
- }
更多相关文章
- android 自定义图片剪裁
- Android——ImageButton【图片按钮】的点击事件与属性
- android 选择本地图片并预览
- Android 实现文件(图片)上传
- Android对话框图片全屏
- android如何获取url指定的图片资源
- android---图片切换