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实现照片上传的加号框
随机推荐
- 公司里面用的iTextSharp(教程)---生成一个简答的PDF的语法
本来打算先写一个项目大家一起练习的,但是后来发现不懂一些基本的语法,几乎做了之后也有些不明白,下面我们一起简简单单的看一下哈~~ 语法1:Document document = new Documen ...
- 返回xml过长时被nginx截断的解决办法
返回xml过长时被nginx截断的解决办法 问题描述:通过网页获取数据,数据格式为xml.当xml比较短时,可以正常获取数据.但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,发现xml ...
- sql server deadlock跟踪的四种方法
最近写程序常会遇到deadlock victim,每次一脸懵逼.研究了下怎么跟踪,写下来记录下. 建测试数据 CREATE DATABASE testdb; GO USE testdb; CREATE ...
- P3374 【模板】树状数组 1(cdq)
P3374 [模板]树状数组 1 cdq分治 刚学了cdq分治(dyf神犇强力安利下),发现可以做这种题,当然是来试水了(逃 cdq好像只能离线的样子 cdq分治(转) 以下是摘录的几句: 在合并的时 ...
- TI 实时操作系统SYS/BIOS使用总结
1:概述: SYS/BIOS 是一个可扩展的实时的操作系统.具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性,强壮的抢占系统,优化的内存分配和堆栈管理(尽量少的消耗和碎片) ...
- Go第三篇之大话容器
Go语言数组 数组(Array)是一段固定长度的连续内存区域 在 Go 语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化 Go 语言数组的声明 数组的写法如下: var 数组变 ...
- 面向对象之(非)绑定方法,反射,isinstance与issubclass
isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查obj是否是类 cls 的对象 class Foo(object): pa ...
- luogu3261 懒惰左偏树 [JLOI2015]城池攻占
目录 题目 思路 错误&&反思 代码 题目 luogu 原来左偏树真的能懒惰下放 那这篇博客应该要咕咕了 一开始我按照那篇博客想了一下,感觉emm,还是瞄了一眼看到了pushdown ...
- BZOJ 4552: [Tjoi2016&Heoi2016]排序 线段树 二分
目录 此代码是个假代码,只能糊弄luogu,以后再改,路过大佬也可以帮一下辣 update 10.6 此代码是个假代码,只能糊弄luogu,以后再改,路过大佬也可以帮一下辣 /* //fang zhi ...
- P4113 [HEOI2012]采花 (莫队TLE)
思路 update 11.2 树状数组AC 本题莫队过不去,会TLE ----------------------- 但也是个不错的莫队练手题 ------------------------ 毕竟C ...