有一个ocr的设备,公司要求拍照后保存到本地,这个怎么弄哦,还给了一个示例代码:
Broadcaster:
// bitmap 是拍照所得图像
try {
ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, jpegOutputStream);
byte[] content = jpegOutputStream.toByteArray();
Intent intent = new Intent("com.cainiao.scanner.image");
intent.putExtra("jpegData", content);
context.sendBroadcast(intent);
} catch (Exception e) {
}
Receiver:
// ...
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("com.cainiao.scanner.image")){
Bundle bundle=intent.getExtras();
byte[] data = bundle.getByteArray("jpegData");
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
// ...
下边是给我的案例(MainActivity.java):
public class MainActivity extends Activity {
private static final String RES_ACTION = "android.intent.action.SCANRESULT";
ScannerInterface scanner;
TextView tvScanResult;
IntentFilter intentFilter;
BroadcastReceiver scanReceiver;
ImageView imageView;
private static String g_strFilePath = Environment.getExternalStorageDirectory() + "/DCIM/img";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvScanResult = ((TextView) findViewById(R.id.textViewDataResults));
imageView = (ImageView) findViewById(R.id.imageView2);
initScanner();
setBarcodeConfig(2);
}
public void setBarcodeConfig(int flg) {
Intent intent = new Intent("android.intent.action.barcodeconfig");
intent.putExtra("barcodeconfig", flg);
sendBroadcast(intent);
}
private void initScanner() {
scanner = new ScannerInterface(this);
scanner.setOutputMode(0);
intentFilter = new IntentFilter();
intentFilter.addAction("com.cainiao.scanner.image");
intentFilter.addAction(RES_ACTION);
scanReceiver = new ScannerResultReceiver();
registerReceiver(scanReceiver, intentFilter);
}
// private Point TopLeft;
// private Point TopRight;
// private Point BottomLeft;
// private Point BottomRight;
Point[] point = new Point[4];
/**
* 扫描结果的广播接收者
*/
private class ScannerResultReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.cainiao.scanner.image")) {
bundle bundle = intent.getExtras();
byte[] data = bundle.getByteArray("jpegData");
final String scanResult = bundle.getString("barcode");
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
int x1 = bundle.getInt("x1");
int y1 = bundle.getInt("y1");
int x2 = bundle.getInt("x2");
int y2 = bundle.getInt("y2");
int x3 = bundle.getInt("x3");
int y3 = bundle.getInt("y3");
int x4 = bundle.getInt("x4");
int y4 = bundle.getInt("y4");
point[0] = new Point(x1, y1);
point[1] = new Point(x3, y3);
point[2] = new Point(x2, y2);
point[3] = new Point(x4, y4);
if (point[0].x != 0 || point[0].y != 0)
bitmap = creataBitmap(bitmap);
imageView.setImageBitmap(bitmap);
} else if (intent.getAction().equals(RES_ACTION)) {
final String scanResult = intent.getStringExtra("value");// intent.getString();
if (scanResult != null)
tvScanResult.setText("Data: " + scanResult);
}
}
}
private Bitmap cropBitmap(Bitmap bitmap, int start_x, int start_y, int cropWidth, int cropHeight) {
return Bitmap.createBitmap(bitmap, start_x, start_y, cropWidth, cropHeight, null, false);
}
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(scanReceiver);
}
}
```