如何调用自己手机的拍照功能以及从手机相册选择图片? 比如找个小例子:

首先,还是弄一个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)-摄像头和相册相关推荐

  1. Android学习之基础知识十一 —运用手机多媒体

    一.使用通知(Notification) 通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助 ...

  2. Android学习-运用手机多媒体-通知使用技巧、调用摄像头拍照、从相册中选取照片、播放音频和视频文件(MediaPlayer、VideoView)

    android提供了一系列的API,使得我们可以在程序中调用很多的多媒体资源,从而编写出更加丰富多彩的应用程序. 使用通知 通知(Notification)是Android系统中比较有特色的一个功能, ...

  3. android调用相册和摄像头,Android8.3调用摄像头和相册

    我们平时在使用QQ或微信的时候经常要和别人分享图片,这些图片可以是用手机摄像头拍的,也可以是从相册中选取的.类似这样的功能实在是太常见了,几乎在每个应用程序中都会有,那么本节我们就学习一下调用摄像头和 ...

  4. 8-2 Android 摄像头和相册

    文章目录 一.调用摄像头 布局文件: MainActivity.java AndroidManifest.xml file_paths.xml 注意点: 效果: 二.调用相册 加入从相册选择图片的逻辑 ...

  5. Android基础实战之调用摄像头与相册 | 带实例

    调用摄像头与相册 调用摄像头拍照/从相册选择照片 xml 设置了两个按钮,分别是打开摄像头的按钮,以及打开相册的按钮 <Buttonandroid:id="@+id/take_phot ...

  6. Android学习系列(15)--App列表之游标ListView(索引ListView)

    游标ListView,提供索引标签,使用户能够快速定位列表项.       也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧.       一看图啥都懂了: ...

  7. Android 学习记录(持续更新)

    Android 学习记录(持续更新) 1.AndroidManifest.xml 详解: http://www.jb51.net/article/73731.htm (AndroidManifest. ...

  8. 《Android学习指南》目录

    转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先 ...

  9. Android学习记录——8.多媒体

    文章目录 1.将程序运行到手机上 2.使用通知 2.1 通知的基本用法 2.2 通知的进阶技巧 2.3 通知的高级功能 3.调用摄像头和相册 3.1 调用摄像头拍照 3.2 从相册中选择图片 4.播放 ...

  10. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

最新文章

  1. mysql中的if [not] exists
  2. LeetCode 1768. 交替合并字符串
  3. 编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt文件中,并以相反的顺序读出显示在屏幕上。
  4. 2021-05-15 Nginx面试题
  5. linux下执行efi文件,在Linux下创建EFI BIOS Grub加载分区
  6. ASCLL GBK UTF-8 http https
  7. 人生的意义,在于不断地超越自己
  8. 寻星时卫星数字电视接收机的信号检测功能
  9. 浅析“npm run dev”作用
  10. 不同阶段,产品经理需要哪些能力?
  11. 基于JQuery网页漂浮广告窗口Js详解
  12. 大学寒假这样过,过完惊艳所有人,不只是你的宿友,还有千千万万个程序员同行们!!!
  13. 化妆品公司mysql_化妆品网站销售管理系统的设计与实现(SSH,MySQL)(含录像)
  14. STC用PCA测量脉宽_示波器在进行频率测量时如何减少误差
  15. 请你谈谈TCP协议与UDP协议的区别
  16. 【日常学习】XML文件约束,Tomcat服务器和HTTP协议
  17. 数据归一化(normalizing)的直观理解和通俗解释。
  18. 手游热更新方案xLua开源:Unity3D下Lua编程解决方案
  19. 腾讯职级体系大改革!
  20. Java 关键字:extends, implements

热门文章

  1. 自动点名c语言,编撰一个随机点名系统
  2. 公务员备考(十九) 申论
  3. 分布式 Web UI 自动化系统的设计与实现
  4. Performance Analysis of Rateless-CodedNon-Orthogonal Multiple Access over Nakagami-m Fading Channel
  5. 用shader做水波纹效果
  6. android高德地图点平滑移动,高德地图平滑移动问题
  7. 7z switch参数详解
  8. Micro Framework 3 0模拟器改造
  9. 怎样做好Java系统程序员?
  10. kali2022安装配置、换源、输入法安装