Android:如何返回巨大的字节数组作为活动的结果?

时间:2015-05-18 11:15:52

标签: android android-intent camera return onactivityresult

private void returnImage(byte[] array)
{
    Intent intent = new Intent();
    intent.putExtra(RETURNING_MESSAGE, array);
    setResult(RESULT_OK, intent);
    finish();
}

我通过这些回调

通过相机获取该字节数组
@Override
public void onClick(View v) {
    mCamera.takePicture(null, null, new Camera.PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            mCamera.release();
            returnImage(data);
        }
    });
}

在运行时我使用相机,但活动没有完成,Logcat说E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!! 是由图像的大小引起的吗?我查了一下,发现它超过200万字节。我需要使用我的自定义相机,但我无法返回我的数据。

1 个答案:

答案 0 :(得分:4)

  

是否由图像尺寸引起?

  

我查了一下,发现它超过200万字节。

这大约是你能回来的两倍。

  

我需要使用自定义相机,但我无法返回数据。

或者:

  1. 不要将它们作为单独的活动,而是将它们作为一个活动中的单独片段,因此您不必担心Intent是限制因素,或

  2. 使用其他内容,例如从静态数据成员到byte[]的(临时!)引用,允许同一个应用内的多个活动共享数据,或者

  3. 如果调用startActivityForResult()的活动位于单独的应用中,请使用ContentProvider将字节流回来