Android调用手机拍照以及从相册选择照片

android studio 调用相机拍照,选择相册照片 android studio 调用摄像头拍照或选择相册照片,拿到图片并存储图片 立即下载
[java]  view plain copy
  1. /*用来标识请求照相功能的activity*/  
  2.     private static final int CAMERA_WITH_DATA = 3023;  
  3.   
  4.     /*用来标识请求gallery的activity*/  
  5.     private static final int PHOTO_PICKED_WITH_DATA = 3021;  
  6.   
  7.     /*拍照的照片存储位置*/  
  8.     private static final File PHOTO_DIR = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera");  
  9.   
  10.     private File mCurrentPhotoFile;//照相机拍照得到的图片   

[java]  view plain copy
  1. private void doPickPhotoAction() {  
  2.             Context context = EditContact.this;  
  3.           
  4.             // Wrap our context to inflate list items using correct theme  
  5.             final Context dialogContext = new ContextThemeWrapper(context,  
  6.                     android.R.style.Theme_Light);  
  7.             String cancel="返回";  
  8.             String[] choices;  
  9.             choices = new String[2];  
  10.             choices[0] = getString(R.string.take_photo);  //拍照  
  11.             choices[1] = getString(R.string.pick_photo);  //从相册中选择  
  12.             final ListAdapter adapter = new ArrayAdapter<String>(dialogContext,  
  13.                     android.R.layout.simple_list_item_1, choices);  
  14.           
  15.             final AlertDialog.Builder builder = new AlertDialog.Builder(  
  16.                     dialogContext);  
  17.             builder.setTitle(R.string.attachToContact);  
  18.             builder.setSingleChoiceItems(adapter, -1,  
  19.                     new DialogInterface.OnClickListener() {  
  20.                         public void onClick(DialogInterface dialog, int which) {  
  21.                             dialog.dismiss();  
  22.                             switch (which) {  
  23.                             case 0:{  
  24.                                 String status=Environment.getExternalStorageState();  
  25.                                 if(status.equals(Environment.MEDIA_MOUNTED)){//判断是否有SD卡  
  26.                                     doTakePhoto();// 用户点击了从照相机获取  
  27.                                 }  
  28.                                 else{  
  29.                                     showToast("没有SD卡");  
  30.                                 }  
  31.                                 break;  
  32.                                   
  33.                             }  
  34.                             case 1:  
  35.                                 doPickPhotoFromGallery();// 从相册中去获取  
  36.                                 break;  
  37.                             }  
  38.                         }  
  39.                     });  
  40.             builder.setNegativeButton(cancel, new DialogInterface.OnClickListener() {  
  41.           
  42.                 @Override  
  43.                 public void onClick(DialogInterface dialog, int which) {  
  44.                     dialog.dismiss();  
  45.                 }  
  46.                   
  47.             });  
  48.             builder.create().show();  
  49.         }  
  50.     }  
  51.       
  52.     /** 
  53.     * 拍照获取图片 
  54.     *  
  55.     */  
  56.     protected void doTakePhoto() {  
  57.         try {  
  58.             // Launch camera to take photo for selected contact  
  59.             PHOTO_DIR.mkdirs();// 创建照片的存储目录  
  60.             mCurrentPhotoFile = new File(PHOTO_DIR, getPhotoFileName());// 给新照的照片文件命名  
  61.             final Intent intent = getTakePickIntent(mCurrentPhotoFile);  
  62.             startActivityForResult(intent, CAMERA_WITH_DATA);  
  63.         } catch (ActivityNotFoundException e) {  
  64.             Toast.makeText(this, R.string.photoPickerNotFoundText,  
  65.                     Toast.LENGTH_LONG).show();  
  66.         }  
  67.     }  
  68.       
  69.     public static Intent getTakePickIntent(File f) {  
  70.         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);  
  71.         intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));  
  72.         return intent;  
  73.     }  
  74.       
  75.     /** 
  76.     * 用当前时间给取得的图片命名 
  77.     *  
  78.     */  
  79.     private String getPhotoFileName() {  
  80.         Date date = new Date(System.currentTimeMillis());  
  81.         SimpleDateFormat dateFormat = new SimpleDateFormat(  
  82.                 "'IMG'_yyyy-MM-dd HH:mm:ss");  
  83.         return dateFormat.format(date) + ".jpg";  
  84.     }  
  85.       
  86.     // 请求Gallery程序  
  87.     protected void doPickPhotoFromGallery() {  
  88.         try {  
  89.             // Launch picker to choose photo for selected contact  
  90.             final Intent intent = getPhotoPickIntent();  
  91.             startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);  
  92.         } catch (ActivityNotFoundException e) {  
  93.             Toast.makeText(this, R.string.photoPickerNotFoundText1,  
  94.                     Toast.LENGTH_LONG).show();  
  95.         }  
  96.     }  
  97.       
  98.     // 封装请求Gallery的intent  
  99.     public static Intent getPhotoPickIntent() {  
  100.         Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);  
  101.         intent.setType("image/*");  
  102.         intent.putExtra("crop", "true");  
  103.         intent.putExtra("aspectX", 1);  
  104.         intent.putExtra("aspectY", 1);  
  105.         intent.putExtra("outputX", 80);  
  106.         intent.putExtra("outputY", 80);  
  107.         intent.putExtra("return-data", true);  
  108.         return intent;  
  109.     }  
  110.       
  111.     // 因为调用了Camera和Gally所以要判断他们各自的返回情况,他们启动时是这样的startActivityForResult  
  112.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  113.         if (resultCode != RESULT_OK)  
  114.             return;  
  115.         switch (requestCode) {  
  116.             case PHOTO_PICKED_WITH_DATA: {// 调用Gallery返回的  
  117.                 final Bitmap photo = data.getParcelableExtra("data");  
  118.                 // 下面就是显示照片了  
  119.                 System.out.println(photo);  
  120.                 //缓存用户选择的图片  
  121.                 img = getBitmapByte(photo);  
  122.                 mEditor.setPhotoBitmap(photo);  
  123.                 System.out.println("set new photo");  
  124.                 break;  
  125.             }  
  126.             case CAMERA_WITH_DATA: {// 照相机程序返回的,再次调用图片剪辑程序去修剪图片  
  127.                 doCropPhoto(mCurrentPhotoFile);  
  128.                 break;  
  129.             }  
  130.         }  
  131.     }  
  132.       
  133.     protected void doCropPhoto(File f) {  
  134.         try {  
  135.             // 启动gallery去剪辑这个照片  
  136.             final Intent intent = getCropImageIntent(Uri.fromFile(f));  
  137.             startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);  
  138.         } catch (Exception e) {  
  139.             Toast.makeText(this, R.string.photoPickerNotFoundText,  
  140.                     Toast.LENGTH_LONG).show();  
  141.         }  
  142.     }  
  143.       
  144.     /**  
  145.     * Constructs an intent for image cropping. 调用图片剪辑程序  
  146.     */  
  147.     public static Intent getCropImageIntent(Uri photoUri) {  
  148.         Intent intent = new Intent("com.android.camera.action.CROP");  
  149.         intent.setDataAndType(photoUri, "image/*");  
  150.         intent.putExtra("crop", "true");  
  151.         intent.putExtra("aspectX", 1);  
  152.         intent.putExtra("aspectY", 1);  
  153.         intent.putExtra("outputX", 80);  
  154.         intent.putExtra("outputY", 80);  
  155.         intent.putExtra("return-data", true);  
  156.         return intent;  
  157.     }  

