0

この問題の実行可能な回避策が必要です。私はアンドロイドカメラを使って写真を撮ります。呼び出されるメソッドは onPictureTaken と呼ばれます。プログラムは、画像からバイト配列を取得し、それを別のクラスで待機しているインテントに戻すことになっています。

私の問題は、Failed Binder Transactionエラーが発生することです。これは、データが大きすぎるためです。送信する前に圧縮する実行可能な方法はありますか?

**注、ビットマップを作成して圧縮するだけでよいことはわかっていますが、代わりに実際のバイト配列を送信するようにプログラムを作成する方法がはるかに望ましいです。

以下のコード:

public void onPictureTaken(byte[] data, Camera camera) {
            Toast.makeText(getApplicationContext(), "Picture Taken",
                    Toast.LENGTH_SHORT).show();

            //start of finish intent
            Intent intent = new Intent();
            intent.putExtra("image_arr", data);
            setResult(1, intent);
            camera.stopPreview();
            if (camera != null) {
                camera.release();
                mCamera = null;
            }

            finish();

さらに、一部の Android デバイスでのみこのエラーが発生します。たとえば、私の GS5 はこのエラーをスローしませんが、Moto X はスローします。デバイスでエラーがスローされないように、実行される圧縮が十分であることを確認する方法はありますか?

ありがとう!

4

0 に答える 0