protected voiddeliverAndDrawFrame(CvCameraViewFrame frame){Mat modified;
if(mListener!=null) {modified = mListener.onCameraFrame(frame);} else{modified = frame.rgba();
}
booleanbmpValid =true;if(modified!=null) {try{Utils.matToBitmap(modified,mCacheBitmap);} catch(Exceptione) {Log.e(TAG,"Mattype: "+ modified);Log.e(TAG,"Bitmaptype: "+mCacheBitmap.getWidth() +"*"+mCacheBitmap.getHeight()); Log.e(TAG,"Utils.matToBitmap()throws an exception: "+e.getMessage());bmpValid = false;}
}
if(bmpValid&&mCacheBitmap!=null) {Canvas canvas =getHolder().lockCanvas();
if(canvas!=null) { canvas.drawColor(0,android.graphics.PorterDuff.Mode.CLEAR);/*if (BuildConfig.DEBUG)Log.d(TAG, "mStretchvalue: " + mScale);
if (mScale != 0) {
canvas.drawBitmap(mCacheBitmap, new Rect(0,0,mCacheBitmap.getWidth(),mCacheBitmap.getHeight()),
newRect((int)((canvas.getWidth() - mScale*mCacheBitmap.getWidth()) / 2),
(int)((canvas.getHeight() - mScale*mCacheBitmap.getHeight()) / 2),
(int)((canvas.getWidth() -mScale*mCacheBitmap.getWidth()) / 2 + mScale*mCacheBitmap.getWidth()),
(int)((canvas.getHeight() - mScale*mCacheBitmap.getHeight()) / 2 +mScale*mCacheBitmap.getHeight())), null);
} else {
canvas.drawBitmap(mCacheBitmap, new Rect(0,0,mCacheBitmap.getWidth(),mCacheBitmap.getHeight()),
newRect((canvas.getWidth() - mCacheBitmap.getWidth()) / 2,
(canvas.getHeight()- mCacheBitmap.getHeight()) / 2,
(canvas.getWidth() -mCacheBitmap.getWidth()) / 2 + mCacheBitmap.getWidth(),
(canvas.getHeight()- mCacheBitmap.getHeight()) / 2 + mCacheBitmap.getHeight()), null);
}*/
/*----------------------------修改预览旋转90度问题--------------------------------*/canvas.rotate(90,0,0);floatscale= canvas.getWidth() / (float)mCacheBitmap.getHeight();floatscale2= canvas.getHeight() / (float)mCacheBitmap.getWidth();if(scale2> scale){scale = scale2;
}
if(scale!=0) {canvas.scale(scale,scale,0,0);}
canvas.drawBitmap(mCacheBitmap,0, -mCacheBitmap.getHeight(),null);/*----------------------------修改预览旋转90度问题--------------------------------*/if(mFpsMeter !=null) {mFpsMeter.measure();
mFpsMeter.draw(canvas, 20,30);}
getHolder().unlockCanvasAndPost(canvas);
}
}
}