BitmapFactory.decodeByteArray () возвращает NULL
Я использую 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 возвращается как ноль. Я также попытался изменить формат предварительного просмотра на тип JPEG. Я даже получаю утверждение отладки в ddms, это то, что я получаю
«D / skia (14391): --- SkImageDecoder :: Фабрика вернула ноль»