ローカルネットワーク経由でAndroidデバイスに送信された画像を表示しようとしています。画像はコンピューターからtcp経由で私のAndroidデバイスに送信されます。画像はpngです。送信されるデータは、pngのバイト配列ストリームであり、googleprotobufメッセージにパッケージ化されています。Android側では、データを受信すると、データがバイト配列に読み込まれ、配列がに渡されBitmapFactory.decodeByteArray()
ます。ただし、これは約90%の確率でnullを返します。これは実際のデバイスでのみ発生しますが、現時点ではhtcでしかテストできません。私はこれをandroidsdkエミュレーターで試しましたが、100%の時間で画像を取得できます。
BitmapFactoryオンラインに関連する他の問題は、常にファイルストリームの使用に関連しており、デコードではデータ全体が取得されませんが、開発者がデータ全体を確実に受信する場合の解決策はまだ見つかりません。実際のデバイスでのみ発生します。
私が知らない使用法はありdecodeByteArray()
ますか?byte[]
私が渡しているのはファイルそのものです。
編集:BrianCooleyからの2番目の洞察のおかげで解決しました。
エラーがdecodeByteArray()にある可能性があると判断するには速すぎました。誰かがこの問題に遭遇した場合は、データ全体が揃っていることを確認してください。私は自分のバイトストリームが良いと誤って仮定しました。したがって、最初に送受信するデータを簡単に比較し、必要なデータを取得していることを確認します。