2012-01-02 54 views
3

因此,我正在使用Android相機在Android應用程序內拍照。我的用戶中約有90%沒有問題,但其他10%的用戶會得到一張純黑色圖像或奇怪的像素混亂圖像。Android - 圖片回調數據返回圖片,它黑色或混亂

是否有其他人看到過這種行爲?或者有任何想法爲什麼會發生?

例子:

黑色: enter image description here

混亂: enter image description here

+0

這是常見的幾個設備或只是隨機發生? – Spidy 2012-01-07 02:30:35

回答

1

我已經有過這樣類似的問題。 簡而言之,問題是:缺少數據。

如果數據流中斷時間過長或意外無法使用,則會發生位圖/流。

可能發生的另一個示例:下載和上傳圖像。 如果用戶禁用所有突然的Wifi /移動網絡,則無法傳輸更多數據。 你最終在一個濺起的圖像。

圖像將出現/視圖沒問題(其中好的意思是黑色/飛濺,它仍然可見!),但內部無效(缺失或損壞的信息)。

如果不是太重要,可以嘗試將所有數據移動到位圖對象(BitmapFactory.decode *)中,並測試返回的位圖是否爲空。如果是,則數據可能已損壞。

這只是解決問題的後果,你可以猜到。 更好的方法是將問題放在腳上: 確保與數據源的連接良好(足夠大,粗壯的緩衝區)。 嘗試避免不必要的強制轉換(例如,從char到int) 使用正確類型的緩衝區(字符流的Reader/Writer或字節流的InputStream/OutputStream)。

+0

所以目前,我想上傳圖片上的圖片回調,你會建議在本地保存圖片,然後嘗試上傳圖片作爲背景任務,並確保它正確完成? – MattoTodd 2012-01-07 19:52:56

+0

@MattoTodd絕對。你使用的方式是你的選擇。我確實使用了非常抽象的開源FTP實現。只需要幾條簡單的線條即可上傳圖像。 – poitroae 2012-01-07 20:46:50

0

另請檢查您是否使用BitmapFactory.Options對象來生成位圖。因爲此對象的很少方法也會使位圖損壞。

1

從android 4.0開始,他們將hardwareAcceleration設置爲true,作爲清單中的默認值。硬件加速畫布不支持圖片,你會得到一個黑屏...