//代码如下:

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使用默认程序进行图片拍照已经裁剪,以及设备读取的更多相关文章

  1. android 开发 实现一个进入相机拍照后裁剪图片或者进入相册选中裁剪图片的功能

    实现思维路径: 以进入相机拍照的思维路线为例子: 1.进入app 2.判断之前是否保存头像,如果有就显示历史图像 (下面代码中在getOldAvatar();方法中执行这个逻辑) 3.点击更换图像的B ...

  2. Android系统默认对话框添加图片

    开发工具Android Studio 今天公司UI要求软件对话框改成加图片的,以前没有做过,所以就学习了一下,废话不多说, 看效果: 创建XML文件dialog_lsit_item.xml <L ...

  3. Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端

    Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端 本博客前面博文中利用org.apache.http包中API进行Android客户端HTTP连接的例子 ...

  4. [Android实例教程] 教你如何拍照+相册选择图片+剪裁图片完整实现

    [Android实例教程] 教你如何拍照+相册选择图片+剪裁图片完整实现 今天做Android项目的时候要用到图片选择,要实现拍照获取图片和从相册获取图片,并且要求在获取完之后可以裁剪,试了很多方法之 ...

  5. Android Camera 相机程序编写

    Android Camera 相机程序编写 要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在AndroidManifest.xml中加上使用设备相机的权限: <uses-per ...

  6. Android 系统默认参数的修改

    转自: http://www.th7.cn/Program/Android/201505/447097.shtml 写在前面的话 一般在新项目开始之初,我们需要针对客户需求进行各种系统默认属性的配置, ...

  7. 微信小程序实现图片是上传、预览功能

    本文实例讲述了微信小程序实现图片上传.删除和预览功能的方法,分享给大家供大家参考,具体如下: 这里主要介绍一下微信小程序的图片上传图片删除和图片预览 1.可以调用相机也可以从本地相册选择 2.本地实现 ...

  8. React native 之android的图标和启动图片

    哎哎呀呀,上篇说到了react native的IOS的图标和启动图片的设置,其实最主要的是尺寸!相应的尺寸设定好了以后就不会报错了! ok~这篇说的是React native的android的图标和启 ...

  9. Android训练课程(Android Training) - 高效的显示图片

    高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...

随机推荐

  1. javascript 数字进制转换

    //十进制转其他 var x=110; alert(x); alert(x.toString(8)); alert(x.toString(32)); alert(x.toString(16)); // ...

  2. sql server 游标 写给自己

    ) --定义两个局部变量 @id @name 全局变量是两个@@name ) Declare Cur Cursor For --定义一个游标 select id,name from temp1 --查 ...

  3. BZOJ 1003 物流运输【最短路】【动态规划】

    这道题数据太小啦!先枚举i,j表示从第i天到第j天不更改航线的费用. 然后直接跑最短路算法(我用的是Q版男朋友算法) 动归方程显然是f[i] = min(f[i], f[j] + cost[j+1][ ...

  4. zTree的内核

    zTree的内核:   *  结构       (function($){           //常量部分           //申明常量是因为这些数据是不能改变的,如果成了对象的属性,很容易就改 ...

  5. Windows 下TortoiseGit 设置避免每次登录帐号密码

    TortoiseGit ->Settings 1.选择设置的git目录 2.输入登录帐号与email 3.点击Edit global.gitconfig 编辑,将文本 [credential] ...

  6. vue.js 学习笔记

    /*属性*/ 标签内的属性都用 :attr="xxx" 的形式 /*模板*/ {{ msg }} -> 绑定数据 {{ *msg }} -> 数据只绑定一次 {{{ m ...

  7. ztree获取当前选中节点子节点id集合的方法(转载)

    本文实例讲述了ztree获取当前选中节点子节点id集合的方法.分享给大家供大家参考.具体分析如下: 要求:获取当前选中节点的子节点id集合. 步骤: 1.获取当前节点 2.用ztree的方法trans ...

  8. oracle里面base64加解密

    1. base64 的解密函数select utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw('dGVzdA= ...

  9. mysql主键uuid、uuid_short和int自增对比

    数据库主键性能对比: 名称 存储长度 生成方式 1. uuid 32+4 uuid()函数 2. uuid20 20 UUID_SHORT()函数 3. bigint自增 20 auto_increm ...

  10. Static方法在多线程环境下的运行

    最近看了Jfinal 一致对model的那个static final dao有些疑惑,全局一个实例安全吗?同时也出了一个疑惑,静态方法执行会有并发影响吗?看代码 StaticThread.java p ...