舊的文章,但它說我有,所以我還不如回答我知道的部分:)
你可能做錯了類似的問題。我建議你使用JPEG回調存儲圖像:
mCamera.takePicture(null, null, callbackJPEG);
這樣你會得到JPEG數據可以在其中存儲到未修改文件的程序:據
final Camera.PictureCallback mCall = new Camera.PictureCallback()
{
@Override
public void onPictureTaken(byte[] data, Camera camera)
{
//Needs <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
File sdCard = Environment.getExternalStorageDirectory();
File file = new File(sdCard, "pic.jpg");
fil = new FileOutputStream(file);
fil.write(data);
fil.close();
}
}
爲黑色圖片去了,我發現在camera.startPreview()
和camera.takePicture()
之間放置一個簡單的Thread.sleep(250)
就可以解決Galaxy Nexus上的特殊問題。 我不知道爲什麼這個延遲是必要的。即使我添加camera.setOneShotPreviewCallback()
並從回調中撥打電話camera.takePicture()
,如果我不首先延遲,圖像會變黑。 哦,延遲不僅僅是「某些」延遲。它必須有相當長的價值。例如,250ms
有時可用,有時不在我的手機上。
現在我正在努力解決同樣的問題。我的設備也是Galaxy Nexus。你有沒有設法找到一個可行的解決方案? – 2016-01-15 10:59:22
您是否在其他設備上獲得了完全黑色的照片? – 2016-01-15 11:39:05
解答中描述的工作解決方案。是的,該問題已被其他設備的用戶確認。 – velis 2016-01-18 19:57:39