在xml布局文件中布局

 <ImageView android:id="@+id/ivHead"android:layout_marginTop="20dp"android:layout_centerHorizontal="true"android:layout_width="150dp"android:layout_height="150dp"/><Button android:id="@+id/btnSelectImage"android:layout_marginTop="200dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="打开相册"/><Button android:id="@+id/btnTakePhoto"android:layout_marginTop="260dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="拍照"/>

在对应的Java文件中

package com.example.meida;import android.os.Bundle;import java.io.File;import com.example.meida.MainActivity;import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;public class openphoto extends Activity implements OnClickListener {private ImageView ivHead;private Button btnSelectImage, btnTakePhoto;private static final int IMAGE_CODE=0;//打开相册private static final int CAMERA_CODE=1;//相机private static final int RESIZE_CODE=2;//调整大小private static final String IMAGE_NAME=" ";//图片字符串@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.fragment_main);// 初始化控件init();// 绑定点击事件bindClick();}// 初始化控件private void init() {ivHead = (ImageView) findViewById(R.id.ivHead);btnSelectImage = (Button) findViewById(R.id.btnSelectImage);btnTakePhoto = (Button) findViewById(R.id.btnTakePhoto);}// 绑定点击事件private void bindClick() {btnSelectImage.setOnClickListener(this);btnTakePhoto.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.btnSelectImage:Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);galleryIntent.addCategory(Intent.CATEGORY_OPENABLE);galleryIntent.setType("image/*");//图片startActivityForResult(galleryIntent, IMAGE_CODE);   //跳转,传递打开相册请求码break;case R.id.btnTakePhoto:if (isSdcardExisting()) {Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE");//拍照cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);startActivityForResult(cameraIntent, CAMERA_CODE);   //跳转,传递拍照请求码} else {Toast.makeText(view.getContext(), "请插入sd卡", Toast.LENGTH_LONG).show();}break;default:break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode != RESULT_OK) {return;} else {switch (requestCode) {case IMAGE_CODE:resizeImage(data.getData());break;case CAMERA_CODE:if (isSdcardExisting()) {resizeImage(getImageUri());} else {Toast.makeText(openphoto.this, "未找到存储卡,无法存储照片!",Toast.LENGTH_LONG).show();}break;case RESIZE_CODE:if (data != null) {showResizeImage(data);}break;}}super.onActivityResult(requestCode, resultCode, data);}//判断SD卡是否存在private boolean isSdcardExisting(){final String state=Environment.getExternalStorageState();if(state.equals(Environment.MEDIA_MOUNTED)){return true;}else{return false;}}//重塑图片大小public void resizeImage(Uri uri){Intent intent=new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop","true");//可以裁剪intent.putExtra("aspectX",1);intent.putExtra("aspectY",1);intent.putExtra("outputX",150);intent.putExtra("outputY",150);intent.putExtra("return-data",true);startActivityForResult(intent, RESIZE_CODE);//跳转,传递调整大小请求码}//获取路径private Uri getImageUri(){return Uri.fromFile(new File(Environment.getExternalStorageDirectory(),IMAGE_NAME));}//显示图片private void showResizeImage(Intent data){Bundle extras=data.getExtras();if(extras!=null){Bitmap photo=extras.getParcelable("data");Drawable drawable=new BitmapDrawable(photo);ivHead.setImageDrawable(drawable);}}
}

一定要注意xml和Java文件是否对应

