在接收到EncodingActivity传回来的二维码图片压缩成的数组后,先将数组转换成bitmap格式显示在界面上,传给再QRToSDcardSaveService压缩并保存到SD卡中
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e("encodingFragment", "已经收到传回的二维码");
Bundle bundle=data.getExtras();
byte [] bis=bundle.getByteArray("qrcode");
final Bitmap bitmap=BitmapFactory.decodeByteArray(bis, 0, bis.length);
encoding_img.setImageBitmap(bitmap);
saveToSDbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
dcardSaveService=new QRToSDcardSaveService();
dcardSaveService.saveToSDCard("ggg1.png", bitmap);
Toast.makeText(getActivity(), "二维码已成功保存到SD卡中",Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
QRToSDcardSaveService:
public class QRToSDcardSaveService {
/**
* 将位图对象转换为字节数组
* @param bm
* @return
*/
private byte[] Bitmap2Bytes(Bitmap bitmap) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
return outputStream.toByteArray();
}
/**
* 保存二维码至SD卡
* @param filename
* @param bitmap
*/
public void saveToSDCard(String filename, Bitmap bitmap) throws Exception {
// 获取SD卡的路径:Environment.getExternalStorageDirectory()
File file = new File(Environment.getExternalStorageDirectory(),
filename);
FileOutputStream outStream = new FileOutputStream(file);
outStream.write(Bitmap2Bytes(bitmap));
Log.e("二维码已保存至SD卡中", "可以在手机中查看该二维码");
outStream.close();
}
}