キャンバスに描画していて、キャンバスを JPEG に保存しようとしています。一部のデバイスでこれをテストしたところ、ICS では動作しないようで、次のコードを試すと UnsupportedOperationException エラーが発生することに気付きました。
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
// Drawing to canvas here
OutputStream stream = new FileOutputStream("/sdcard/test.jpg");
bitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
これはすべて onDraw メソッドで行われ、エラーは canvas.setBitmap(bitmap) にあります。
これは私の Droid X(2.3) と Tab 10.1(3.1) では正常に動作しますが、ICS を実行している場合、Galaxy Nexus(4.0) と Tab 10.1 では失敗します。本当に単純なものを見過ぎているだけかもしれません。私はこれに一晩中取り組んできましたが、何の進展もありません。どんなアイデアでも大歓迎です!
更新:「強制 GPU レンダリング」をオフにしましたが、動作するようになりました。これを行うためのより良い方法が必要です。