首先要在手机文件夹中找到相机Camera软件再按照官方文档,在按以下步骤进行操作:
1、发现和访问相机-创建代码来检查相机和请求访问的存在。
2、创建一个预览类——创建一个相机预览类SurfaceView延伸和实现theSurfaceHolder接口。这个类预览现场相机的照片。
3、建立一个预览布局——一旦你相机预览类,创建一个视图布局包含预览和你想要的用户界面控件。
4、设置监听器捕获-听众对你的界面控件连接到开始图像或视频捕获响应用户操作,如按一个按钮。
5、捕获并保存文件,设置的代码捕获并保存照片或视频输出。
6、释放相机——在使用相机,应用程序必须正确地释放它,供其他应用程序使用。
1、检查设备是否有照相机
java代码:
检查设备是否存在照相机*/
私人布尔checkCameraHardware(上下文语境){
如果(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
//这个设备有一个相机返回true;其他这个设备上没有相机返回错误,返回true;返回true;其他这个设备上没有相机返回错误
2、得到一个照相机:
一种安全的方式获取来对象的实例,公共静态摄像头getCameraInstance(){相机c=零;尝试试图得到一个照相机实例捕获(异常e){相机不可用(在使用或不存在)返回c;//返回null如果相机不可用
3、新建一个名为CameraPreview的类:
包com.wuyudong.mycamera;
进口java.io.IOException;
进口Android.content.Context;
进口android.hardware.Camera;
进口android.util.Log;
进口android.view.SurfaceHolder;
进口android.view.SurfaceView;
/**/*基本相机预览类
公共类CameraPreviewSurfaceView扩展实现
SurfaceHolder。回调{
私有静态最终字符串标签=“CameraPreview”;
私人SurfaceHoldermHolder;
私人相机mCamera;
公共CameraPreview(上下文语境,相机镜头){
超级(上下文);
mCamera=相机;
//安装SurfaceHolder。回调时得到通知
//底层表面创建和销毁。
mHolder=getHolder();
mHolder.addCallback(这个);
//设置弃用,但需要在Android3.0版本之前
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
公共空间surfaceCreated(SurfaceHolder持有人){
//创建表面,现在告诉相机中分离出来的//预览。尝试{
mCamera.setPreviewDisplay(持有人);
mCamera.startPreview();
}捕捉(IOExceptione){
日志。d(标签,“错误设置相机预览:”+e.getMessage());
公共空间surfaceDestroyed(SurfaceHolder持有人){
//空的。照顾释放相机预览你的活动。
公共空surfaceChanged(SurfaceHolder持有人,int格式,intw,inth){
//如果你的预览可以改变或旋转,照顾这些事件。
//确保停止预览之前调整或重新格式化。
如果(mHolder.getSurface()==null){
//预览表面不存在
返回;
//停止预览之前做出改变尝试{
mCamera.stopPreview();
}捕捉(异常e){
//忽略:试图阻止一个不存在的预览
//设置预览大小并做任何调整,或旋转
//在这里重新格式化变化
//开始预览新的设置尝试{
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();}捕捉(异常e){日志。d(标签,“错误启动相机预览:”+e.getMessage());
4、设置一个预览功能的布局,将原来布局文件中的内容替换成下面的代码:
XML/HTML代码:
面向android:="水平" android:layout_width="宽和" android:layout_height="宽和" android:id=“@+id/camera_preview” android:layout_width="宽和" android:layout_height="宽和" android:layout_weight="1" <按钮 android:id=“@+id/button_capture” android:文本=“捕获” android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="中心" 5、在清单文件中加入android:screenOrientation=“景观”调整相机为横向拍摄 6、在MainActivity中添加: 公开课MainActivity延伸活动{私人相机mCamera;私人CameraPreviewmPreview;@Override 公共空间onCreate(包savedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.main);//创建一个实例的相机 mCamera=getCameraInstance();//创建我们的预览视图并将它设置为我们的活动的内容。 mPreview=newCameraPreview(这个,mCamera); FrameLayout预览=(FrameLayout)findViewById(R.id.camera_preview);preview.addView(mPreview); 7、实现拍摄按钮的功能: (1)添加拍照回调方法 私人PictureCallbackmPicture=newPictureCallback(){@Override 公共空间onPictureTaken(byte[]数据,相机镜头){ 文件pictureFile=新文件(“/sdcard/”+System.currentTimeMillis()+".jpg");尝试{ FileOutputStream安全系数=newFileOutputStream(pictureFile);fos.write(数据);fos.close(); }捕捉(IOExceptione){日志。d(“标签”、“访问文件出错:“+e.getMessage()); 8、给拍照按钮添加注册事件: //捕获按钮添加一个侦听器 按钮captureButton=(按钮)findViewById(R.id.button_capture); captureButton.setOnClickListener( 新的View.OnClickListener(){@Override公共空间onClick(查看v){ //从摄像机获取图像mCamera。takePicture(空,空,mPicture) 总结:只要按着步骤根据以上的方法在Android中创建相机app应用,涉及编程方面知识,建议大家操作过程中耐心完成,有兴趣挑战的小伙伴也可可试试喔!想了解更多AndroidApp教程请关注课课家教育。
¥90.00
¥10.00
¥179.00