android照相及照片上传


android照相及照片上传_第1张图片

android照相及照片上传_第2张图片
Java代码 收藏代码
  1. packagecom.android.cist.camera.view;
  2. importjava.io.ByteArrayOutputStream;
  3. importjava.io.InputStream;
  4. importjava.util.HashMap;
  5. importjava.util.Map;
  6. importandroid.app.Activity;
  7. importandroid.app.AlertDialog;
  8. importandroid.content.ContentResolver;
  9. importandroid.content.DialogInterface;
  10. importandroid.content.Intent;
  11. importandroid.graphics.Bitmap;
  12. importandroid.graphics.BitmapFactory;
  13. importandroid.net.Uri;
  14. importandroid.os.Bundle;
  15. importandroid.os.Handler;
  16. importandroid.os.Message;
  17. importandroid.view.View;
  18. importandroid.view.View.OnClickListener;
  19. importandroid.widget.Button;
  20. importandroid.widget.EditText;
  21. importandroid.widget.ImageView;
  22. importandroid.widget.LinearLayout;
  23. importandroid.widget.Toast;
  24. importcom.android.cist.R;
  25. importcom.android.cist.network.HttpUtil;
  26. importcom.android.cist.network.form.FormFile;
  27. importcom.android.cist.network.form.HttpFormUtil;
  28. importcom.android.cist.util.ApplicationUtil;
  29. importcom.android.cist.util.ImageUtil;
  30. publicclassCameraActivityextendsActivityimplementsOnClickListener{
  31. privateImageViewpreview;
  32. privateEditTextcarNo;
  33. privateEditTextaddres;
  34. privateEditTexttype;
  35. privateButtonback;
  36. privateButtonsubmit;
  37. privateButtoncapture;
  38. privateButtonreCapture;
  39. privateOnClickListenerimgViewListener;
  40. privateBitmapmyBitmap;
  41. privatebyte[]mContent;
  42. privateHandlerhandler;
  43. StringreturnString;
  44. privateCalendarViewhappenDate;
  45. privatestaticfinalintREQUEST_CAMERA=1;
  46. privatestaticfinalintREQUEST_CALENDAR=2;
  47. @Override
  48. publicvoidonCreate(BundlesavedInstanceState)
  49. {
  50. super.onCreate(savedInstanceState);
  51. setContentView(R.layout.camera);
  52. setUpViews();
  53. setUpListeners();
  54. ApplicationUtil.getInstance().addActivity(this);
  55. }
  56. @Override
  57. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)
  58. {
  59. super.onActivityResult(requestCode,resultCode,data);
  60. ContentResolverresolver=getContentResolver();
  61. /**
  62. *因为两种方式都用到了startActivityForResult方法,
  63. *这个方法执行完后都会执行onActivityResult方法,所以为了区别到底选择了那个方式获取图片要进行判断,
  64. *这里的requestCode跟startActivityForResult里面第二个参数对应
  65. */
  66. if(requestCode==0)
  67. {
  68. try
  69. {
  70. //获得图片的uri
  71. UrioriginalUri=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(Exceptione)
  79. {
  80. System.out.println(e.getMessage());
  81. }
  82. }elseif(requestCode==REQUEST_CAMERA){
  83. try
  84. {
  85. super.onActivityResult(requestCode,resultCode,data);
  86. Bundleextras=data.getExtras();
  87. myBitmap=(Bitmap)extras.get("data");
  88. ByteArrayOutputStreambaos=newByteArrayOutputStream();
  89. myBitmap.compress(Bitmap.CompressFormat.JPEG,100,baos);
  90. mContent=baos.toByteArray();
  91. }catch(Exceptione)
  92. {
  93. e.printStackTrace();
  94. }
  95. //把得到的图片绑定在控件上显示
  96. preview.setImageBitmap(ImageUtil.toRoundCorner(myBitmap,10));//把拍摄的照片转成圆角显示在预览控件上
  97. }elseif(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. publicstaticBitmapgetPicFromBytes(byte[]bytes,BitmapFactory.Optionsopts)
  104. {
  105. if(bytes!=null)
  106. if(opts!=null)
  107. returnBitmapFactory.decodeByteArray(bytes,0,bytes.length,opts);
  108. else
  109. returnBitmapFactory.decodeByteArray(bytes,0,bytes.length);
  110. returnnull;
  111. }
  112. publicstaticbyte[]readStream(InputStreaminStream)throwsException
  113. {
  114. byte[]buffer=newbyte[1024];
  115. intlen=-1;
  116. ByteArrayOutputStreamoutStream=newByteArrayOutputStream();
  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. returndata;
  125. }
  126. @Override
  127. publicvoidonClick(Viewv){
  128. intid=v.getId();
  129. switch(id){
  130. caseR.id.capture:{
  131. finalCharSequence[]items=
  132. {"相册","拍照"};
  133. AlertDialogdlg=newAlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
  134. newDialogInterface.OnClickListener()
  135. {
  136. publicvoidonClick(DialogInterfacedialog,intitem)
  137. {
  138. //这里item是根据选择的方式,
  139. //在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
  140. if(item==1){
  141. IntentgetImageByCamera=newIntent("android.media.action.IMAGE_CAPTURE");
  142. startActivityForResult(getImageByCamera,REQUEST_CAMERA);
  143. }else{
  144. IntentgetImage=newIntent(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. /*caseR.id.reCapture:{
  155. finalCharSequence[]items=
  156. {"相册","拍照"};
  157. AlertDialogdlg=newAlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
  158. newDialogInterface.OnClickListener()
  159. {
  160. publicvoidonClick(DialogInterfacedialog,intitem)
  161. {
  162. //这里item是根据选择的方式,
  163. //在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
  164. if(item==1)
  165. {
  166. IntentgetImageByCamera=newIntent("android.media.action.IMAGE_CAPTURE");
  167. startActivityForResult(getImageByCamera,1);
  168. }else
  169. {
  170. IntentgetImage=newIntent(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. caseR.id.submit:{
  181. newPostThread().start();//开启线程提交数据
  182. }
  183. break;
  184. caseR.id.back:{
  185. CameraActivity.this.finish();//返回,销毁当前Activity
  186. }
  187. break;
  188. default:
  189. break;
  190. }
  191. }
  192. }

更多相关文章

  1. android 自定义图片剪裁
  2. Android——ImageButton【图片按钮】的点击事件与属性
  3. android 选择本地图片并预览
  4. Android 实现文件(图片)上传
  5. Android对话框图片全屏
  6. android如何获取url指定的图片资源
  7. android---图片切换

随机推荐

  1. 将敏感数据存储在数据库中,建议
  2. 查找setTimeout()中剩下的时间?
  3. 自定义ComboBox焦点不会切换到选择elem并
  4. 如何在v模型更改时触发事件? (vue js)
  5. Python 内置函数及excel操作
  6. 将所有域添加到CORS的安全隐患(Access-Con
  7. python正则表达式
  8. 某老师给我的javascript学习建议
  9. AngularJS:TypeError:无法读取未定义的属性
  10. 前端开发命名规范(html+css+js)