Добрый день!
Пишу приложение под Android которое должно получать фотографию и обрабатывать ее особым образом. В доках вычитал что takePicture у класса Camera в качестве параметров принимает callback'и, в которые потом передаются данные полученные во время съемки (rawCallback и jpegCallback).
В результате экспериментов выяснилось что в jpegCallback стабильно приходит готовый JPEG файл, который можно тут же записывать на флешку, а вот в rawCallback приходит null. Гугление не помогает. Вариант распаковывать JPEG и работать с ним не подходит по многим параметрам (скорость, качество и т.д.)
Подскажите пожалуйста как быть?
PS. Тестировалось на Google Nexus ONE и HTC Desire.
PSS. Прилагаю вырезку из кода:
public void TakePicture()
{
if (m_Camera != null && m_CanDoPhoto)
{
m_CanDoPhoto = false;
m_Camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
}
PictureCallback rawCallback = new PictureCallback()
{
public void onPictureTaken(byte[] _data, Camera _camera)
{
String path = Environment.getExternalStorageDirectory().toString();
File file = new File(path, "MyTestPhoto.raw");
try
{
FileOutputStream fOut = new FileOutputStream(file);
fOut.write(_data);
fOut.flush();
fOut.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
};
PictureCallback jpegCallback = new PictureCallback()
{
public void onPictureTaken(byte[] _data, Camera _camera)
{
m_CanDoPhoto = true;
m_Camera.startPreview();
}
};