//代码如下:

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. win7与virtualbox中centos文件共享

    1.首先在Windows下创建一个文件夹,用于存放共享的文件,例如 E:\share 2.将该文件夹设置为共享文件夹. 右击文件夹,选择共享->特定用户 选择Everyone->添加-&g ...

  2. Flink - NetworkEnvironment

    NetworkEnvironment 是一个TaskManager对应一个,而不是一个task对应一个 其中最关键的是networkBufferPool, operator产生的中间结果,Result ...

  3. Sourceinsight最佳配色方案及颜色字体调整方法

    在Ubuntu下面用Gedit有一款比较好看的配色,应该是Darkblue.按照那个样子在SI里面做了一个差不多的,按个人喜好,背景色换成黑色,如下所示: 配色的方案文件可以从此处链接免费下载: 配色 ...

  4. php 获取中文长度 截取中文字符串

    #获取中文长度mb_strlen($str,$encoding); #截取中文字符串 mb_substr(str,start,length,encoding);

  5. 使用linq的好处

    1.linq非常方便,把复杂的业务逻辑从数据库分离,起到了很好的优化作用 2.linq非常灵活,可以用基本统一的访问方式,访问各种数据源,对项目的管理和维护,起到了十分便捷的作用 3.用linq可以不 ...

  6. python fabric install

    1,install setuptools 2,install pip 3,install pycrpto 4,install paramiko 5,install fabric

  7. 自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理

    验证的代码: #include <stdio.h> int main(){ char c = 'z'; ) + (c << ) + () + 'a'; printf(" ...

  8. Hihocoder 1059 String Matching Content Length

    预处理下连续相等的字符个数其实主要是看是否满3个 后面递推的时候特判下+1上次递推[i-1,j-1]不是来自[i-2,j-1]也不是来自[i-1,j-2]其实就是只来自[i-4,j-4]+3,和[i- ...

  9. Coins

    Description Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. One day Hi ...

  10. 1.<%@Page%>中的Codebehind、AutoEventWireup、Inherits有何作用?

    AutoEventWireup --- 指示是否自动启用页事件. Codebehind --- 指示后台代码文件. Inherits --- 继承类. AutoEventWireup:指示该页的事件是 ...