在Android 的Camera 预览上执行 Drawing 操作
2011-03-06 10:47
447 查看
来自anddev
import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.hardware.Camera; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.Window; import android.view.ViewGroup.LayoutParams; public class TestCameraOverlay extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); Preview mPreview = new Preview(this); DrawOnTop mDraw = new DrawOnTop(this); setContentView(mPreview); addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); } } class DrawOnTop extends View { public DrawOnTop(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.BLACK); canvas.drawText("Test Text", 10, 10, paint); super.onDraw(canvas); } } class Preview extends SurfaceView implements SurfaceHolder.Callback { SurfaceHolder mHolder; Camera mCamera; Preview(Context context) { super(context); // Install a SurfaceHolder.Callback so we get notified when the // underlying surface is created and destroyed. mHolder = getHolder(); mHolder.addCallback(this); mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void surfaceCreated(SurfaceHolder holder) { // The Surface has been created, acquire the camera and tell it where // to draw. mCamera = Camera.open(); mCamera.setPreviewDisplay(holder); } public void surfaceDestroyed(SurfaceHolder holder) { // Surface will be destroyed when we return, so stop the preview. // Because the CameraDevice object is not a shared resource, it's very // important to release it when the activity is paused. mCamera.stopPreview(); mCamera = null; } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // Now that the size is known, set up the camera parameters and begin // the preview. Camera.Parameters parameters = mCamera.getParameters(); parameters.setPreviewSize(w, h); mCamera.setParameters(parameters); mCamera.startPreview(); } } Parsed in 0.113 seconds, using GeSHi 1.0.8.4
import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.hardware.Camera; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.Window; import android.view.ViewGroup.LayoutParams; public class TestCameraOverlay extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); Preview mPreview = new Preview(this); DrawOnTop mDraw = new DrawOnTop(this); setContentView(mPreview); addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); } } class DrawOnTop extends View { public DrawOnTop(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.BLACK); canvas.drawText("Test Text", 10, 10, paint); super.onDraw(canvas); } } class Preview extends SurfaceView implements SurfaceHolder.Callback { SurfaceHolder mHolder; Camera mCamera; Preview(Context context) { super(context); // Install a SurfaceHolder.Callback so we get notified when the // underlying surface is created and destroyed. mHolder = getHolder(); mHolder.addCallback(this); mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void surfaceCreated(SurfaceHolder holder) { // The Surface has been created, acquire the camera and tell it where // to draw. mCamera = Camera.open(); mCamera.setPreviewDisplay(holder); } public void surfaceDestroyed(SurfaceHolder holder) { // Surface will be destroyed when we return, so stop the preview. // Because the CameraDevice object is not a shared resource, it's very // important to release it when the activity is paused. mCamera.stopPreview(); mCamera = null; } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // Now that the size is known, set up the camera parameters and begin // the preview. Camera.Parameters parameters = mCamera.getParameters(); parameters.setPreviewSize(w, h); mCamera.setParameters(parameters); mCamera.startPreview(); } } Parsed in 0.113 seconds, using GeSHi 1.0.8.4
相关文章推荐
- android TextureView destroyDrawingCache(关闭Camera时,清除预览画面上的卡的最后一帧画面)
- SharedPreferences数据存取操作,android引导页一次执行的方法。
- Android---AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
- Android---AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
- android 侦听apk安装成功,再执行界面的更新操作
- Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理
- SharedPreferences数据存取操作,android引导页一次执行的方法。
- Android 举例说明自己的定义Camera图片和预览,以及前后摄像头切换
- android里camera支持的预览尺寸的获取
- Android音视频-视频采集(Camera预览)
- 【Android】人体图片、地图图片、热力图,如何实现点击不同的部位执行不同的操作?
- android下实现程序不操作一段时间,执行另一个程序
- Android自动化追本溯源系列(2): 在控件上执行操作
- 玩转Android Camera开发(二):使用TextureView和SurfaceTexture预览Camera 基础拍照demo
- Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理
- 在Android中使用Handler和Thread线程执行后台操作
- Android之Camera预览
- Android Button按钮点击两次之后,才执行点击事件的操作。
- android 手机拍照上传项目的开发-----Camera1.0(动态显示预览)
- 玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo