当前位置: 首页 > news >正文

Kotlin 26. Kotlin 如何播放音频文件

Kotlin 如何播放音频文件


文章目录

  • Kotlin 如何播放音频文件
    • 1 下载并放置音频文件
    • 2 activity_main.xml
    • 3 MainActivity.kt


1 下载并放置音频文件

我们可以随便下载一个音频文件,比如 alarm.mp3,需要将其放置在 /res/raw/ 路径下。

2 activity_main.xml

这里,我们加一个按钮,当我们按下这个按钮后,APP 播放指定的音乐。

<Buttonandroid:id="@+id/pushButton"android:layout_width="150dp"android:layout_height="150dp"android:text="Press"android:textColor="@color/white"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.498"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.344" />

3 MainActivity.kt

class MainActivity : AppCompatActivity() {private var mediaPlayer: MediaPlayer? = null@SuppressLint("ClickableViewAccessibility", "ResourceType")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)mediaPlayer = MediaPlayer.create(this, R.raw.alarm1)mediaPlayer?.setOnPreparedListener{println("READY TO GO")}pushButton.setOnTouchListener { _, event ->handleTouch(event)true}}// 按下按钮后,报警声音响起private fun handleTouch(event: MotionEvent){when (event.action) {MotionEvent.ACTION_DOWN -> {println("down")mediaPlayer?.start()}MotionEvent.ACTION_UP -> {println("up")mediaPlayer?.pause()mediaPlayer?.seekTo(0)// 使用完MediaPlayer需要回收资源。// MediaPlayer是很消耗系统资源的,所以在使用完MediaPlayer,不要等待系统自动回收,最好是主动回收资源。if (mediaPlayer != null && mediaPlayer?.isPlaying == true) {mediaPlayer?.stop()mediaPlayer?.release()mediaPlayer = null}}else -> {println("others")}}}}

这里的逻辑还是比较直白的,有几个点需要解释一下。首先,我们需要先创建一个新的 MediaPlayer,用于播放自定义的音乐:MediaPlayer.create(this, R.raw.alarm1),这里,此音乐命名为 alarm1.mp3,并存放于 res/raw/ 文件夹下。mediaPlayer?.setOnPreparedListener 在这里没有任何作用,这个函数的作用是告诉我们音频何时准备好播放:Register a callback to be invoked when the media source is ready for playback.。当我们按下按钮后,会触发 handleTouch 函数,或者更准确地说,是 handleTouch 中的 MotionEvent.ACTION_DOWNmediaPlayer?.start() 即播放音乐的指令。当我们松开按钮时,便会触发 handleTouch 中的 MotionEvent.ACTION_UP。最后需要注意,MediaPlayer 是很消耗系统资源的,所以在使用完 MediaPlayer,不要等待系统自动回收,最好是主动回收资源:mediaPlayer?.stop()mediaPlayer?.release()

http://www.lryc.cn/news/5067.html

相关文章:

  • recv和明文收包分析
  • 【IVIF的超分重建】
  • “深度学习”学习日记。--加深网络
  • 2023前端面试总结含参考答案
  • 总览 Java 容器--集合框架的体系结构
  • 即便考分很好也不予录取的研究生复试红线,都是原则性问题
  • Android java创建子线程的几种方法
  • UVa 11212 Editing a Book 编辑书稿 IDA* Iterative Deepening A Star 迭代加深搜剪枝
  • 第一章:unity性能优化之内存优化
  • 2023年家族办公室研究报告
  • Typescript快速入门
  • 如何激励你的内容团队产出更好的创意
  • 机械设备管理软件如何选择?机械设备管理软件哪家好?
  • 深入浅出带你学习shiro-550漏洞
  • 项目(今日指数之环境搭建)
  • PCL 基于投影点密度的建筑物立面提取
  • DDD 参考工程架构
  • 重建,是2023年的关键词
  • 动手写操作系统-00-环境搭建以及资料收集
  • 【scipy.sparse包】Python稀疏矩阵详解
  • 从写下第1个脚本到年薪30W,我的自动化测试心路历程
  • JAVA八股、JAVA面经
  • GAN系列基础知识
  • Linux/CenterOS 7.9配置汉化gitlab服务器
  • 山洪灾害监测预警平台 山洪灾害监测预警系统解决方案 以人为本 科学防御
  • The Number Of ThreadPoolExecutor
  • Linux(Linux各目录结构详解)
  • UART通讯简介
  • 80 90后表示真干不过,部门新来的00后已经把我卷奔溃了,不想干了····
  • Python中2.x 与 3​​.x 版本区别?