文档章节

android使用系统相机拍照返回照片,并通过webservice上传到服务器上

ForingY
 ForingY
发布于 2016/08/01 11:23
字数 406
阅读 16
收藏 0
点赞 0
评论 0

如果要在自己的应用中实现拍照的功能,首先要在AndroidManifest.xml文件中添加权限:

<uses-permission android:name="android.permission.CAMERA"/>  

启动相机的方法非常简单,通过intent访问MediaStore.ACTION_IMAGE_CAPTURE

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  // 指定拍照 

String name = new DateFormat().format("yyyyMMddhhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg";
imgName = name;
mFilePath += name;
Uri uri = Uri.fromFile(new File(mFilePath));// 加载路径
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);// 指定存储路径,这样就可以保存原图了

startActivityForResult(intent, 1);  // 拍照返回图片

拍照并确认后,Activity的onActivityResult方法会被调用,在这里可以获取图片的数据。

/**
     * 拍照返回
     */
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            String sdStatus = Environment.getExternalStorageState();
            if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用
                Log.i("TestFile", "SD card is not avaiable/writeable right now.");
                return;
            }
            try {
                is = new FileInputStream(mFilePath);// 获取输入流
                Bitmap bitmap = BitmapFactory.decodeStream(is);// 把流解析成bitmap
                ViewGroup.LayoutParams lp;
                lp = img.getLayoutParams();
                lp.width = 300;
                lp.height = 300 * bitmap.getHeight() / bitmap.getWidth();
                img.setLayoutParams(lp);
                img.setImageBitmap(bitmap);// 将图片显示在ImageView里
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                try {// 关闭流
                    is.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

通过webservice上传图片

 /**
     * 上传图片
     */
    private String imgUpload() {
        try {
            FileInputStream fis = new FileInputStream(mFilePath);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int count = 0;
            while ((count = fis.read(buffer)) >= 0) {
                baos.write(buffer, 0, count);
            }
            String uploadBuffer = new String(Base64.encode(baos.toByteArray()));  //进行Base64编码
            String f = connectWebService(uploadBuffer);
            Log.i("connectWebService", "start");
            fis.close();
            return f;
        } catch (Exception e) {
            e.printStackTrace();
            return "0";
        }
    }

    private String connectWebService(String imageBuffer) {
        SoapObject soapObject = new SoapObject(nameSpace, "uploadImage");
        soapObject.addProperty("flag", "1");            //标识
        soapObject.addProperty("filename", imgName);    // 图片名
        soapObject.addProperty("image", imageBuffer);   // 图片字符串
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = false;
        envelope.bodyOut = soapObject;
        envelope.setOutputSoapObject(soapObject);
        HttpTransportSE httpTranstation = new HttpTransportSE(wsdl);
        try {
            httpTranstation.call("", envelope);
            Object result = envelope.getResponse();
            Log.i("connectWebService", result.toString());
            return result.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return "0";
        }
    }

© 著作权归作者所有

共有 人打赏支持
ForingY
粉丝 23
博文 252
码字总数 156129
作品 0
杭州
程序员
调用多媒体功能

Android系统的多媒体功能使用的是MediaStore类,这个类是Android多媒体数据库的封装类。无论我们是调用多媒体功能发送的intent,data,extra等,还是从多媒体数据库存取数据,都要通过这个类。...

亭子happy ⋅ 2014/03/06 ⋅ 0

Android 新老两代 Camera API 大起底

0.背景简介 最近有一部分相机相关的需求,专注于对拍摄的照片、视频的噪点、色温、明暗等方面进行优化。一般我们在生活中使用相机来拍照的话,在前期拍摄时,就可以通过调整相机的拍摄参数,...

byeweiyang ⋅ 05/30 ⋅ 0

你需要知道的Android拍照适配方案

你需要知道的Android拍照适配方案 字数4229 阅读4284 评论23 喜欢71 声明:本文作者授权微信公众号Android程序员(AndroidTrending)在微信公众号平台原创首发。 近段时间,家里陪自己度过大...

3kqing ⋅ 2016/06/05 ⋅ 0

使用 android 的摄像头拍照

android提供了操作摄像头的API,可以通过两种做法来使用: 通过Intent直接调用系统提供的照相机功能,复用它的拍照Activity,这是最简单和最方便的办法,因为你不需要考虑手机的兼容性问题,...

华宰 ⋅ 2011/09/07 ⋅ 0

Android 调用系统拍照 笔记

由于临时需要做个简单的Android程序,其中涉及调用系统拍照并保存照片。之前没有任何Java和Android经验,coding中遇到不少问题,特记录以供参考。 Google一下能找到不少现成的调用系统拍照的...

会说话的哑巴 ⋅ 2012/09/07 ⋅ 0

Android 相机使用教程(一)

Android 框架提供对设备上可用的相机和各种相机功能的支持,通过它我们可以在应用程序中拍摄图片和视频。本文将介绍一种快速,简单的拍摄图像和视频方法,并概述创建自定义相机的高级用法。 ...

Xiao_Mai ⋅ 2017/10/13 ⋅ 0

Android相机开发那些坑

版权声明:本文由王梓原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/168 来源:腾云阁 https://www.qcloud.com/community 最近我负责开发了一个跟And...

偶素浅小浅 ⋅ 2016/11/08 ⋅ 0

说说 Android 中如何使用摄像头和相册

很多 APP 应用都有用户头像功能,用户既可以调用摄像头马上拍一张美美的自拍,也可以打开相册选取一张心仪的照片作为头像。 1 调用摄像头 布局文件: 活动类代码: getExternalCacheDir() 可...

deniro ⋅ 05/26 ⋅ 0

Android Camera 相机开发详解

在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口。Camera2在接口和架构上做了巨大的变动,但是基于众所周知的原因,我们还必须基于 Android 4.+ 系统进行开发。本文介绍的是C...

陈小锅 ⋅ 2016/07/25 ⋅ 0

一文看尽Google I/O大会:AI打电话以假乱真,TPU 3.0正式发布

安妮 李根 发自 山景城 量子位 报道 | 公众号 QbitAI 今天凌晨,Google I/O 2018大会拉开帷幕。 开场一句Make good things together,然后就向全世界展示了AI将会带来的美好世界,2小时内,黑...

yh0vlde8vg8ep9vge ⋅ 05/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 30分钟前 ⋅ 0

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 49分钟前 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 58分钟前 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 今天 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 今天 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部