Androidのカメラで画像を撮影しています。ユーザーの約90%は問題はありませんが、残りの10%は純粋な黒や奇妙なピクセルの混乱を返す画像を取得します。Android - 画像のコールバックデータが黒くなったり画像が乱れたりして画像が返ってきます
この動作を見た他の人はいますか?なぜそれが起こるか、何か考えがありますか?
例:
ブラック:
ごちゃ混ぜ:
Androidのカメラで画像を撮影しています。ユーザーの約90%は問題はありませんが、残りの10%は純粋な黒や奇妙なピクセルの混乱を返す画像を取得します。Android - 画像のコールバックデータが黒くなったり画像が乱れたりして画像が返ってきます
この動作を見た他の人はいますか?なぜそれが起こるか、何か考えがありますか?
例:
ブラック:
ごちゃ混ぜ:
私はこのような同様の問題を持っていました。 欠点は次のとおりです。データがありません。
データストリームが長時間中断されたり、偶然使用できなくなった場合は、ビットマップ/ストリームに発生します。
発生する可能性のある別の例:画像のダウンロードとアップロード。 ユーザーが突然Wifi /モバイルネットワークのすべてを無効にすると、これ以上データを送信できなくなります。 あなたはばらばらの画像になります。
画像は表示されます/表示されます(大丈夫なのは黒く塗りつぶされていますが、まだ見えますが)内部では無効です(情報がないか破損しています)。
重要ではない場合は、すべてのデータをBitmapオブジェクト(BitmapFactory.decode *)に移動し、返されたBitmapがnullかどうかをテストできます。はいの場合、データが破損している可能性があります。
これは、あなたが推測できるように、問題の結果を単に解決することです。 より良い方法は、足で問題をとることです。 データソースへの接続が良好であることを確認します(十分な大きさのバッファです)。 不要なキャスト(例:charからint) 正しいタイプのバッファ(文字ストリームの場合はリーダ/ライタ、バイトストリームの場合はInputStream/OutputStream)を使用してください。
BitmapFactory.Optionsオブジェクトを使用してビットマップを生成するかどうかを確認してください。このオブジェクトのメソッドがほとんどないため、ビットマップも壊れます。
アンドロイド4.0からは、マニフェストでdefaultとしてhardwareAccelerationをtrueに設定しました。ハードアクセラレーションされたキャンバスは画像をサポートしていないため、黒い画面が表示されます。
これはいくつかのデバイスで共通ですか、ランダムに発生しますか? – Spidy