MATLAB演示元胞自动机算法 一、元胞自动机理论 元胞自动机与格子理论是一个非常好的模型,许多复杂的问题都可以通过它来建立模型,下面就简要介绍一下。 元胞自动机 实质上是定义在一个具有离散、有限状态的元胞组成的元胞空间上,并按照一定的局部规则,在离散的时间维度上演化的动力学系统。 元胞 元胞又可称为单元、细胞,是元胞自动机的最基本的组成部分。 元胞具有以下特点: 元胞自动机最基本的单元。 元胞有记忆贮存状态的功... 阅读详情

相关推荐

永久关闭Windows更新的5种方法

很多家用电脑,如果系统自动更新的话,会变得越来越卡顿,且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢?以下准备了5种方法,您可以根据自身实际情况选择合适的方法!

qq_43652793的博客 1万+

调用摄像头拍照以及从相册中选择照片

1.activity_main.xml <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layou

weixin_47619153的博客 403

word2vector入门教程

摘要: 网上已经有许多对w2v的介绍了,这里只是做一个简单的概括。下面这篇文章我认为是关于W2V写的比较好的文章,读者有兴趣可以先参考一下: w2v参考文章1 另外一篇是关于Skip-Gram和CBow的介绍。 Skip-Gram&CBOW 逻辑比较清晰的综述文章: 综述文章 数学原理很清晰很短的一篇文章(也有关于负采样的简单说明) 参考文章 1.什么

SCUT_Sam 1万+

Android---图片相册选择和相机拍照

Android—图片相册选择和相机拍照 星光不负赶路人,时间不负有心人 文章目录Android---图片相册选择和相机拍照效果获取权限,导入依赖危险权限和普通权限获取权限的案例读取用户相册点击事件读取相册 效果 获取权限,导入依赖 // 图片选择控件 implementation 'io.github.lucksiege:pictureselector:v2.7.2' // 让用户同意权限的弹窗如何调出来呢,我们使用第三方开源控件 implementation 'com.yanzhen

