Android——调用摄像头拍照

这篇具有很好参考价值的文章主要介绍了Android——调用摄像头拍照。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

调用摄像头拍照

首先修改activity_main.xml
如下:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent">  
  
   <Button  
       android:layout_width="match_parent"  
       android:layout_height="wrap_content"  
       android:id="@+id/takePhotoBtn"  
       android:text="Take Photo"/>  
    <ImageView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:id="@+id/imageView"  
        android:layout_gravity="center_horizontal"/>  
  
</LinearLayout>

添加一个按钮和图片。
我们的逻辑功能是:

  • 点击按钮后打开相机
  • 相机拍照后图片返回到图片里
    由于代码比较长切复杂,我会一步步讲解以便于我的理解。(没错就是我的)
    首先我们需要为Button注册点击事件
takePhotoBtn.setOnClickListener {  
  ...
}

我们要创建一个文件存放我们拍照的图片,并且将图片(File对象)转换成Uri对象(表示这这张图片的本地真实路径)。
然后用非常熟悉的Intent启动相机程序

takePhotoBtn.setOnClickListener {  
//处理调用摄像头的逻辑  
outputImage = File(externalCacheDir,"output_image.jpg")//创建File对象,存放拍下图片  
//externalCacheDir叫做关联缓存目录,专门用于存放当前应用缓存数据的位置  
if (outputImage.exists()){  
    outputImage.delete()  
}  //如果已经存在就删除
outputImage.createNewFile()  
imageUri = if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){  
    //将File对象转换成一个封装过的Uri对象  
    FileProvider.getUriForFile(this,"com.example.cameraalbumtest.fileprovider",outputImage)  
}else{  
    Uri.fromFile(outputImage)  
}  
//启动相机程序  
val intent = Intent("android.media.action.IMAGE_CAPTURE")  
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri)//指定图片的输出地址
//使用registerForActivityResult启动
requestDataLauncher.launch(intent)
}

这里我们使用的是registerForActivityResult方法,用来替代startActivityForResult()方法(被废除)

private val requestDataLauncher=registerForActivityResult(ActivityResultContracts.StartActivityForResult())  
{result ->if (result.resultCode== RESULT_OK){  
    val bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(imageUri))  
    val imageView = findViewById<ImageView>(R.id.imageView)  
    imageView.setImageBitmap(rotateIfRequired(bitmap))  
}

接收到图片后,就可以调用BitmapFactory.decodeStream方法将图片转换成Bitmap对象,再将其设置到ImageView中展现出来。
最后的最后,提到了ContentProvider,自然要注册
再AndroidManifest中修改

<application  
    ...
    <provider  
        android:authorities="com.example.cameraalbumtest.fileprovider"  
        android:name="androidx.core.content.FileProvider"  
        android:exported="false"  
        android:grantUriPermissions="true">  
        <meta-data  
            android:name="android.support.FILE_PROVIDER_PATHS"  
            android:resource="@xml/file_paths" />  
    </provider>
    ...
 </application>

这样就ok啦(其实还有很多细节,但是我不是很懂)。文章来源地址https://www.toymoban.com/news/detail-624639.html

到了这里,关于Android——调用摄像头拍照的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Android相机调用-CameraX【外接摄像头】【USB摄像头】

    Android相机调用-CameraX【外接摄像头】【USB摄像头】

    Android相机调用有原生的Camera和Camera2,我觉得调用代码都太复杂了,CameraX调用代码简洁很多。 说明文档:https://developer.android.com/jetpack/androidx/releases/camera?hl=zh-cn 现有查到的调用资料都不够新,对于外接摄像头(USB摄像头)这类非前置也非后置摄像头的设备调用,都说是没有实

    2024年02月09日
    浏览(18)
  • Unity | 如何调用摄像头拍照

    Unity | 如何调用摄像头拍照

    我只用了PC端,其他平台我没试过哈~ 1.常见的输入内容 常见的输入内容:声音、图片 (影像就是一连串图片不停的放,所以摄像头发给电脑的实际上是很多很多图片) 常见的输入设备:输入声音对应的设备一般是麦克风,图片对应的设备一般设摄像头。 2.unity获取设备访问

    2023年04月09日
    浏览(17)
  • python调用摄像头实现拍照功能

    python调用摄像头实现拍照功能

    目录 1.介绍 2.系统依赖 (1)OpenCV-Python库 (2)Tkinter库 (3)Pillow库 (4)Time库 3.系统代码 4.效果展示 5.注意事项         这是一个有趣的项目,通过Python程序调用系统的摄像头,实现了拍照的功能.         我的主页还有一些文章介绍了其他有趣的项目,可以动手尝试一下: 代码写不完了

    2024年02月04日
    浏览(10)
  • vue调用电脑端摄像头实时拍照

    vue调用电脑端摄像头实时拍照

    点击照相机拍照,弹出照相机拍照弹窗,点击拍照按钮,截取录像的帧,点击保存,提交数据给后台。 1.html模块 2.css模块 就是一个弹窗,这里就不进行展示了。 3.js模块

    2024年02月12日
    浏览(12)
  • 【QT】QT调用电脑摄像头并拍照

    【QT】QT调用电脑摄像头并拍照

    建议搭配视频食用: 【【QT】QT调用电脑摄像头并拍照】 https://www.bilibili.com/video/BV1pc411G7qy/?share_source=copy_webvd_source=c0d9dd4e64b88e4dbf93ac009c2010dc 一、在pro文件中添加‘multimedia multimediawidgets’ 二、在ui界面创建一个widget并改名为camera用于展示摄像头内容和pushbutton 用于拍照,并右键

    2024年02月12日
    浏览(10)
  • Python进阶,使用 opencv 调用摄像头进行拍照

             opencv 支持 Python 版本的模块叫作 opencv-p hon ,可直接使用 pip install opencv-python 令进行安装,但常常会因为网络等问题导致失败。推荐使用离线模式来安装 opencv 模块。 下载完安装包后,使用如下命令进行安装: D: pip install opencv

    2024年02月11日
    浏览(11)
  • Vue2调用电脑摄像头权限,并拍照

    电脑端需要调取用户摄像头进行拍照

    2024年02月10日
    浏览(11)
  • Unity3D:调用安卓摄像头拍照

    操作步骤:创建脚步并挂载到Main Camera上 仍未解决的问题:导入到安卓平台测试时,拍照按钮不能随着屏幕旋转而变换位置; 拍照时会把拍照按钮也截进去。

    2024年02月06日
    浏览(13)
  • 【Android入门到项目实战-- 7.3】—— 如何调用手机摄像头和相册

    【Android入门到项目实战-- 7.3】—— 如何调用手机摄像头和相册

    目录 一、调用摄像头拍照 二、打开相册选择照片         学完本篇文章可以收获如何调用手机的摄像头和打开手机相册选择图片功能。 先新建一个CameraAlbumTest项目。 修改activity_main.xml,代码如下:         按钮打开摄像头,ImageView将拍到的图片显示出来。 下面编写调用

    2024年02月10日
    浏览(44)
  • uniapp开发h5或小程序调用摄像头拍照,录屏

    uniapp开发h5或小程序调用摄像头拍照,录屏

    uniapp开发h5或小程序调用摄像头拍照,录屏 如图 注意,小程序上线使用需要配置upload域名。

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包