mono for android 添加引用,mono for android surfaceHolder.AddCallback()参数如何定义
private voidInintCamera(){if (!isPreview){camera=Camera.Open();}if (camera != null && !isPreview){try{Camera.Parameters parameters=camera.GetParameters();parameters.SetPreviewSize(screenWidth,
private voidInintCamera()
{if (!isPreview)
{
camera=Camera.Open();
}if (camera != null && !isPreview)
{try{
Camera.Parameters parameters=camera.GetParameters();
parameters.SetPreviewSize(screenWidth, screenHeight);//设置大小//parameters.setPreviewFpsRange(20, 30);//每秒显示20~30帧
parameters.PictureFormat = Android.Graphics.ImageFormatType.Nv21;///设置图片格式
parameters.SetPictureSize(screenWidth, screenHeight);//parameters.Set("orientation", "portrait");//parameters.SetRotation(90);//旋转90度
parameters.PreviewFrameRate = 30; //每秒显示30帧
camera.SetPreviewDisplay(surfaceHolder); //通过SurfaceView显示取景画
camera.SetDisplayOrientation(90);//旋转90度//camera.SetPreviewCallback(new StreamIt(ipname, camera));
camera.SetParameters(parameters);
camera.StartPreview();//开始预览
camera.AutoFocus(null); //自动对焦
}catch(Exception e)
{string error =e.StackTrace;
}
}
}classMyThread : Java.Lang.Thread
{
}///
///试映回掉///
classStreamIt : Camera.IPreviewCallback
{stringipname;
Camera camera;public StreamIt(stringipname, Camera camera)
:base()
{this.camera =camera;this.ipname =ipname;
}public void OnPreviewFrame(byte[] data, Camera camera)
{
Camera.Size size=camera.GetParameters().PreviewSize;try{//调用image.compressToJpeg()将YUV格式图像数据data转为jpg格式
Android.Graphics.YuvImage image = new Android.Graphics.YuvImage(data, Android.Graphics.ImageFormatType.Nv21, size.Width, size.Height, null);if (image != null)
{
MemoryStream mstream= newMemoryStream();
image.CompressToJpeg(new Android.Graphics.Rect(0, 0, size.Width, size.Height), 80, mstream);
mstream.Flush();//启用线程把图片发送出去
}
}catch(Exception ex)
{
Log.Error("转换图片时出错", ex.Message);
}//throw new NotImplementedException();
}public voidDispose()
{throw newNotImplementedException();
}publicIntPtr Handle
{get { returncamera.Handle; }
}
}///
///定义SurfaceHolder回掉///
public classSurfaceHolderCallBack : ISurfaceHolderCallback
{
ActivityCameraMain _main;publicSurfaceHolderCallBack(ActivityCameraMain main)
:base()
{
_main=main;
}public void SurfaceChanged(ISurfaceHolder holder, Android.Graphics.Format format, int width, intheight)
{//throw new NotImplementedException();
}public voidSurfaceCreated(ISurfaceHolder holder)
{//throw new NotImplementedException();
_main.InintCamera();
}public voidSurfaceDestroyed(ISurfaceHolder holder)
{//throw new NotImplementedException();
if (_main.camera != null)
{if(_main.isPreview)
{
_main.camera.StopPreview();
_main.camera.Release();
_main.camera= null;
}//System.exit(0);
}
}voidIDisposable.Dispose()
{
;
}
IntPtr IJavaObject.Handle
{get { return((View)_main.sView).Handle; }
}
}
更多推荐



所有评论(0)