乐褀的博客 3158

QGroundControl实现多机控制

前言 作为西安电子科技大学的本科生一名,目前在研究关于无人机导航规划与轨迹控制方面。 目前在跟导师做关于雷达无人机的一个项目,在这里记录一下关于QGC地面站实现多机控制的一些方法。 某些地方写的可能不是很完善,欢迎大家补充。 目前该文章还未写完,后期本人会继续编写 多机控制原理 多机地面站支持TCP,UDP和串口等三种连接方式,首先我们需要对这两种连接方式抽象出一个基类LinkInterface,提供两个虚函数分别对应于数据接受和发送处理,针对于不同的连接方式实现TCP,UDP和串口连接相对应的子类TCPL

Phillweston的博客 8431

史上最强量化工具库 Ta-Lib 从入门到精通,一篇文章就够了!

Ta-Lib 提供的 13 个关键指标,并配上详细的代码示例,确保你看完就能直接上手!🔥。

奔跑的蜗牛 9932

Android图片裁剪(拍照和从相册选择)

一、获取图片的两种方式 1.获取图片的两种方式的简单使用 Android获取图片有两种途径,拍照和从相册选取,我们都只到这两种的简单用法: 拍照 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraUri);

彼岸人生的专栏 1614

DaVinci Developer中枚举类型变量的创建与实战应用

本文详细介绍了在DaVinci Developer中创建和使用枚举类型变量的方法与实战应用。通过智能温控系统的案例,阐述了枚举类型在嵌入式开发中的核心价值,包括提升代码可读性、类型安全性和维护便捷性。文章还提供了枚举类型在状态机实现和多模块协同中的高级应用技巧,以及调试与优化的实用建议。

ik678901234的博客 512

Android studio 从相册取出照片 和 点击拍照

AndroidStudio实现相机拍照或从相册中选取照片并显示

afufufufu的博客 3305

网页内容抓取的艺术:使用R语言解析动态网页

本文探讨了使用R语言处理动态网页数据的方法。针对AJAX加载的学术网站,传统的静态抓取和RSelenium方法存在会话终止、浏览器错误等问题。通过分析发现内容通过admin-ajax.php加载,提出使用httr2模拟POST请求获取数据,配合rvest解析HTML内容。该方法避免了浏览器自动化的弊端,实现了高效稳定的动态内容提取,为处理类似AJAX网站提供了通用解决方案。

m0_74337424的博客 55

【27】软考软件设计师——数据流图(DFD)补全题满分精讲|下午15分大题深度拆解

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第27篇,深度精讲**下午案例题第1道必考大题:数据流图(DFD)补全**,该题单题分值高达**12 ~ 15分**,是整张试卷最稳的保底得分大题。我结合多年备考复盘与真题阅卷规则,超详细拆解DFD四大核心元素标准定义、机考绘图规范、三层分层逻辑、**父图子图平衡刚性扣分规则**,升级强化版「DFD满分补全三步法」;复刻历年高频真题完整流程,拆解缺失数据流定位、实体/存储辨析、平衡改错、文字需求对照全流程,配套**阅卷满分答题话术、机考避坑细则

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 592

Android调用手机拍照以及从相册选择照片 不指定

Android调用手机拍照以及从相册选择照片 Android编程 , 评论(10) , 引用(0) , 阅读(2005) 大 | 中 | 小 该功能主要实现上传图片到服务器,选择图片的方式有两种,一种是从手机相册中选择,另一种是调用手机摄像头拍照。如图: Java 代码复制内容到剪贴板      /*用来标识请求照相功能的activity*

sumakira的专栏 8125

使用DrissionPage和自动化技术实现得物鞋子信息爬取

本文介绍了一个基于DrissionPage技术的得物鞋子信息采集系统,能自动化采集商品图片、价格等数据并保存为Excel。系统采用浏览器模拟技术处理动态加载内容,通过XPath定位元素,实现智能交互和完整数据采集。关键技术包括:图片URL提取与下载、Excel数据集成与图片嵌入、文件名安全处理等。项目适用于市场分析和学术研究,强调必须遵守法律法规和平台规则,仅用于非商业用途。与API爬虫相比,浏览器自动化能更好处理现代Web应用,但需注意知识产权保护。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1667

Android调用手机拍照以及从相册选择照片,剪裁

/*用来标识请求照相功能的activity*/      private static final int CAMERA_WITH_DATA = 3023;        /*用来标识请求gallery的activity*/      private static final int PHOTO_PICKED_WITH_DATA = 3021;        /*拍

Qiqihar的专栏 3683

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: Android之实现系统联系人软件的分组和字母提示效果
下一篇: Android Sensors
火VVVVV
博客等级 码龄16年 87粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值