我正在使用相机的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 returned null"