Я использую previewCallback с камеры, чтобы попытаться захватить изображения. Вот код, который я использую
private Camera.PreviewCallback mPrevCallback = new Camera.PreviewCallback()
{
public void onPreviewFrame( byte[] data, Camera Cam ) {
Log.d("CombineTestActivity", "Preview started");
Log.d("CombineTestActivity", "Data length = "
+ data.length );
currentprev = BitmapFactory.decodeByteArray( data, 0,
data.length );
if( currentprev == null )
Log.d("CombineTestActivity", "currentprev is null" );
Log.d("CombineTestActivity", "Preview Finished" );
}
};
длина данных всегда поступает так же, как 576000.
Также я попытался изменить параметры камеры, чтобы изображение возвращалось в виде разных форматов. Вот как это выглядит, когда я это делаю.
mCamera = Camera.open();
camParam = mCamera.getParameters();
camParam.setPreviewFormat( ImageFormat.RGB_565 );
mCamera.setParameters( camParam );
mCamera.setPreviewCallback( mPrevCallback );
Однако, когда я изменяю формат предварительного просмотра, и когда я оставляю его по умолчанию NV21, BitmapFactory.decodeByteArray возвращается как null. Я также попытался изменить формат предварительного просмотра на формат JPEG. Я даже получаю отладку в ddms, вот что я получаю
"D/skia (14391): --- SkImageDecoder:: Factory возвращает null"