Camera类的基本使用

1、调用Camera.getCamera获得摄像头

2、可通过Security.showSettings(SecurityPanel.CAMERA) 调用 Flash Player 中的“安全设置”面板。

3、有了摄像头,就该输出视频了。把摄像头附在Video对象上即可。

     Video是一个显示对象,所以记得要把它加入显示列表中。

 1 public function CameraTest()
 2         {
 3             stage.align = StageAlign.TOP_LEFT;
 4             stage.scaleMode = StageScaleMode.NO_SCALE;
 5             
 6             _camera = Camera.getCamera();
 7             trace( _camera.name );
 8             Security.showSettings( SecurityPanel.CAMERA );
 9             
10             // 设置摄像头捕获的像素宽高
11             _camera.setMode( 640, 480, 15 );
12             //设置每秒的最大带宽或当前输出视频输入信号所需的画面质量
13             //_camera.setQuality();
14             
15             _video = new Video( 640, 480 );
16             _video.attachCamera( _camera );
17             addChild( _video );        
18         }

视频和位图:

      摄像头最强大的应用是混合BitmapData。所以,通过draw把视频绘制在一个BitmapData对象里,就能以像素级来控制整个东西了。

 1 public function CameraTest()
 2         {
 3             stage.align = StageAlign.TOP_LEFT;
 4             stage.scaleMode = StageScaleMode.NO_SCALE;
 5             
 6             _camera = Camera.getCamera();
 7             trace( _camera.name );
 8             Security.showSettings( SecurityPanel.CAMERA );
 9             
10             // 设置摄像头捕获的像素宽高
11             _camera.setMode( 640, 480, 15 );
12             //设置每秒的最大带宽或当前输出视频输入信号所需的画面质量
13             //_camera.setQuality();
14             
15             _video = new Video( 640, 480 );
16             _video.attachCamera( _camera );
17             //addChild( _video );    
18             
19             _bmd = new BitmapData( 640, 480 );
20             addChild( new Bitmap( _bmd ) );
21             addEventListener(Event.ENTER_FRAME, onEnterFrame);
22         }
23         
24         protected function onEnterFrame(event:Event):void
25         {
26             // 反转图像
27             var matrix:Matrix = new Matrix( -1, 0, 0, 1, _bmd.width, 0 );
28             _bmd.draw( _video, matrix );
29         }

 

转载于:https://www.cnblogs.com/actionkong/p/3522871.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Android Camera 使用示例: 1. 首先,在 AndroidManifest.xml 文件中添加相机的权限: ``` <uses-permission android:name="android.permission.CAMERA" /> ``` 2. 在布局文件中添加一个 SurfaceView 作为相机的预览视图: ``` <SurfaceView android:id="@+id/camera_preview" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 在 Activity 中获取相机实例并设置预览视图: ``` private Camera mCamera; private SurfaceView mPreview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPreview = (SurfaceView) findViewById(R.id.camera_preview); // 获取相机实例 mCamera = getCameraInstance(); // 设置预览视图 CameraPreview cameraPreview = new CameraPreview(this, mCamera); mPreview.addView(cameraPreview); } // 获取相机实例的方法 private Camera getCameraInstance() { Camera camera = null; try { camera = Camera.open(); } catch (Exception e) { // 相机不可用或无法访问 } return camera; } ``` 4. 创建一个 CameraPreview ,继承 SurfaceView 并实现 SurfaceHolder.Callback 接口: ``` public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mHolder; private Camera mCamera; public CameraPreview(Context context, Camera camera) { super(context); mCamera = camera; // 初始化 SurfaceHolder,并添加回调 mHolder = getHolder(); mHolder.addCallback(this); } @Override public void surfaceCreated(SurfaceHolder holder) { // 当 Surface 创建时,启动相机预览 try { mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (IOException e) { // 相机预览失败 } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 当 Surface 改变时,调整相机预览大小 if (mHolder.getSurface() == null || mCamera == null) { return; } try { mCamera.stopPreview(); } catch (Exception e) { // 忽略异常 } try { Camera.Parameters parameters = mCamera.getParameters(); List<Camera.Size> sizes = parameters.getSupportedPreviewSizes(); Camera.Size optimalSize = getOptimalPreviewSize(sizes, width, height); parameters.setPreviewSize(optimalSize.width, optimalSize.height); mCamera.setParameters(parameters); mCamera.setPreviewDisplay(mHolder); mCamera.startPreview(); } catch (Exception e) { // 相机预览失败 } } @Override public void surfaceDestroyed(SurfaceHolder holder) { // 当 Surface 销毁时,释放相机资源 if (mCamera != null) { mCamera.stopPreview(); mCamera.release(); mCamera = null; } } // 获取最佳的相机预览尺寸 private Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int width, int height) { final double ASPECT_TOLERANCE = 0.1; double targetRatio = (double) width / height; if (sizes == null) { return null; } Camera.Size optimalSize = null; double minDiff = Double.MAX_VALUE; int targetHeight = height; for (Camera.Size size : sizes) { double ratio = (double) size.width / size.height; if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) { continue; } if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } if (optimalSize == null) { minDiff = Double.MAX_VALUE; for (Camera.Size size : sizes) { if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } } return optimalSize; } } ``` 5. 最后,在 Activity 的 onDestroy() 方法中释放相机资源: ``` @Override protected void onDestroy() { super.onDestroy(); if (mCamera != null) { mCamera.release(); mCamera = null; } } ``` 以上是一个简单的 Android Camera 使用示例,可以实现基本的相机预览功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值