今天又要加打开相机拍照并且上传图片的功能。很多项目都会用到,所以一时兴起,写了个封装类,希望在其他项目中,能够快速引入相机拍照系统。...import android.app.Activity import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory...import android.net.Uri import android.os.Build import android.os.Environment import android.provider.MediaStore...= null //拍照后保存的照片 var imgUri: Uri?...} else { Toast.makeText(activity, "打开相机失败,需要获取相机权限", Toast.LENGTH_SHORT
而适配中最难为程序员的就是Android了,除了开发环境、运行环境等因素之外,因为Android开源的原因,还要适配各大厂商。。 而适配条件之多,经常让Android程序员为之头疼。...来看看相机、相册相关的适配历程: Android 6 权限适配 Android 7 文件适配 Android 10/11 存储适配 ok,接下来以一个更换头像的小例子来讲解一下。...} } }.show(supportFragmentManager, "TakeImageDialog") } 定义后面会用到的一些参数变量: //相机拍照保存的位置...接下来看重点,打开相机。 author:yechaoa 打开相机 打开相机的流程就要稍微复杂一点了。 权限 第一步不是打开,而是先检查是否有相机权限,这个在某些手机上是必须的,比如华为。...Android 11开发手册 《Android 11 开发者手册》 参考 官方相机文档 官方权限文档 官方存储文档
照相机拍照 Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE...);// 照相机拍照 // 需要说明一下,以下操作使用照相机拍照, // 拍照后的图片会存放在相册中的,这里使用的这种方式有一个好处就是获取的图片是拍照后的原图..., // 如果不实用ContentValues存放照片路径的话,拍照后获取的图片为缩略图不清晰 ContentValues values...intent, RC_CHOOSE_PHOTO); } } 最后在onActivityResult方法中接收intent返回的URI 相册接收intent.getData(); 相机的
印象最深的就是有一个模块,我看到是和微信的录制视频是一样的,所以就在网上开始搜索,网上也看到了很多,但是运行出来效果并不是很令人满意,最终还是找到了 这是一个模仿微信拍照的Android开源控件 点击拍照
前言 BroadcastReceiver(广播接收器),属于Android四大组件之一 在Android开发中,BroadcastReceiver的应用场景非常多 今天,我将详细讲解关于BroadcastReceiver...定义 BroadcastReceiver,本质上是一个全局的监听器,属于Android四大组件之一。...4.3 广播发送者向AMS发送广播 4.3.1 广播的发送 广播是用”意图(Intent)“标识 定义广播的本质:定义广播所具备的“意图(Intent)” 广播发送:广播发送者将此广播的”意图“通过sendBroadcast...系统广播(System Broadcast) Android中内置了多个系统广播:只要涉及到手机的基本操作(如开机、网络状态变化、拍照等等),都会发出相应的广播 每个广播都有特定的Intent - Filter...Intent.ACTION_BATTERY_LOW 电池电量充足(即从电量低变化到饱满时会发出广播 Intent.ACTION_BATTERY_OKAY 系统启动完成后(仅广播一次) Intent.ACTION_BOOT_COMPLETED 检测网络变化
前言 BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于BroadcastReceiver..." //具有相应权限的广播发送者发送的广播才能被此BroadcastReceiver所接收; android:permission="string" //BroadcastReceiver运行所处的进程...5.2.3 两种注册方式的区别 5.3 广播发送者向AMS发送广播 5.3.1 广播的发送 广播 是 用”意图(Intent)“标识 定义广播的本质 = 定义广播所具备的“意图(Intent)” 广播发送...系统广播(System Broadcast) Android中内置了多个系统广播:只要涉及到手机的基本操作(如开机、网络状态变化、拍照等等),都会发出相应的广播 每个广播都有特定的Intent - Filter...总结 本文主要介绍了Android中四大组件的BroadcastReceiver的所有知识 Carson带你学Android 文章系列: Carson带你学Android:页面活动-Activity
这篇文章总结了Android相机开发的相关知识、流程,以及容易遇到的坑,希望能帮助今后可能会接触Android相机开发的朋友快速上手,节省时间,少走弯路。...一.Android中开发相机应用的两种方式 Android系统提供了两种使用手机相机资源实现拍摄功能的方法,一种是直接通过Intent调用系统相机组件,这种方法快速方便,适用于直接获得照片的场景,如上传相册...三.自定义相机的开发过程 定制一个自定义相机应用,通常需要完成以下步骤,其流程图如图1所示: 检测并访问相机资源 检查手机是否存在相机资源,如果存在,请求访问相机资源。...[image.jpg] 图3 相机预览方向示意图 (红色箭头为预览方向,蓝色方向为屏幕方向) 相机的拍照方向:当点击拍照按钮,拍摄的照片是由图像传感器采集到的数据直接存储到SDCard上产生的,因此,...相机的拍照方向与传感器方向是一致的。
1.1 调用系统相机 场景 调用系统相机,获取拍照后返回的照片 示例代码 // MainActivity.kt private var takePhotoLiveData: TakePhotoLiveData...= TakePhotoLiveData(activityResultRegistry, "key") // 点击拍照按钮 mBinding.btTakePhoto.setOnClickListener...{ takePhotoLiveData.takePhoto() } // 拍照返回的照片 takePhotoLiveData.observe(this) { bitmap ->...mBinding.imageView.setImageBitmap(bitmap) } 几行代码搞定调用系统相机并且返回拍照后的图片。...六、LiveData 结合 BroadcastReceiver 场景 可以实现BroadcastReceiver的自动注册和取消注册,减少重复代码。
Intent不仅是封装Android应用程序需要启动某个组件的“意图”,还是应用程序组件之间通信的重要媒介。本节开始来学习Intent的使用。...String receiverPermission, BroadcastReceiver resuItReceiver, Handler scheduler, int initialCode, String...需要注意的是,使用Intent开启Activity和开启Service只有两个方法,而开启BroadcastReceiver有多个方法。...使用这种方式开启的Activity,意图非常明显,因此称之为显式Intent,也叫做显式意图。 02隐式Intent 没有明确指定组件名的Intent称为隐式Intent,又叫隐式意图。...而隐式Intent的功能要比显示Intent更加强大,不仅可以开启本应用的组件,还可以开启其他应用的组件,例如打开系统自带的照相机、浏览器等。
作为Android的四大组件之二,其应用场景非常多。下面,就详细介绍下 BroadcastReceiver 的相关知识。 1....,具有相应权限的广播发送方发送的广播才能被此 BroadcastReceiver 所接收;android:process —— BroadcastReceiver 运行所处的进程。...5.3 广播发送及广播类型 广播发送:广播的“发送”与“接收”,表面上看是广播作为 Android 广播机制中的实体,实际上这一实体本身是并不是以所谓的”广播“对象存在的,而是以”意图“(Intent)...定义广播的定义本质,实际就是相应广播”意图“的定义过程,然后通过广播发送者通过 sendBroadcast() 方法将此”意图“发送出去。...如:开机启动,网络状态改变,拍照,屏幕关闭与开启,电量不足等等。
Service BroadcastReceiver 如果您使用 @AndroidEntryPoint 为某个 Android 类添加注释,则还必须为依赖于该类的 Android 类添加注释。...当然这个@AndroidEntryPoint基类必须扩展 ComponentActivity、(支持)Fragment、View、Service 或 BroadcastReceiver。...使用Activity Result API,通常我们在使用startActivityForResult时,会打开一个系统的页面,例如相机相册之类的,通过意图和请求码,然后在onActivityResult...都替换掉之后,你再运行一下,用相机拍照试一下,你会发现依然是正常的,但是看起来就清爽了很多。 3....result.get(PermissionUtils.CAMERA)) { showMsg("您拒绝了相机权限,无法打开相机,抱歉。")
最近遇到也一个需求:调用系统相机拍照,并且照片可以在系统相册显示。...自己应用调用相机拍照后某些手机只能在二级文件夹下找到(aaaaaa) 那么问题来了,微信,qq等它们是怎么实现将本应用拍的照片显示在系统相册最前方,而不用再往二级文件夹查找呢?...为了验证微信的图片路径是否被“特殊处理”了做的实验: 首先找到微信图片在本机的存储路径,我的手机是小米5,所以它的路径是:sd卡根目录+/Tencent/MicroMsg/WeiXin/; 在自己的demo中调用系统相机拍照...------------------------------------------------我是分割线------------------------------------- 下面记录下实现调用相机拍照并保存的一种方法...拍照的意图 Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); String rootPath = Environment.getExternalStorageDirectory
一、BroadcastReceiver BroadcastReceiver,顾名思义就是“广播接收者”的意思,它是Android四大基本组件之一。...1.3.2 系统广播 Android 系统内置了多个系统广播,只要涉及手机的基本操作,基本上都会发出相应的系统广播,如开机启动、网络状态改变、拍照、屏幕关闭与开启、电量不足等。...-- 指定该 BroadcastReceiver 所响应的 Intent 的 Action --> android:name="android.intent.action.INPUT_METHOD_CHANGED...演示: 在和广播接受者相同的 app 里的 MainActivity 添加一个注册按钮 , 用来注册广播接收者 设置意图过滤,添加 Action //onCreate创建广播接收者对象 mReceiver..., 意图添加消息内容, 意图设置 action( … ) 要匹配 , 然后发送广播即可.
Android Camera2Android Camera2 是 Android 系统中用于相机操作的一套高级应用程序接口(API),它取代了之前的 Camera API。...多流输出支持:单个相机设备可以同时输出多个流,每个流针对不同的使用场景进行了优化,如预览、拍照、视频录制或图像分析等。这使得开发者可以根据应用的具体需求灵活地获取和处理不同类型的图像数据。...开发者可以通过它来检测系统中可用的相机,并获取相机的相关信息以进行后续的操作。CameraDevice:代表系统中的摄像头硬件设备,负责建立与相机的连接,并管理相机的状态。...拍照的优先级比预览的优先级高,如果需要多次拍照,可以多次调用 capture() 方法。支持的版本和兼容性:Android Camera2 从 Android 5.0(API 级别 21)开始支持。...设备特性支持与检测方面: 设备能力检测:通过 CameraCharacteristics 类,Camera2 可以方便地检查设备相机的各种特性和功能,开发者可以根据设备的支持情况来动态地调整相机的设置和功能
如果一项包含文件 file:// URI类型 的 Intent 离开你的应用,应用失败,并出现 FileUriExposedException 异常,如调用系统相机拍照,或裁切照片。...在Android7.0上调用系统相机拍照,裁切照片 调用系统相机拍照 在Android7.0之前,如果你想调用系统相机拍照可以通过以下代码来进行: File file=new File(Environment.getExternalStorageDirectory...在Android7.0上使用上述方式调用系统相拍照会抛出如下异常: android.os.FileUriExposedException: file:////storage/emulated/0/temp...还是以调用系统相机拍照为例,我们需要将上述拍照代码修改为如下: File file=new File(Environment.getExternalStorageDirectory(), "/temp/...但,在前台运行的应用如果使用BroadcastReceiver 请求接收通知,则仍可以在主线程中侦听 CONNECTIVITY_CHANGE。
2.开启线程,启动硬件摄像头,调用CameraHolder.instance().open()得到一个android.hardwareCamera实 例mCameraDevice ...二.拍照录像切换功能 1.Switcher继承自ImageView,在布局文件中直接布局即可 2.mSwitch为true时,滑块在下方,显示拍照界面;当mSwitch为false时,滑块在上方...主界面左侧预览取景区的布局 4.video_camera.xml,videocamera主界面左侧预览取景区的布局 5.on_screen_hint.xml,SD卡相关信息的输出,如在屏幕下方提示“使用相机前请先插入...六.照相机SD卡 1.BroadcastReceiver mReceiver,接受SD卡发出的状态变化消息。...= OnScreenHint.makeText(this, noStorageText);设置当前界面需显示的内容 mStorageHint.show();显示SD卡状态文字 七.摄像机SD卡,比照相机稍微麻烦一些
最近在Android开发者官网中查看Android 11版本变更记录的时候,发现一个有意思的改动 ? 此项变更是说在使用Intent创建拍照,录像隐式请求的时候,只有手机预装的系统相机才会响应。...举个例子,当用户需要更新微信头像,选择拍摄上传的时候,如果用户手机上有多款能响应该Intent的相机应用可供选择的话,Android11之前是这个样子的: ?...分别在Android Q和Android R的模拟器上运行,我们发现Android R只会返回系统相机的info Android Q: ? Android R: ?...如果希望特定的第三方相机应用程序处理应用程序的意图,可以通过显式指定第三方相机应用程序的包名称来实现该意图。例如: ?...比如在Android M之前,很多Android App在需要使用相机拍摄用户头像等需求的时候,大部分开发者都会使用MediaStore.ACTION_IMAGE_CAPTURE来满足这一需求。
前言 文章传送门: Android:调用系统相机实现拍照+裁切(兼容7.0以上系统) Android: Camera相机开发详解(上) —— 知识储备 Android: Camera相机开发详解(中)...——实现预览、拍照、保存照片等功能 Android: Camera相机开发详解(下) —— 实现人脸检测功能 Camera2架构概述 Camera2引用了管道的概念将安卓设备和摄像头之间联通起来,系统向摄像头发送...CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES:相机支持的人脸检测模式 CaptureRequest 描述了一次操作请求...第二个参数为拍照的结果回调 CaptureResult 描述拍照完成后的结果 ImageReader 用于接收拍照结果和访问拍摄照片的图像数据。...<TextureView android:id="@+id/textureView" android:layout_width="match_parent" android:layout_height
image.png 从 Android 5.0 开始,Google 引入了一套全新的相机框架 Camera2(android.hardware.camera2)并且废弃了旧的相机框架 Camera1...(android.hardware.Camera)。...Pipeline 示意图 image.png 为了解释上面的示意图,假设我们想要同时拍摄两张不同尺寸的图片,并且在拍摄的过程中闪光灯必须亮起来。...例如你可以在拍照完成的时候,通过 CaptureResult 获取本次拍照时的对焦状态和时间戳。...例如你可以在拍照前进行 AE 操作,并且监听本这次拍照是否点亮闪光灯。
从Android 5.0开始,Google 引入了一套全新的相机框架 Camera2(android.hardware.camera2)并且废弃了旧的相机框架 Camera1(android.hardware.Camera...例如你可以在拍照前进行 AE 操作,并且监听本这次拍照是否点亮闪光灯。 3)何为HAL3? 为了配合Camera2 的使用,Android Hal层Camera框架也做了相对应的改动,也就是HAL3。...image.png pipeline流程图 为了解释上面的示意图,假设我们想要同时拍摄两张不同尺寸的图片,并且在拍摄的过程中闪光灯必须亮起来。...因此,在 Camera2 里面所有的相机操作和参数配置都被抽象成 Capture(捕获),所以不要简单的把 Capture 直接理解成是拍照,因为 Capture 操作可能仅仅是为了让预览画面更清晰而进行对焦而已...创建一个接收照片的 Surface,并且把它添加到 CaptureRequest 里提交给相机进行拍照,最后通过 ImageReader 的回调获取 Image 对象,进而获取 JPEG 图像数据进行保存
领取专属 10元无门槛券
手把手带您无忧上云