在用一款黑莓手机进行 zxing 二维码扫描时,出现错误: FAILED BINDER TRANSACTION... ...
细看了下代码,发现错误导致原因: 因为之前写的扫描的代码,扫描框有些小,于是修改了zxing包下的CameraManager类的getFramingRect 的 MAX_FRAME_WIDTH、MAX_FRAME_HEIGHT。
Android中使用Intent进行传递数据时出现:E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!!错误信息。 例如传递一个大的Bitmap对象时。这种情况是因为系统对Intent传递数据有大小限制。原来是我将预览框变大后,扫描获得的 bitmap 也就大了,在 intent' 传输的时候,受到大小的限制,于是出现 FAILED BINDER TRANSACTION。由于我调用扫描的时候不需要bitmap,所以我在“处理扫描结果"传输的时候,把 bundle.putParcelable("bitmap", barcode);注释掉了,错误bug得以解决。大家如果需要传输 bitmap的话,记得在放入 intent之前,对 bitmap的大小做一下处理。
/** * 处理扫描结果 * * @param result * @param barcode */ public void handleDecode(Result result, Bitmap barcode) {inactivityTimer.onActivity();playBeepSoundAndVibrate();String resultString = result.getText();if (resultString.equals("")) {Toast.makeText(MipcaActivityCapture.this, "Scan failed!", Toast.LENGTH_SHORT).show();} else {Intent resultIntent = new Intent();Bundle bundle = new Bundle();bundle.putString("result", resultString);//TODO FAILED BINDER TRANSACTION报错原因: /*bundle.putParcelable("bitmap", barcode);*/ resultIntent.putExtras(bundle);this.setResult(RESULT_OK, resultIntent);}MipcaActivityCapture.this.finish(); }