Android学习笔记(十一)

本文深入探讨了Android开发中摄像头与相册的使用方法,包括如何调用摄像头拍照、从相册选择图片以及播放音频和视频的功能实现。详细解释了相关API的调用步骤和注意事项,旨在帮助开发者掌握关键技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android学习笔记(十一)

  • 摄像头与相册
    • 调用摄像头拍照
      1. 创建一个File对象,用于拍照后存储图片。传入两个参数,第一个参数为存储地址,第二个参数为存储文件名称。
      2. 调用Environment的getExternalStorageDirectory()方法获取SD卡的根目录地址作为第一个参数。
      3. 调用Uri的fromFile()方法将File对象转换为Uri方法
      4. 构建一个Intent的putExtra()方法指定图片的输出地址,填入得到的Uri对象。
      5. 最后调用startActivityForResult()来启动活动。
      6. 在onActivityResult()方法中,如果拍照成功,构建一个新的Intent,把action指定为com.android.camera.action.CROP。给这个Intent设置一些必要的属性后,再次调用startActivityForResult()来启动剪裁活动。
      7. 程序回调到onActivityResult()方法后,调用用BitmapFactory的decodeStream()方法将output_image.jpg这张照片解析成Bitmap对象,然后把它设置到ImageView中显示出来。
      8. 最后进行声明android.permisson.WRITE_EXTERNAL_STOPAGE
    • 从相册中选择照片
      1. 创建一个File对象用于存储相册中选择的图片
      2. 构建一个Intent对象,将其action指定为android.intent.action.GET_CONTENT.
      3. 给Intent设置一些必要参数,包括是否允许缩放和剪裁,图片的输出位置。
      4. 调用startActivityForResult()方法,给第二个参数传入CROP_PHOTO常量,直接调用前一个显示图片的逻辑。
  • 播放音频
    1. 创建一个MediaPlayer对象,然后在onCreate()方法中调用了initMediaPlayer()方法为MediaPlayer对象进行初始化操作。
    2. 在initMediaPlayer中创建一个File对象来制定音频路径,依次调用setDataSource()方法和prepare()方法为MediaPlayer做好播放准备。
    3. 点击Play按钮时会进行判断,如果当前没有播放音频,则调用start()方法开始播放,当点击pause按钮时会判断,如果真正播放,则会暂停播放,当点击Stop按钮时,如果正在播放,则会调用reset()方法将MediaPlayer重置为刚创建的状态,然后重新调用initMediaPlayer()方法
    4. 最后在onDestroy()方法中分别调用stop()和release()方法,将与MediaPlayer相关的资源释放掉。
方法名功能描述
setDataSource()设置要播放音频文件的位置
prepare()在开始播放之前调用这个方法完成准备工作
start()开始或继续播放音频
pause()暂停播放音频
reset()将MediaPlayer对象重置到刚刚创建的状态
seekTo()从指定位置开始播放音频
stop()停止播放音频
release()释放掉与MediaPlayer对象相关资源
isPlaying()判断当前MediaPlayer是否正在播放音频
getDuration()获取载入的音频文件的时长

- 播放视频:使用方式与播放音频相似

方法名功能描述
setVideoPath()设置要播放视频文件的位置
start()开始或继续播放视频
pause()暂停播放视频
resume()视频从头播放
seekTo()从指定位置开始播放视频
isPlaying()判断当前是否正在播放视频
getDuration()获取载入的视频文件的时长

- 服务(Service):是Android中实现程序后台运行的解决方案,它适用于不需要和用户交互且需要长时间运行的任务。
- 线程的基本用法
1. 定义一个线程:新建一个类继承自Thread,重写父类的run()方法,并在里面编写耗时逻辑。也可以通过Runnable接口的方式来定义一个线程。
2. 启动一个线程:如果是通过继承,则在线程的实例中调用start()方法。如果是调用接口创建,则通过new Thread(XXX).start();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值