android使用默认程序进行图片拍照已经裁剪,以及设备读取
//代码如下:
package com.cbsw.yulechangsuo.activity;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.cbsw.ylcs.R;
import com.cbsw.yulechangsuo.common.BaseActivity;
import com.cbsw.yulechangsuo.services.UploadService;
import com.cbsw.yulechangsuo.util.idcard.impl.UartIDCardManagerImpl;
import com.cbsw.yulechangsuo.util.idcard.impl.UartIDCardManagerImpl.IDCardListener;
import com.ftdi.j2xx.D2xxManager;
import com.ftdi.j2xx.D2xxManager.D2xxException;
public class MainActivity extends BaseActivity implements IDCardListener{
private Button btn_paizhao,btn_baojing,btn_shangchaun,btn_shuaka;
private ImageView img_ic,img_paizhao;
private TextView tx_name,tx_idcard;
//自定义变量
public static final int TAKE_PHOTO = 1;
public static final int CROP_PHOTO = 2;
private Uri imageUri; //图片路径
private String filename; //图片名称
private UartIDCardManagerImpl idCardManager;
private String icPhotoUri,dkPhotoUri;
@Override
public void initWidget() {
setContentView(R.layout.activity_main);
img_ic=(ImageView)this.findViewById(R.id.img_ic);
img_paizhao=(ImageView)this.findViewById(R.id.img_paizhao);
btn_paizhao=(Button) this.findViewById(R.id.btn_paizhao);
btn_paizhao.setOnClickListener(this);
btn_baojing=(Button)this.findViewById(R.id.btn_baojing);
btn_baojing.setOnClickListener(this);
btn_shuaka=(Button)this.findViewById(R.id.btn_shuaka);
btn_shuaka.setOnClickListener(this);
btn_shangchaun=(Button)this.findViewById(R.id.btn_shangchuan);
btn_shangchaun.setOnClickListener(this);
tx_name=(TextView)this.findViewById(R.id.tx_name);
tx_idcard=(TextView)this.findViewById(R.id.tx_num);
D2xxManager d2xxManager=null;
try {
d2xxManager = D2xxManager.getInstance(this);
} catch (D2xxException e) {
e.printStackTrace();
}
idCardManager=UartIDCardManagerImpl.getInstance(this, d2xxManager);
idCardManager.setOnIDCardListener(this);
}
@Override
public void widgetClick(View v) {
switch (v.getId()) {
case R.id.btn_baojing:
btn_baojing.setText("已报警!");
btn_baojing.setBackgroundColor(Color.RED);;
break;
case R.id.btn_paizhao:
//图片名称 时间命名
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date(System.currentTimeMillis());
filename = format.format(date);
//创建File对象用于存储拍照的图片 SD卡根目录
//File outputImage = new File(Environment.getExternalStorageDirectory(),test.jpg);
//存储至DCIM文件夹
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File outputImage = new File(path,filename+".jpg");
try {
if(outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch(IOException e) {
e.printStackTrace();
}
//将File对象转换为URI并启动照相程序
imageUri = Uri.fromFile(outputImage);
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); //照相
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); //指定图片输出地址
startActivityForResult(intent,TAKE_PHOTO); //启动照相
//拍完照startActivityForResult() 结果返回onActivityResult()函数
break;
case R.id.btn_shuaka:
if(null!=idCardManager){
idCardManager.read();
}
break;
case R.id.btn_shangchuan:
UploadService uploadService=new UploadService(MainActivity.this);
icPhotoUri=Environment.getExternalStorageDirectory() + "/wltlib/zp.bmp";
String judgeStr=uploadService.judgeStr(tx_name.getText().toString(), tx_idcard.getText().toString(), icPhotoUri, dkPhotoUri);
if(judgeStr.equals("1")){
uploadService.uploadJl(tx_name.getText().toString(), tx_idcard.getText().toString(), icPhotoUri, dkPhotoUri);
}else {
Toast.makeText(MainActivity.this, judgeStr, Toast.LENGTH_SHORT).show();
}
uploadService.uploadJl(tx_name.getText().toString(), tx_idcard.getText().toString(), dkPhotoUri, dkPhotoUri);
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
Toast.makeText(MainActivity.this," ActivityResult resultCode error", Toast.LENGTH_SHORT).show();
return;
}
switch(requestCode) {
case TAKE_PHOTO:
Intent intent = new Intent("com.android.camera.action.CROP"); //剪裁
intent.setDataAndType(imageUri, "image/");
intent.putExtra("scale", true);
//设置宽高比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//设置裁剪图片宽高
intent.putExtra("outputX", 340);
intent.putExtra("outputY", 340);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
Toast.makeText(MainActivity.this, "剪裁图片", Toast.LENGTH_SHORT).show();
//广播刷新相册
Intent intentBc = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intentBc.setData(imageUri);
this.sendBroadcast(intentBc);
startActivityForResult(intent, CROP_PHOTO); //设置裁剪参数显示图片至ImageView
break;
case CROP_PHOTO:
try {
//图片解析成Bitmap对象
Bitmap bitmap = BitmapFactory.decodeStream(
getContentResolver().openInputStream(imageUri));
dkPhotoUri=imageUri.toString();
LayoutParams params=img_paizhao.getLayoutParams();
params.height=500;
params.width=500;
img_paizhao.setLayoutParams(params);
img_paizhao.setImageBitmap(bitmap); //将剪裁后照片显示出来
btn_paizhao.setText("重新拍照");
} catch(FileNotFoundException e) {
e.printStackTrace();
}
break;
default:
break;
}
}
/**
* 显示身份证信息
*/
@Override
public void onShowIDCardData(String[] decodeInfo, Integer readFlag)
throws IOException {
tx_name.setText(decodeInfo[0]);
tx_idcard.setText(decodeInfo[5]);
if (1 == readFlag) {
FileInputStream fis = new FileInputStream(Environment.getExternalStorageDirectory() + "/wltlib/zp.bmp");
Bitmap bmp = BitmapFactory.decodeStream(fis);
fis.close();
img_ic.setImageBitmap(bmp);
} else {
img_ic.setImageResource(R.drawable.face);
}
idCardManager.close();
}
@Override
public void onShowErrorInfo(String msg, Integer resId) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}
android使用默认程序进行图片拍照已经裁剪,以及设备读取的更多相关文章
- android 开发 实现一个进入相机拍照后裁剪图片或者进入相册选中裁剪图片的功能
实现思维路径: 以进入相机拍照的思维路线为例子: 1.进入app 2.判断之前是否保存头像,如果有就显示历史图像 (下面代码中在getOldAvatar();方法中执行这个逻辑) 3.点击更换图像的B ...
- Android系统默认对话框添加图片
开发工具Android Studio 今天公司UI要求软件对话框改成加图片的,以前没有做过,所以就学习了一下,废话不多说, 看效果: 创建XML文件dialog_lsit_item.xml <L ...
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端 本博客前面博文中利用org.apache.http包中API进行Android客户端HTTP连接的例子 ...
- [Android实例教程] 教你如何拍照+相册选择图片+剪裁图片完整实现
[Android实例教程] 教你如何拍照+相册选择图片+剪裁图片完整实现 今天做Android项目的时候要用到图片选择,要实现拍照获取图片和从相册获取图片,并且要求在获取完之后可以裁剪,试了很多方法之 ...
- Android Camera 相机程序编写
Android Camera 相机程序编写 要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在AndroidManifest.xml中加上使用设备相机的权限: <uses-per ...
- Android 系统默认参数的修改
转自: http://www.th7.cn/Program/Android/201505/447097.shtml 写在前面的话 一般在新项目开始之初,我们需要针对客户需求进行各种系统默认属性的配置, ...
- 微信小程序实现图片是上传、预览功能
本文实例讲述了微信小程序实现图片上传.删除和预览功能的方法,分享给大家供大家参考,具体如下: 这里主要介绍一下微信小程序的图片上传图片删除和图片预览 1.可以调用相机也可以从本地相册选择 2.本地实现 ...
- React native 之android的图标和启动图片
哎哎呀呀,上篇说到了react native的IOS的图标和启动图片的设置,其实最主要的是尺寸!相应的尺寸设定好了以后就不会报错了! ok~这篇说的是React native的android的图标和启 ...
- Android训练课程(Android Training) - 高效的显示图片
高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...
随机推荐
- java.util.zip获取Zip文件条目InputStream
package com.test; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import ja ...
- 【转】如何把Json格式字符写进text文件中
http://www.cnblogs.com/insus/p/4306640.html http://json2csharp.chahuo.com/ 本篇一步一步学习怎样把显示于网页的json格式的字 ...
- Java读写资源文件类Properties
Java中读写资源文件最重要的类是Properties 1) 资源文件要求如下: 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注 ...
- HTML标签marquee实现滚动效果
html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标记不仅可以移动文字,也可以移动图片,表格等.只需要在<ma ...
- 用Apache生产csr申请证书
一. 安装Apache: 1.安装完成后将apache安装目录下 conf 文件夹中的"openssl.cnf"文件复制到bin文件夹中: 2.配置Apache支持ssl: 打开A ...
- Python开发【前端】:JavaScript
JavaScript入门 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...
- ASP.NET TextBox 当鼠标点击后清空默认提示文字[转]
前台文本框里添加下面2个事件属性: OnFocus="javascript:if(this.value=='提示文字') {this.value=''}" OnBlur=" ...
- EF 保证线程内唯一 上下文的创建
1.ef添加完这个对象,就会自动返回这个对象数据库的内容,比如下面这个表是自增ID 最后打印出来的ID 就是自增的结果 2.lambda 中怎么select * var userInfoList = ...
- JavaNote01_变量 基本数据类型
>主要内容: 变量的初始化.赋值.读写操作 8中基本数据类型(取值范围).整数的直接量(字面量)是哪种类型.浮点数的字面量是哪种类型 >变量 >>声明变量:开启一个存储单元,用 ...
- doPost()和doGet()
GET 请求的一些特点: GET 请求会有 cache GET 请求会保留在浏览历史中 GET 请求可以保存到书签 GET 请求不应用于处理敏感数据 GET 请求有长度限制 GET 请求应该只用于获取 ...