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)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...
随机推荐
- robot创建桌面图标(转载)
桌面ride图标,安装之后会自动创建(偶尔也会创建失败),创建桌面图标方法如下: 1. 新建快捷方式 在桌面右击鼠标,弹出的菜单选择 新建-快捷方式 ,然后在"请键入对象"的位置输 ...
- MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了1000万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...
- VS2015编译Qt5.7.0生成支持XP的静态库(很不错)
一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...
- 原生js封装Ajax
[转载请注明出处] 1 /** * @fileoverview ajax请求公用组件 * @author Limo * @date 2015/08/07 * Native package ajax m ...
- oracle查询某个时间点的数据
1. select * from emps as of timestamp to_Date('2015-12-11 14:00:00','yyyy-mm-dd hh24:mi:ss'),SQL语句是查 ...
- firefox 插件 URLRedirector 审核通过
firefox 插件 URLRedirector 审核通过 前段时间弄的 firefox 插件,昨天通过了审核,已经在 firefox 上可以搜索和安装. 插件用 webextension 写的,代码 ...
- 项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx” 编译新下载的代码出错 修改包管理器的源为 http://www.nuget.org/api/v2/ .重试后成功 ...
- 1.初识Shell脚本语言
PS:在做Linux下STM8固件升级项目中,需要让CPU通过I2C总线给STM8传输数据,刚开始一个一个的敲,很浪费时间,用shell脚本大大提高了数据传输效率,它是用户与内核进行交互操作的一种接口 ...
- svg学习(九)path
<path> 标签用来定义路径. 下面的命令可用于路径数据: M = moveto L = lineto H = horizontal lineto V = vertical lineto ...
- hduoj 1285 确定比赛名次
http://acm.hdu.edu.cn/showproblem.php?pid=1285 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory ...