android照相及照片上传


Java代码
- 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;
 - }
 - }
 - }
 
android照相及照片上传的更多相关文章
- Android实现批量照片上传至server,拍照或者从相冊选择
		
近期因为项目需求,须要完毕批量照片上传,折腾了一段时间,最终完毕了,达到了例如以下效果 主界面主要有GridView组成和button组成,当按下一个格点时,会调用相机或者相冊,拍照或者选择相冊照片, ...
 - 用C#缩小照片上传到各种空间
		
中秋到了,首先祝各位猿友节日快乐!!! 本博文的原名称是“跟我一起用C#压缩照片上传到各种空间”,评论上有人开骂,没办法我这人就是自信霸气,但是既然有人提出来我还是改掉吧,如果文章写得不好的地方欢迎大 ...
 - Android之mtk上传log
		
Android之mtk上传log 1,打开浏览器 2.输入地址http://eservice.mediatek.com/eservice-portal/login 3.输入用户名,密码 4.提eser ...
 - 使用.NET框架、Web service实现Android的文件上传(二)
		
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYUAAAKpCAIAAADcx6fPAAAgAElEQVR4nOydd1hT5+LHg1attbfr1t ...
 - 利用WCF与Android实现图片上传并传参
		
利用WCF与Android实现图片上传并传参 最近做一个项目后端使用WCF接收Android手机拍照并带其它参数保存到服务器里:刚好把最近学习的WCF利用上,本以为是个比较简单的功能应该很好实现,没想 ...
 - Android OkHttp文件上传与下载的进度监听扩展
		
http://www.loongwind.com/archives/290.html 上一篇文章介绍了用Retrofit实现文件的上传与下载,但是我们发现没办法监听上传下载的进度,毕竟我们在做开发的时 ...
 - SSM + Android 网络文件上传下载
		
SSM + Android 网络交互的那些事 2016年12月14日 17:58:36 ssm做为后台与android交互,相信只要是了解过的人都知道一些基本的数据交互,向json,对象,map的交互 ...
 - Android自定义View前传-View的三大流程-Measure
		
Android自定义View前传-View的三大流程-Measure 参考 <Android开发艺术探索> https://developer.android.google.cn/refe ...
 - css实现照片上传的加号框
		
css实现照片上传的加号框
 
随机推荐
- 为什么size_t重要?
			
参见 http://en.cppreference.com/w/cpp/types/size_t size_t其实与uintptr_t一个道理.就是一个东西.指针其实就是寻址,与地址总线位数一致,编译 ...
 - 大神的博客地址liferay
			
http://www.huqiwen.com/category/technology-share/liferay/
 - linux服务后台管理
			
把进程放到后台有两种方法 1.cmmand & 2.ctrl+z 暂停到后台 查看后台服务 jobs 把后台进程移到前台 fg %2 工作号 恢复到前台 后台服务继续执行 bg ...
 - 用js或css实现淡入淡出
			
淡入淡出?你问我有什么用? 提升首页13格的东西,你居然不知道!! 好啦,不废话了,正文. 1 js 主要元素:fadeIn() fadeOut() show hide 2 css 主要元素: o ...
 - uva11354 LCA+最小生成树+dp
			
源自大白书 题意 有n座城市通过m条双向道路相连,每条道路都有一个危险系数.你的任务是回答若干个询问,每个询问包含一个起点s和一个终点t,要求找到一条从s到t的路,使得途径所有的边的大最大危险系数最小 ...
 - 单片机电平转换电路5V 3.3V串口通讯等(转)
			
源: 单片机电平转换电路5V 3.3V串口通讯等
 - Web安全学习笔记之DES算法实例详解
			
转自http://www.hankcs.com/security/des-algorithm-illustrated.html 译自J. Orlin Grabbe的名作<DES Algorith ...
 - JavaScript DOM 元素属性 状态属性
			
JavaScript DOM 元素属性 状态属性 版权声明:未经允许,严禁转载! 元素的属性 核心 DOM 为我们提供了操作元素标准属性的统一 API. 所有属性节点都储存在元素的 attribute ...
 - Android项目开发四
			
微博客户端开发 本周学习计划 研究微博客户端关于Sqlite数据库代码. 完成微博撰写.发布等功能模块. 将程序中存在的问题解决. 实际完成情况 Sqlite数据库学习与研究 微博客户端功能设定中涉及 ...
 - 基于Android应用《玩转英语》(总报告)
			
基于Android应用<玩转英语> 摘 要 ...