Android学习(15)-摄像头和相册
如何调用自己手机的拍照功能以及从手机相册选择图片? 比如找个小例子:
首先,还是弄一个layout先:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><ImageViewandroid:id="@+id/picture"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/take_photo"android:layout_alignRight="@+id/choose_from_album"android:layout_below="@+id/choose_from_album"android:layout_marginTop="55dp"android:src="@drawable/ic_launcher" /><Buttonandroid:id="@+id/choose_from_album"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/take_photo"android:layout_alignBottom="@+id/take_photo"android:layout_alignParentRight="true"android:layout_marginRight="28dp"android:text="从相册选择图片" /><Buttonandroid:id="@+id/take_photo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_marginLeft="14dp"android:layout_marginTop="23dp"android:text="拍照" /></RelativeLayout>
对于该活动,其代码:
public class MainActivity extends Activity {public static final int TAKE_PHOTO = 1;public static final int CROP_PHOTO = 2; //裁剪图片//用于拍照private Button takePhoto;private ImageView picture;private Uri imageUri; //选择图片private Button chooseFromAlbum;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);takePhoto = (Button)findViewById(R.id.take_photo);picture = (ImageView)findViewById(R.id.picture);takePhoto.setOnClickListener(new OnClickListener() { public void onClick(View arg0) {//创建File对象,用于存储拍照后的图片File outputImage = new File(Environment.getExternalStorageDirectory(),"tempImage.jpg");//参数: 目录 文件try {if(outputImage.exists()){ //文件已经存在就删除outputImage.delete();}outputImage.createNewFile();} catch (IOException e) {e.printStackTrace();}imageUri = Uri.fromFile(outputImage);//获取图片路径Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");//用于启动拍照服务intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//传递数据startActivityForResult(intent, TAKE_PHOTO);//启动拍照服务,而且需要返回结果,返回数据由onActivityResult处理}});chooseFromAlbum = (Button)findViewById(R.id.choose_from_album);chooseFromAlbum.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//创建File文件,用于存储选择的照片File outputImage = new File(Environment.getExternalStorageDirectory(),"output_image.jpg");try {if(outputImage.exists()){outputImage.delete();}outputImage.createNewFile();} catch (IOException e) {e.printStackTrace();}imageUri = Uri.fromFile(outputImage); //打开相册Intent intent = new Intent("android.intent.action.GET_CONTENT");//启动从相册选择图片功能intent.setType("image/*");intent.putExtra("crop", true);intent.putExtra("scale", true);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, CROP_PHOTO);}});}//用于响应调用活动返回protected void onActivityResult(int requestCode, int resultCode, Intent data){switch (requestCode) {case TAKE_PHOTO:if(resultCode == RESULT_OK){//如果当前只是拍照,调用裁剪活动Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(imageUri, "image/*");intent.putExtra("scale", true);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, CROP_PHOTO);//启动剪裁活动}break;case CROP_PHOTO:if(resultCode == RESULT_OK){try {Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)); //跨程序共享数据,共享输入数据picture.setImageBitmap(bitmap);} catch (FileNotFoundException e) {e.printStackTrace();}}break;default:break;}}}
在配置文件中要配置权限说明:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Android学习(15)-摄像头和相册相关推荐
- Android学习之基础知识十一 —运用手机多媒体
一.使用通知(Notification) 通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助 ...
- Android学习-运用手机多媒体-通知使用技巧、调用摄像头拍照、从相册中选取照片、播放音频和视频文件(MediaPlayer、VideoView)
android提供了一系列的API,使得我们可以在程序中调用很多的多媒体资源,从而编写出更加丰富多彩的应用程序. 使用通知 通知(Notification)是Android系统中比较有特色的一个功能, ...
- android调用相册和摄像头,Android8.3调用摄像头和相册
我们平时在使用QQ或微信的时候经常要和别人分享图片,这些图片可以是用手机摄像头拍的,也可以是从相册中选取的.类似这样的功能实在是太常见了,几乎在每个应用程序中都会有,那么本节我们就学习一下调用摄像头和 ...
- 8-2 Android 摄像头和相册
文章目录 一.调用摄像头 布局文件: MainActivity.java AndroidManifest.xml file_paths.xml 注意点: 效果: 二.调用相册 加入从相册选择图片的逻辑 ...
- Android基础实战之调用摄像头与相册 | 带实例
调用摄像头与相册 调用摄像头拍照/从相册选择照片 xml 设置了两个按钮,分别是打开摄像头的按钮,以及打开相册的按钮 <Buttonandroid:id="@+id/take_phot ...
- Android学习系列(15)--App列表之游标ListView(索引ListView)
游标ListView,提供索引标签,使用户能够快速定位列表项. 也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧. 一看图啥都懂了: ...
- Android 学习记录(持续更新)
Android 学习记录(持续更新) 1.AndroidManifest.xml 详解: http://www.jb51.net/article/73731.htm (AndroidManifest. ...
- 《Android学习指南》目录
转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先 ...
- Android学习记录——8.多媒体
文章目录 1.将程序运行到手机上 2.使用通知 2.1 通知的基本用法 2.2 通知的进阶技巧 2.3 通知的高级功能 3.调用摄像头和相册 3.1 调用摄像头拍照 3.2 从相册中选择图片 4.播放 ...
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
最新文章
- mysql中的if [not] exists
- LeetCode 1768. 交替合并字符串
- 编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt文件中,并以相反的顺序读出显示在屏幕上。
- 2021-05-15 Nginx面试题
- linux下执行efi文件,在Linux下创建EFI BIOS Grub加载分区
- ASCLL GBK UTF-8 http https
- 人生的意义,在于不断地超越自己
- 寻星时卫星数字电视接收机的信号检测功能
- 浅析“npm run dev”作用
- 不同阶段,产品经理需要哪些能力?
- 基于JQuery网页漂浮广告窗口Js详解
- 大学寒假这样过,过完惊艳所有人,不只是你的宿友,还有千千万万个程序员同行们!!!
- 化妆品公司mysql_化妆品网站销售管理系统的设计与实现(SSH,MySQL)(含录像)
- STC用PCA测量脉宽_示波器在进行频率测量时如何减少误差
- 请你谈谈TCP协议与UDP协议的区别
- 【日常学习】XML文件约束,Tomcat服务器和HTTP协议
- 数据归一化(normalizing)的直观理解和通俗解释。
- 手游热更新方案xLua开源:Unity3D下Lua编程解决方案
- 腾讯职级体系大改革!
- Java 关键字:extends, implements