2019独角兽企业重金招聘Python工程师标准>>>

最近看了几篇关于Android照相机的一些文章,现在总结如下,直接上源代码把,该说的都用注释说完了

package org.android.test;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class Android_mytestActivity extends Activity {/** Called when the activity is first created. */// 定义一个button打开照相机,定义一个imageview显示照相机所拍摄的相片;Button but,upload_image;ImageView img;// 获取sd卡根目录地址,并创建图片父目录文件对象和文件的对象;String file_str = Environment.getExternalStorageDirectory().getPath();File mars_file = new File(file_str + "/my_camera");File file_go = new File(file_str + "/my_camera/file.jpg");@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);but = (Button) findViewById(R.id.my_camare_button);upload_image=(Button)findViewById(R.id.upload_image);img = (ImageView) findViewById(R.id.my_img_view);//拍照but.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// 验证sd卡是否正确安装:if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {// 先创建父目录,如果新创建一个文件的时候,父目录没有存在,那么必须先创建父目录,再新建文件。if (!mars_file.exists()) {mars_file.mkdirs();}/*//常规情况下,我们这里会 创建子目录,但在这里不用系统拍照完毕后会根据所给的图片路径自动去实现;if(!file_go.exists()){try {file_go.createNewFile();} catch (IOException e) {}}*/  // 设置跳转的系统拍照的activity为:MediaStore.ACTION_IMAGE_CAPTURE ;Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 并设置拍照的存在方式为外部存储和存储的路径;intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(file_go));//跳转到拍照界面;startActivityForResult(intent, 0x1);} else {Toast.makeText(Android_mytestActivity.this, "请先安装好sd卡",Toast.LENGTH_LONG).show();}}});//上传upload_image.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(file_go.exists()){//验证图片存在后就实现,上传功能,得到与服务器的输出流...//什么URLconnection ,HttpURLconnectio等都可以.......Toast.makeText(Android_mytestActivity.this, "上传中....",Toast.LENGTH_LONG).show();}else{Toast.makeText(Android_mytestActivity.this, "请先拍照....",Toast.LENGTH_LONG).show();}}});}//拍照结束后显示图片;@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stub// 判断请求码和结果码是否正确,如果正确的话就在activity上显示刚刚所拍照的图片;if (requestCode == 0x1 && resultCode == this.RESULT_OK) {/* 使用BitmapFactory.Options类防止OOM(Out Of Memory)的问题;创建一个BitmapFactory.Options类用来处理bitmap;*/BitmapFactory.Options myoptions=new BitmapFactory.Options();/* 设置Options对象inJustDecodeBounds的属性为true,用于在BitmapFactory的decodeFile(String path, Options opt)后获取图片的高和宽;而且设置了他的属性值为true后使用BitmapFactory的decodeFile()方法无法返回一张图片的bitmap对象,仅仅是把图片的高和宽信息给Options对象;*/myoptions.inJustDecodeBounds=true;BitmapFactory.decodeFile(file_go.getAbsolutePath(),myoptions);//根据在图片的宽和高,得到图片在不变形的情况指定大小下的缩略图,设置宽为222;int height=myoptions.outHeight*222/myoptions.outWidth;myoptions.outWidth=222;myoptions.outHeight=height;//在重新设置玩图片显示的高和宽后记住要修改,Options对象inJustDecodeBounds的属性为false;//不然无法显示图片;myoptions.inJustDecodeBounds=false;//还没完这里才刚开始,要节约内存还需要几个属性,下面是最关键的一个;myoptions.inSampleSize=myoptions.outWidth/222;//还可以设置其他几个属性用于缩小内存;myoptions.inPurgeable=true;myoptions.inInputShareable=true;myoptions.inPreferredConfig=Bitmap.Config.ARGB_4444;// 默认是Bitmap.Config.ARGB_8888//成功了,下面就显示图片咯;Bitmap bitmat = BitmapFactory.decodeFile(file_go.getAbsolutePath(),myoptions);img.setImageBitmap(bitmat);} else {System.out.println("不显示图片");}super.onActivityResult(requestCode, resultCode, data);}
}

2.布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#aaaaaa"android:orientation="vertical" ><Buttonandroid:id="@+id/my_camare_button"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="点击拍照" /><Button android:id="@+id/upload_image"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="上传相片"/><ImageViewandroid:id="@+id/my_img_view"android:layout_width="wrap_content"android:layout_height="fill_parent" /></LinearLayout>

3.主配置文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.android.com/apk/res/android"package="org.android.test"android:versionCode="1"android:versionName="1.0" ><uses-sdk android:minSdkVersion="8" /><!-- <!– 对SD卡进行写权限 –> --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 提供创建与删除文件的权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><activityandroid:name=".Android_mytestActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
</manifest>
注意一定要加关于文件读写的权限,有个权限我没有加(就是照相机的):<uses-permission android:name="android.permission.CAMERA" />
因为我们是跳转的系统的照相机的activity,所以关于拍照仍然是系统完成的,因此这里不需要加上这个权限。

