2012-01-02 6 views
3

Androidのカメラで画像を撮影しています。ユーザーの約90%は問題はありませんが、残りの10%は純粋な黒や奇妙なピクセルの混乱を返す画像を取得します。Android - 画像のコールバックデータが黒くなったり画像が乱れたりして画像が返ってきます

この動作を見た他の人はいますか?なぜそれが起こるか、何か考えがありますか?

例:

ブラック: enter image description here

ごちゃ混ぜ: enter image description here

+0

これはいくつかのデバイスで共通ですか、ランダムに発生しますか? – Spidy

答えて

1

私はこのような同様の問題を持っていました。 欠点は次のとおりです。データがありません。

データストリームが長時間中断されたり、偶然使用できなくなった場合は、ビットマップ/ストリームに発生します。

発生する可能性のある別の例:画像のダウンロードとアップロード。 ユーザーが突然Wifi /モバイルネットワークのすべてを無効にすると、これ以上データを送信できなくなります。 あなたはばらばらの画像になります。

画像は表示されます/表示されます(大丈夫なのは黒く塗りつぶされていますが、まだ見えますが)内部では無効です(情報がないか破損しています)。

重要ではない場合は、すべてのデータをBitmapオブジェクト(BitmapFactory.decode *)に移動し、返されたBitmapがnullかどうかをテストできます。はいの場合、データが破損している可能性があります。

これは、あなたが推測できるように、問題の結果を単に解決することです。 より良い方法は、足で問題をとることです。 データソースへの接続が良好であることを確認します(十分な大きさのバッファです)。 不要なキャスト(例:charからint) 正しいタイプのバッファ(文字ストリームの場合はリーダ/ライタ、バイトストリームの場合はInputStream/OutputStream)を使用してください。

+0

現在、takePictureコールバックに画像をアップロードしようとしていますが、画像をローカルに保存してから、画像をバックグラウンドタスクとしてアップロードし、正しく行われていることを確認しますか? – MattoTodd

+0

@MattoTodd絶対に。あなたが使っている方法はあなたの選択です。私は非常に抽象的だったオープンソースのFTP実装を使用しました。イメージをアップロードするには、単純な線が必要でした。 – poitroae

0

BitmapFactory.Optionsオブジェクトを使用してビットマップを生成するかどうかを確認してください。このオブジェクトのメソッドがほとんどないため、ビットマップも壊れます。

1

アンドロイド4.0からは、マニフェストでdefaultとしてhardwareAccelerationをtrueに設定しました。ハードアクセラレーションされたキャンバスは画像をサポートしていないため、黒い画面が表示されます。

関連する問題