关键代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Button btn1;private Uri imageUri;private ImageView picture;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1 = (Button)findViewById(R.id.btn1);   //发送通知Button takePhoto = (Button)findViewById(R.id.takePhoto);//拍照Button selectPhoto = (Button)findViewById(R.id.selectPhoto);//相册选择picture = (ImageView)findViewById(R.id.image);btn1.setOnClickListener(this);takePhoto.setOnClickListener(this);selectPhoto.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch(v.getId()){case R.id.btn1:Intent intent = new Intent(this,NotificationActivity.class);PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);NotificationManager manger = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);Notification notification = new NotificationCompat.Builder(this).setContentTitle("This is content title").setContentText("this is content text").setWhen(System.currentTimeMillis()).setSmallIcon(R.mipmap.ic_launcher).setContentIntent(pi).setAutoCancel(true).setVibrate(new long[]{0,1000}).build();manger.notify(1,notification);break;case R.id.takePhoto:File outputImage = new File(Environment.getExternalStorageDirectory(),"tempImage" + ".jpg");try {if (outputImage.exists()) {outputImage.delete();}outputImage.createNewFile();} catch (IOException e) {e.printStackTrace();}Intent intent1 = new Intent("android.media.action.IMAGE_CAPTURE");if (Build.VERSION.SDK_INT < 24) {// 从文件中创建uriimageUri = Uri.fromFile(outputImage);intent1.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);} else {//兼容android7.0 使用共享文件的形式ContentValues contentValues = new ContentValues(1);contentValues.put(MediaStore.Images.Media.DATA, outputImage.getAbsolutePath());//检查是否有存储权限,以免崩溃if(!checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) return;imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);intent1.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);}startActivityForResult(intent1, 1);break;case R.id.selectPhoto:Intent intent2 = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intent2,2);default:break;}}private boolean checkPermission( String permissions){if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {//申请WRITE_EXTERNAL_STORAGE权限Toast.makeText(this,"请开启存储权限",Toast.LENGTH_SHORT).show();return false;}return true;}protected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode) {case 1:if (resultCode == RESULT_OK) {setImage(imageUri);}break;case 2:if (resultCode == RESULT_OK) {Uri uri = data.getData();setImage(uri);}}}private void setImage(Uri uri){try {Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));picture.setImageBitmap(bitmap);} catch (FileNotFoundException e) {e.printStackTrace();}}
}

思路解析:

给button按钮增加点击事件,调用摄像头

1、首先这里创建了一个 File对象,用于存储摄像头拍下的图片,这里我们把图片命名为 tempImage.jpg ,并 将 它 存 放 在 手 机 SD 卡 的 根 目 录 下 , 调 用 Environment 的 getExternalStorageDirectory()方法获取到的就是手机 SD 卡的根目录 
2、然后再调用 Uri 的 fromFile()方法将 File 对象转换成 Uri对象,这个 Uri对象标识着 tempImage.jpg 这张图片 的唯一地址 
3、接着构建出一个Intent对象,并将这个Intent的action指定为android.media.action. IMAGE_CAPTURE,再调用 Intent的 putExtra()方法指定图片的输出地址,这里填入刚刚得 到的 Uri 对象,最后调用 startActivityForResult()来启动活动 
4、由于我们使用的是一个隐式 Intent,系统会找出能够响应这个 Intent的活动去启动,这样照相机程序就会被打开,拍下的 照片将会输出到 tempImage.jpg中 
5、我们是使用 startActivityForResult()来启动活动的,因此拍完照后会有结果返回 到 onActivityResult()方法中。

6、最后将照片uri转化为Bitmap,进行显示。

