相机拍摄
来源:互联网 发布:c语言学生成绩录入 编辑:程序博客网 时间:2024/04/28 10:26
publicclassCameraAndroidextendsActivity{privateCameraPreviewpreview;privateCameracamera;privateToneGeneratortone;privatestaticfinalintOPTION_SNAPSHOT=0;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);preview=newCameraPreview(this);setContentView(preview);}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){intitemId=item.getItemId();switch(itemId){caseOPTION_SNAPSHOT://拍摄照片camera.takePicture(shutterCallback,null,jpegCallback);break;}returntrue;}//返回照片的JPEG格式的数据privatePictureCallbackjpegCallback=newPictureCallback(){publicvoidonPictureTaken(byte[]data,Cameracamera){Parametersps=camera.getParameters();if(ps.getPictureFormat()==PixelFormat.JPEG){//存储拍照获得的图片Stringpath=save(data);//将图片交给Image程序处理Uriuri=Uri.fromFile(newFile(path));Intentintent=newIntent();intent.setAction("android.intent.action.VIEW");intent.setDataAndType(uri,"image/jpeg");startActivity(intent);}}};//快门按下的时候onShutter()被回调privateShutterCallbackshutterCallback=newShutterCallback(){publicvoidonShutter(){if(tone==null)//发出提示用户的声音tone=newToneGenerator(AudioManager.STREAM_MUSIC,ToneGenerator.MAX_VOLUME);tone.startTone(ToneGenerator.TONE_PROP_BEEP2);}};privateStringsave(byte[]data){Stringpath="/sdcard/"+System.currentTimeMillis()+".jpg";try{//判断SD卡上是否有足够的空间Stringstorage=Environment.getExternalStorageDirectory().toString();StatFsfs=newStatFs(storage);longavailable=fs.getAvailableBlocks()*fs.getBlockSize();if(available<data.length){//空间不足直接返回空returnnull;}Filefile=newFile(path);if(!file.exists())//创建文件file.createNewFile();FileOutputStreamfos=newFileOutputStream(file);fos.write(data);fos.close();}catch(Exceptione){e.printStackTrace();returnnull;}returnpath;}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){menu.add(0,OPTION_SNAPSHOT,0,R.string.snapshot);returnsuper.onCreateOptionsMenu(menu);}classCameraPreviewextendsSurfaceViewimplementsSurfaceHolder.Callback{SurfaceHoldermHolder;publicCameraPreview(Contextcontext){super(context);mHolder=getHolder();mHolder.addCallback(this);mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);}//Sureface创建的时候,此方法被调用publicvoidsurfaceCreated(SurfaceHolderholder){//打开摄像头,获得Camera对象camera=Camera.open();try{//设置显示camera.setPreviewDisplay(holder);}catch(IOExceptionexception){camera.release();camera=null;}}//Surface销毁的时候,此方法被调用publicvoidsurfaceDestroyed(SurfaceHolderholder){camera.stopPreview();//释放Cameracamera.release();camera=null;}publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intw,inth){//已经获得Surface的width和height,设置Camera的参数Camera.Parametersparameters=camera.getParameters();parameters.setPreviewSize(w,h);camera.setParameters(parameters);//开始预览camera.startPreview();}}}
- 相机拍摄
- 相机的同步拍摄
- 调用相机拍摄和相册
- android 自定义相机和拍摄
- Android自定义相机拍摄黑屏
- Lab 相关---四相机同步拍摄说明
- 相册获取、相机拍摄,裁剪圆形头像
- 如何使用现有的相机应用程序拍摄的照片
- 美国研发1.5毫米相机:可自由进出血管拍摄
- 低光数码单反相机而夜间拍摄设置
- android本地图片选择(相册选取,相机拍摄)
- [windows phone开发]照片选择器&&相机拍摄任务
- PBJVision 快速在应用中集成相机/拍摄功能
- 调用手机相机拍照并获取拍摄的照片
- 获取相册图片,相机拍摄图片并上传
- iOS开发调用相机拍摄多张照片
- Android Camera解析(上) 调用系统相机拍摄照片
- Android-启用系统相机拍摄图片并且显示
- HDU 1197 Specialized Four-Digit Numbers
- C#布尔类型
- java工厂模式
- printf格式控制符的完整格式
- wget的参数介绍
- 相机拍摄
- ExtJS4.0的组件简介
- android瀑布流学习2(解决内存溢出的问题)
- Linux基本网络设置(IP配置等,网卡驱动缓存,网卡中断)
- View 的setTag()/getTag() 用法
- C#实数类型
- 局域网内Mac远程连接Windows
- ITIL v3 官方中文版全套电子书
- Extjs4 API文档阅读の组件(components)