`
844604778
  • 浏览: 551765 次
文章分类
社区版块
存档分类
最新评论

Android扩展 - 拍照篇(Camera)

 
阅读更多

1.调用系统摄像头

1.声明常量和变量

2.按钮点击事件,打开系统摄像头

3.重写onActivityResult事件接收拍照返回

4.生成文件名返回路径

5.保存图片

  1. privatestaticfinalintTAKE_PICTURE=1;
  2. classbtnGotoActivity02ListenerimplementsOnClickListener{
  3. publicvoidonClick(Viewv){
  4. Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);//调用摄像头拍照
  5. startActivityForResult(intent,TAKE_PICTURE);
  6. }
  7. }
  8. @Override
  9. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
  10. Stringfilename="";
  11. try{
  12. if(resultCode==Activity.RESULT_OK&&requestCode==TAKE_PICTURE){
  13. Bundlebundle=data.getExtras();
  14. Bitmapbmp=(Bitmap)bundle.get("data");
  15. filename=saveImage(bmp);
  16. }
  17. }catch(Exceptionerr){
  18. Log.e("Exception",err.getLocalizedMessage());
  19. }
  20. }
  21. publicStringbuildFileName(){
  22. Datenow=newDate();
  23. SimpleDateFormatformater=newSimpleDateFormat("yyMMdd_HHmmss");
  24. StringSDCARD=Environment.getExternalStorageDirectory()+"/";
  25. StringbasePath=SDCARD+"dier/photo/";
  26. Filedir=newFile(basePath);
  27. dir.mkdirs();
  28. returnbasePath+formater.format(now)+".jpg";
  29. }
  30. publicStringsaveImage(Bitmapbmp)throwsException{
  31. Filefile=newFile(buildFileName());
  32. file.createNewFile();
  33. FileOutputStreamoStream=newFileOutputStream(file);
  34. bmp.compress(Bitmap.CompressFormat.JPEG,100,oStream);//100是照片质量,0-100,越大越好
  35. oStream.flush();
  36. oStream.close();
  37. returnfile.getPath();
  38. }



2.保存完整分辨率的照片

使用上面的方法,保存下来的图片仅为原图的1/4大小,如果需要保存大照片则需要使用下面的方式

缺点:此方法除了在指定的目录下保存图片外,在系统拍照路径下也会保存下一张相同的图片。

  1. privatestaticfinalintTAKE_PICTURE=1;
  2. privateStringTEMP_FILE="";
  3. classbtnGotoActivity02ListenerimplementsOnClickListener{
  4. publicvoidonClick(Viewv){
  5. TEMP_FILE=buildFileName();
  6. Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);//调用摄像头拍照
  7. intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(newFile(TEMP_FILE)));//另存图片地址
  8. startActivityForResult(intent,TAKE_PICTURE);
  9. }
  10. }
  11. publicStringbuildFileName(){
  12. Datenow=newDate();
  13. SimpleDateFormatformater=newSimpleDateFormat("yyMMdd_HHmmss");
  14. StringSDCARD=Environment.getExternalStorageDirectory()+"/";
  15. StringbasePath=SDCARD+"dier/photo/";
  16. Filedir=newFile(basePath);
  17. dir.mkdirs();
  18. returnbasePath+formater.format(now)+".jpg";
  19. }
  20. @Override
  21. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
  22. Stringfilename="";
  23. try{
  24. if(resultCode==Activity.RESULT_OK&&requestCode==TAKE_PICTURE){
  25. Filefile=newFile(TEMP_FILE);
  26. if(file.exists()){
  27. filename=file.getPath();
  28. Toast.makeText(MainActivity.this,"图片已保存在:"+filename,3000).show();
  29. }
  30. else{
  31. Toast.makeText(MainActivity.this,"亲,我实在无能为力啊,你是用啥程序照的相片?",5000).show();
  32. }
  33. }
  34. }catch(Exceptionerr){
  35. Log.e("Exception",err.getLocalizedMessage());
  36. }
  37. }

分享到:
评论

相关推荐

    USBCamera多摄像头同时预览打开

    支持USB摄像头的android代码,UVC协议谁信那个头,USBCamera多摄像头同时预览打开。 可以复用里面的代码进行更多的摄像头打开,只要带宽足够,可以打开多个。 测试环境: macOS Catalina 版本10.15.7 Android Studio...

    新版Android开发教程.rar

    � GPS 卫星导航功能,手机照相, MP3 ,蓝芽等均被列为 Android 所提供支持的基本选项。 � Android 的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金; Android 的 程序可以采用 JAVA ...

    Android-Camera-Uploader:拍摄照片或录制视频,然后使用PHP API将其上传到服务器

    Android相机上传器 ... 选择“拍照”或“录制视频”后,应用程序崩溃(解决方案:尝试升级您的Android操作系统。此应用程序不是为Android API <24创建的) 传感器相关信息 当应用程序将图像或视频上传到服务器

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part1

    书名:《Android底层开发技术实战详解——内核、移植和驱动》(电子工业出版社.王振丽)。本书从底层原理开始讲起,结合真实的案例向读者详细介绍了android内核、移植和驱动开发的整个流程。全书分为19章,依次讲解...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part3

    书名:《Android底层开发技术实战详解——内核、移植和驱动》(电子工业出版社.王振丽)。本书从底层原理开始讲起,结合真实的案例向读者详细介绍了android内核、移植和驱动开发的整个流程。全书分为19章,依次讲解...

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    • 丰富而又可扩展的视图( Views),可以用来构建应用程序, 它包括列表(lists),网格( grids), 文 本框(text boxes),按 钮 (buttons), 甚至可嵌入的 web 浏览器。 • 内容提供器(Content Providers)...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part2

    书名:《Android底层开发技术实战详解——内核、移植和驱动》(电子工业出版社.王振丽)。本书从底层原理开始讲起,结合真实的案例向读者详细介绍了android内核、移植和驱动开发的整个流程。全书分为19章,依次讲解...

    精通ANDROID 3(中文版)1/2

    16.3.3 使用Camera实现2D图像的深度效果  16.3.4 探索AnimationListener类  16.3.5 关于变换矩阵的一些说明  16.4 资源  16.5 小结  第17章 地图和基于位置的服务  17.1 地图包  17.1.1 从Google获取...

    精通Android 3 (中文版)2/2

    第1章 Android计算平台简介  1.1 面向新PC的全新平台  1.2 Android的历史  1.3 Dalvik VM剖析  1.4 理解Android软件栈  1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 ...

    poco相机 android v1.7.2

    3、无限创作力量:POCO相机首创了“颜色微调、颜色特效叠加”功能,让每个人的想象力得到了无限量的扩展,每张照片都可以演绎出千万中不同的颜色和效果! 4、一键多平台分享:可将照片一键分享到新浪微博、腾讯微博...

    nativecamera:HaXe相机的本机扩展库

    NativeCamera在以下平台上使用HaXe处理本机相机的库: 安卓闪光视窗的iOS功能: 返回本机摄像机标识符初始化本机摄像头拍照从移动设备的相机拍照并接收字节数据触发iOS和Android中的内置相机,或iOS模拟器中的照片库...

Global site tag (gtag.js) - Google Analytics