您的位置:首页 > 移动开发 > Android开发

调用Android相机拍照,解决了拍照时候内存溢出溢出的问题

2014-02-15 15:10 459 查看
在别处上看到的文章,解决了我在开发中的拍照后内存溢出的问题,下面就是代码

private static int CARMER_REQUEST_CODE = 1;
private String filedirName = "sencondIDCard";
private String picFileName = "";
private File picFile = null;
Uri imgUri = null;
OcrEngine oe;
IDCard ic;

private void startCarmer() {

File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "sencondIDCard");
if(!dir.exists()){
dir.mkdirs();
}

Date date = null;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");// 获取当前时间,进一步转化为字符串
date = new Date();
picFileName = format.format(date) + ".jpg";
picFile = new File(dir,picFileName);
Uri u=Uri.fromFile(picFile);
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

camera.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
camera.putExtra(MediaStore.EXTRA_OUTPUT, u);

startActivityForResult(camera, CARMER_REQUEST_CODE);

}

/**
* @param 将图片内容解析成字节数组
* @param inStream
* @return byte[]
* @throws Exception
*/
public   byte[] readStream(InputStream inStream) throws Exception {
byte[] buffer = new byte[1024];
int len = -1;
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
while ((len = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
byte[] data = outStream.toByteArray();
outStream.close();
inStream.close();
return data;

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == CARMER_REQUEST_CODE  ) {
try {
imgUri =   Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(),   picFile.getAbsolutePath(), null, null));
//u就是拍摄获得的原始图片的uri,剩下的你想干神马坏事请便……
ContentResolver cr = getContentResolver();
InputStream imgIS = imgIS = cr.openInputStream(imgUri);
//              ic = oe.recognize(MainActivity.this, picFile.getAbsolutePath());
ic = oe.recognize(MainActivity.this, readStream(imgIS));
String cn = ic.getCardNo();
String bt = ic.getBirth();
if(cn != null){
System.out.println("cn--->" + cn);
}else{
System.out.println("cn---> cn is null" );
}
System.out.println("--->" );
} catch ( Exception e) {
e.printStackTrace();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