转载于:https://my.oschina.net/u/1866821/blog/372618

Android实现拍照并上传相关推荐

  1. android相册拍照剪切上传封装,安卓,图片裁剪上传真机测试好使,打包后显示:无法保存裁剪的图像...

    var IMAGE_UNSPECIFIED = "image/*"; var PHOTOZOOM = 2; // 获取完图片返回key var PHOTOLAT = 1; // 剪 ...

  2. android 实现自动拍照,android 调用摄像头自动拍照 并上传到YEELINK

    前几天看到yeelink这个网站很感兴趣,注册了个图像传感器,就想着写个程序调用安卓摄像头并上传照片 程序很简单这个还是记录一下 首先是权限,分别是联网,相机,文件读取,照相和自动对焦的权限 然后是代 ...

  3. android+nutz后台如何上传和下载图片

    android+nutz后台如何上传和下载图片 发布于 588天前  作者 yummy222  428 次浏览  复制  上一个帖子  下一个帖子  标签: 无 最近在做一个基于android的app ...

  4. android 与后台实时视频,android选择视频文件上传到后台服务器

    本文实例为大家分享了android选择视频文件上传到后台服务器的具体代码,供大家参考,具体内容如下 选择本地视频文件 首先第一步打开打开相册选择视频文件: Intent intent = new In ...

  5. Centos配置Jenkins实现Android自动打包并上传到蒲公英

    本篇文章来自 徐永红  的投稿,给大家讲解Centos配置Jenkins实现Android自动打包并上传到蒲公英,希望对大家有所帮助. 徐永红 的博客地址: https://xuyonghong.cn ...

  6. Android + https 实现 文件上传

    Android 应用中,如何使用https 实现 文件上传功能. package com.example.wbdream.zigvine;import android.annotation.Suppr ...

  7. flash在线拍照并上传到后台(servlet)

    一.flash在线拍照并上传到后台(servlet) 第一步:先新建一个ActionScript文件:ShiBieFunction.as 该文件的核心代码如下: =========使用摄像头获取视频流 ...

  8. Android Studio项目如何上传至JCenter

    Android studio Library项目上传至JCenter 配置Project目录下build.gradle dependencies {classpath 'com.jfrog.bintr ...

  9. Android(安卓)上传文件到阿里云点播,阿里云点播转码

    Android(安卓)上传文件到阿里云点播,阿里云点播转码 文章目录 Android(安卓)上传文件到阿里云点播,阿里云点播转码 一:登录阿里云点播平台配置添加转码模板组 1:需要什么参数,可自行填写 ...

最新文章

  1. 什么是数据中台?全面解读数据中台
  2. 解决scrollView像素自动下移的办法
  3. SpringBoot系列: SpringBoot 启动慢的问题
  4. 数据库基础知识——DQL语言(二)
  5. LTNS的完整形式是什么?
  6. 科幻照进现实!2020年这个最新编程技术,将完全颠覆软件开发习惯
  7. (16)机器学习_ROC曲线绘制
  8. 此计算机缺少vc2005_spl_with_atl_fix_redist解决问题
  9. Adams入门详解与实例(第2版)pdf电子书
  10. 【论文】Learning by Abstraction: The Neural State Machine
  11. origin导出矢量图变色,怎么办?
  12. 乐队设备--功放的学习和使用
  13. Kubernetes:基于命令行终端UI的管理工具 K9s
  14. BZOJ4833 [Lydsy1704月赛]最小公倍佩尔数
  15. 三步装机教程,电脑如何一键安装系统
  16. 模拟电子技术(六)信号的运算与处理
  17. 160809310袁韬淳
  18. 卷一:C佳佳语法第1篇
  19. vue 在 html标签上 做三元运算
  20. js hbs mysql_实例分析MySQL下的四种事务隔离级别

热门文章

  1. 解决“远程会话已断开连接,因为访问被拒绝导致许可证存储的创建失败,请使用提升的权限运行远程桌面客户端”问题
  2. JavaScript console.log导致错误:“不赞成在主线程上使用同步XMLHttpRequest…”
  3. 何时使用.First以及何时将.FirstOrDefault与LINQ结合使用?
  4. activiti配置文件activiti.cfg.xml
  5. LINUX版本的 MYSQL大小写敏感的处理方式
  6. activiti与spring集成
  7. UUID生成唯一激活码
  8. enq: tt - contention_时空中的绘旅人tt游戏下载-时空中的绘旅人tt客户端下载v1.0.16 安卓版...
  9. 实验4-2-3 验证“哥德巴赫猜想” (20 分)
  10. PCL综合开发(一):Qt 5.14 + PCL 1.8.1 +VS 2017环境配置