文档章节

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

ForingY
 ForingY
发布于 2016/08/01 11:23
字数 406
阅读 19
收藏 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
博文 272
码字总数 156129
作品 0
杭州
程序员
项目需求讨论 - WebView下拍照及图片选择功能

前言: 如果觉得掘金上看图片放大看不清楚,可以跳到另外的同步发布的链接看,放大图片下部有个可以查看原图功能,很清楚:项目需求讨论 - WebView下拍照及图片选择功能 现在很多app里面,都...

青蛙要fly
06/23
0
0
Android 调用系统拍照 笔记

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

会说话的哑巴
2012/09/07
0
0
Android上使用camera拍照,把获取的照片上传到远程服务器

参考原文: Take a Photo from Android Camera and Upload it to a Remote PHP Server 使用Java上传文件 从Apache Software Foundation下载HttpClient 4.3.4。 在工程中添加下面的jar包: 参......

yushulx
2014/08/11
0
0
关于调用Android照相功能获取图片

最近在项目中调用相机,使用了别人写好的文件,但发现获取的照片没真正使用系统照相拍照再查看那么清晰,于是研究了一下,发现通常调用照相功能获取的图片都是被压缩的,如果要获取原照,那得...

tyronejw
2015/08/18
0
0
Android应用开发之使用PhoneGap实现拍照上传功能

看这里:Android应用开发之使用PhoneGap实现拍照上传功能 在之前的使用Intellij Idea 搭建PhoneGap Android开发环境以及Android应用开发之使用PhoneGap实现位置上报功能两篇文章中,我们学习...

Realfighter
2015/02/05
0
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

kernel version does not match DSO version

错误信息: kernel version 384.11 does not match DSO version 384.130.0 原因是: cuda driver版本太低,不匹配DSO 简单有效的修复方法,升级nvidia driver, 步骤如下: 1. google seach ...

刘小米
今天
0
0
maven坐标和依赖

一、maven坐标详解 <groupId>com.fgt.club</groupId><artifactId>club-common-service-facade</artifactId><version>3.0.0</version><packaging>jar</packaging> maven的坐标元素说......

老韭菜
今天
1
0
springmvc-servlet.xml配置表功能解释

问:<?xml version="1.0" encoding="UTF-8" ?> 答: xml version="1.0"表示是此xml文件的版本是1.0 encoding="UTF-8"表示此文件的编码方式是UTF-8 问:<!DOCTYPE beans PUBLIC "-//SPRING//......

隐士族隐逸
今天
1
0
基于TP5的微信的公众号获取登录用户信息

之前讲过微信的公众号自动登录的菜单配置,这次记录一下在TP5项目中获取自动登录的用户信息并存到数据库的操作 基本的流程为:微信设置自动登录的菜单—>访问的URL指定的函数里获取用户信息—...

月夜中徘徊
今天
0
0
youTrack

package jetbrains.teamsys.license.runtime; 计算lis package jetbrains.ring.license.reader; 验证lis 安装后先不要生成lis,要把相关文件进行替换 ring-license-checker-1.0.41.jar char......

max佩恩
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部