0

ローカルネットワーク経由でAndroidデバイスに送信された画像を表示しようとしています。画像はコンピューターからtcp経由で私のAndroidデバイスに送信されます。画像はpngです。送信されるデータは、pngのバイト配列ストリームであり、googleprotobufメッセージにパッケージ化されています。Android側では、データを受信すると、データがバイト配列に読み込まれ、配列がに渡されBitmapFactory.decodeByteArray()ます。ただし、これは約90%の確率でnullを返します。これは実際のデバイスでのみ発生しますが、現時点ではhtcでしかテストできません。私はこれをandroidsdkエミュレーターで試しましたが、100%の時間で画像を取得できます。

BitmapFactoryオンラインに関連する他の問題は、常にファイルストリームの使用に関連しており、デコードではデータ全体が取得されませんが、開発者がデータ全体を確実に受信する場合の解決策はまだ見つかりません。実際のデバイスでのみ発生します。

私が知らない使用法はありdecodeByteArray()ますか?byte[]私が渡しているのはファイルそのものです。

編集:BrianCooleyからの2番目の洞察のおかげで解決しました。

エラーがdecodeByteArray()にある可能性があると判断するには速すぎました。誰かがこの問題に遭遇した場合は、データ全体が揃っていることを確認してください。私は自分のバイトストリームが良いと誤って仮定しました。したがって、最初に送受信するデータを簡単に比較し、必要なデータを取得していることを確認します。

4

1 に答える 1

0

あなたが試みるかもしれない1つのことは、SDカード上のファイルに生のバイトを書き込んで、この質問のために提案されたように、あなたのコンピュータでそれを見ることです。

これにより、問題がファイルにあるのかコードにあるのかが明らかになります。エミュレーターで問題が発生していないので、電話でのデータのダウンロードに関連していると思います。

于 2011-03-22T10:56:24.333 に答える