Android打开相册和摄像头相关推荐

  1. Unity Android 打开相册和摄像头

    需求:要实现打开手机的相册和摄像头,选择照片或者拍照后,在unity进行. 1.android插件 我使用的是AndroidStuido来写插件,下面是一步步介绍流程 (1)创建android工程 注 ...

  2. android调用相册和摄像头,调用Android摄像头与打开相册

    以下为代码块: package com.example.demo; import java.io.File; import android.annotation.TargetApi; import a ...

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

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

  4. android跳转到相册需要权限,Android打开相册获取图片路径

    一.获得图片路径 当我们通过Intent打开相册,获取图片后,在onActivityResult回调中会得到图片的Uri. 但是Uri无法直接获得图片的路径.如果你曾经直接操作过android里的数据 ...

  5. Android打开相册并上传图片至服务器

    Android图片打开上传 打开相册 大多的安卓程序都需要上传头像或者一些图片,给大家一些我这几天遇到图片上传问题的经验. 首先这是我的个人中心页面 点击上面的图片,会出现我们相册的选项,点击进入以后 ...

  6. Android打开相册vs拍照获取图片的原理实现

    前言:这几天在做用户登陆注册的逻辑时,遇到了要修改用户的头像问题的解决.在此把实现的原理以及实现过程中遇到的问题分享个大家...留下些许脚印 在手机的app里我们常常可用看到在个人中心页面有修改头像的 ...

  7. android打开相册功能,Android 常用系统功能(打开相册,打开系统设置等等)

    1.开开相册: private void selectImg() { Intent pickIntent = new Intent(Intent.ACTION_PICK, MediaStore.Ima ...

  8. android 打开相册的权限,Android 启动系统相机,相册,裁剪图片及6.0权限管理

    在日常开发中,我们经常需要用到上传图片的 功能,这个时候通常有两种做法,第一种,从相机获取,第二种,从相册获取.今天这篇博客主要讲解利用系统的Intent怎样获取? 主要内容如下 怎样通过相机获取我们 ...

  9. android打开系统前置摄像头驱动,android 调用系统前置摄像头

    第一种方式是采用MediaStore,调用系统原生的相机. Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.pu ...

最新文章

  1. eclipse运行maven web项目
  2. oracle数据库动态与静态注册
  3. P1209 [USACO1.3]修理牛棚 Barn Repair(贪心+逆向思维)难度⭐⭐⭐
  4. onrsd.exe应用程序错误
  5. 后台(27)——文件上传
  6. Linux/Unix 如何查看 man 搜索到的手册页(manual page)的位置及复制手册页的内容
  7. IOT---(4)物联网平台架构设计
  8. freertos 编译c++失败_FreeRTOS的初次见面
  9. 解决eclipse中mybatis的xml配置文件无代码提示问题
  10. 2014蓝桥杯:地宫取宝(DFS详解)
  11. OpenCV模板匹配(cv2.matchTemplate)
  12. 1079:计算分数加减表达式的值 题解 信息学奥赛 NOIP
  13. Androidstudio连接华为手机问题
  14. 抢不到回家的票,还真不是12306技术不行
  15. 媒体报道 | 创业邦:巴别鸟,一款便捷好用的企业级文件协同网盘
  16. 已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行,如何解决
  17. 电脑上有么有透明桌面便签?透明记事便利贴小工具下载
  18. 点云obb盒显示 python
  19. ⅰcp经济模型_EOQ经济批量模型上篇(模型基础)
  20. S-Trees UVA - 712(建树即可)

热门文章

  1. 目标跟踪pytracking框架运行遇到的问题以及各种解法(cuda11.3+pytroch1.10)
  2. 微软为何要收购诺基亚?
  3. PHP中 empty() 和 isset() 的区别
  4. debian linux系统安装教程,使用U盘安装Debian 7 (Wheezy) Linux系统详细教程
  5. 涉密计算机安全审计分析报告,涉密信息安全保密审计报告
  6. 《JavaScript程序设计》第2课:JS类型系统
  7. iphone4s彩信设置教程--教你怎么发彩信
  8. AMD GPU(A卡)+Tensorflow+Anaconda+ubuntu18.04.2 安装方法
  9. Oracle 11g 关于权限DBA和SYSDBA的区别是什么
  10. 猎豹MFC--画椭圆圆弧饼图多边形及其他形状