android 手机拍照、相册选择照片并显示相关推荐

  1. 安卓开发———打开相机拍照或者打开相册选择照片并显示出来

    打开相机 布局代码 <Buttonandroid:id="@+id/take_photo"android:layout_width="match_parent&qu ...

  2. Android系统相机拍照与选择照片

    拍照与选择照片 // 拍摄照片private val takePicturePreview =registerForActivityResult(ActivityResultContracts.Tak ...

  3. 【Android笔记67】Android之使用系统中的相机功能(拍照、保存照片、显示拍摄的照片、照片保存到图库等操作)

    这篇文章,主要介绍Android如何使用系统中的相机功能(拍照.保存照片.显示拍摄的照片.照片保存到图库等操作). 目录 一.使用Android相机功能 1.1.如何调用相机功能 1.2.调用相机功能

  4. Flutter自定义相机,Flutter相册选择照片

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. github? 测试源码在这里 百度同步 CSDN 网易云课堂教程 掘金 知乎 Flutter系列文章 头条同步 实际项目开发中,谷歌 ...

  5. android裁剪图片功能,Android实现拍照、选择图片并裁剪图片功能

    一. 实现拍照.选择图片并裁剪图片效果 按照之前博客的风格,首先看下实现效果. 二. uCrop项目应用 想起之前看到的Yalantis/uCrop效果比较绚,但是研究源码之后发现在定制界面方面还是有 ...

  6. android+代码调用+相册+小米,Android调用系统相册选择图片,支持小米4云相册

    用小米4调用系统相册选择照片时,如果云相册功能开启的话.云相册中的图片也会显示在选择列表中.经过测试,选择到云相册中的图片的话,uri的scheme是file,而不再试content.本文支持云相册的 ...

  7. android手机拍照,如何用Android手机拍摄 Android手机拍摄技巧汇总【详细介绍】

    很多人觉得Android手机的拍照功能不如苹果,但事实上,许多Android手机配备了高质量摄像头,只要掌握正确方法,用手机拍出完美的照片也是很简单的,下面就带来 Android手机拍摄实用小技巧 , ...

  8. android 调用相册功能吗,Android调用系统相册选择图片,支持小米4云相册

    用小米4调用系统相册选择照片时,如果云相册功能开启的话.云相册中的图片也会显示在选择列表中.经过测试,选择到云相册中的图片的话,uri的scheme是file,而不再试content.本文支持云相册的 ...

  9. android 摄像头 测距,GitHub - infonous/Everest: Android 手机拍照测距

    Everest Android 手机拍照测距 村花测距: Android 手机拍照测距 知识背景 利用器具测距的方式方法较多, 手机拍照测距从类别来分应该是属于单目测距, 这是需要使用到具体的参数物作 ...

最新文章

  1. 《漫画算法2》源码整理-5 二维数组螺旋输出
  2. SAP ABAP F4的检索帮助(包括自定义检索帮助)
  3. 【渝粤题库】国家开放大学2021春2322物流信息技术题目
  4. 数据链路层:SLIP(串型线路IP) PPP(点对点协议)
  5. [python 学习] requests 库的使用
  6. python网络爬虫与信息提取视频_Python网络爬虫与信息提取入门5
  7. java的基本结构_【Java基础】基本程序设计结构
  8. 总结-Linux基础指令
  9. LIME-AI可解释模型:《“Why Should I Trust You?” Explaining the Predictions of Any Classifier》论文笔记
  10. MySQL事务之不可重复读问题
  11. 复数基础——负数的虚数根,复共轭,复数加法、减法、乘法、除法_6
  12. 002 Figuring in C/C++
  13. Java系列技术之Spring5框架-钟洪发-专题视频课程
  14. DFS(深度优先搜索)学习笔记(C语言版本)
  15. 这一波区块链风口,你怎么看?
  16. Windows下串口逻辑端口号大于10无法打开问题
  17. MQL5 COOKBOOK: 多币种EA交易 - 简洁而快速的途径
  18. k8s高可用集群多个主节点_部署高可用k8s集群
  19. 【ASP.NET Web】项目实践—网上宠物店9:制作“购物车”页面
  20. 新一代计算机网络,新一代高性能计算机网络.pdf

热门文章

  1. java插入或者修改数据自动更新时间字段
  2. 现在女生做什么赚钱,这8种职业非常有前途!
  3. OpenCV边缘检测(二)——Sobel边缘检测
  4. 三种方法解决 IDEA乱码问题
  5. 百面深度学习:基于度量学习的元学习模型
  6. css3 tranform  transition animation
  7. python函数参数传递的两种方式_Python函数的参数传递方式
  8. 计算机课excel,计算机excel教学课件
  9. 在进程中执行新代码 execl、execle、execlp、execv、execve和execvp函数
  10. CRM,下一程在哪?