当前位置:   article > 正文

Kotlin课程学习一一音频播放(开始、暂停、停止)_kotlin 播放音频

kotlin 播放音频

目录

一、基础知识

二、项目搭建

(一)音频准备工作

1.文件夹准备

 2.音频准备

(二)布局设置

(三)项目建立

1.创建连接

2.定义全局变量mediaPlayer

3.建立三个按钮的监听

4.初始化播放器

5.建立播放器initMediaPlayer()

6.直接退出播放

(四)完整代码

activity.xml文件

activity.kt文件


一、基础知识

Android中播放音频采用MediaPlayer类,以下几种是本次所需的控制方法:

方法名功能描述

start()

开启或继续播放音频
pause()暂停播放音频
stop()停止播放音频
release()释放MediaPlayer对象相关资源
isPlaying()判断当前是否播放

二、项目搭建

(一)音频准备工作

1.文件夹准备

main文件(右击)~new~Directory~assets(双击),添加assets文件到main下方。
关于assts:Android用来存储音频文件的地方,且只能存储音频。

 2.音频准备

自行下载.mp3文件,可通过拖拽方式添加到assts文件夹下方。(也可复制粘贴)

(二)布局设置

设置xml文件为线性结构,然后创建三个按钮(分别为播放、暂停和停止)

  1. <Button
  2. android:layout_width="0dp"
  3. android:layout_weight="1"
  4. android:layout_height="wrap_content"
  5. android:id="@+id/button1"
  6. android:text="play"
  7. />
  8. <Button
  9. android:layout_width="0dp"
  10. android:layout_weight="1"
  11. android:layout_height="wrap_content"
  12. android:id="@+id/button2"
  13. android:text="pause"
  14. />
  15. <Button
  16. android:layout_width="0dp"
  17. android:layout_weight="1"
  18. android:layout_height="wrap_content"
  19. android:id="@+id/button3"
  20. android:text="stop"
  21. />

(三)项目建立

1.创建连接

  1. val play:Button=findViewById(R.id.button1)//播放
  2. val pause:Button=findViewById(R.id.button2)//暂停
  3. val stop:Button=findViewById(R.id.button3)//停止

2.定义全局变量mediaPlayer

private val mediaPlayer=MediaPlayer()//获取对象

3.建立三个按钮的监听

需要判断是否播放

  1. play.setOnClickListener {
  2. if(!mediaPlayer.isPlaying){//判断当前是否播放
  3. mediaPlayer.start()//播放
  4. }
  5. }
  6. pause.setOnClickListener {
  7. if(mediaPlayer.isPlaying){
  8. mediaPlayer.pause()
  9. }
  10. }
  11. stop.setOnClickListener {
  12. if(mediaPlayer.isPlaying){
  13. mediaPlayer.release()//重置
  14. initMediaPlayer()
  15. }
  16. }

4.初始化播放器

initMediaPlayer()

5.建立播放器initMediaPlayer()

  1. private fun initMediaPlayer(){
  2. val assetManager=assets//操作assets目录下的音频文件
  3. val fd=assetManager.openFd("北京欢迎你.mp3")//打开文件(名称+后缀)
  4. mediaPlayer.setDataSource(fd.fileDescriptor,fd.startOffset,fd.length)
  5. //获取文件数据的基本信息,第一个秒数,第二个偏移量,第三个长度
  6. mediaPlayer.prepare()//调用,进行准备工作。(重置加准备)
  7. }

6.直接退出播放

  1. //直接退出(关闭并释放)
  2. override fun onDestroy() {
  3. super.onDestroy()
  4. mediaPlayer.stop()
  5. mediaPlayer.release()
  6. }

(四)完整代码

activity.xml文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".MainActivity">
  8. <Button
  9. android:layout_width="0dp"
  10. android:layout_weight="1"
  11. android:layout_height="wrap_content"
  12. android:id="@+id/button1"
  13. android:text="play"
  14. />
  15. <Button
  16. android:layout_width="0dp"
  17. android:layout_weight="1"
  18. android:layout_height="wrap_content"
  19. android:id="@+id/button2"
  20. android:text="pause"
  21. />
  22. <Button
  23. android:layout_width="0dp"
  24. android:layout_weight="1"
  25. android:layout_height="wrap_content"
  26. android:id="@+id/button3"
  27. android:text="stop"
  28. />
  29. </LinearLayout>

activity.kt文件

  1. package com.example.a134
  2. import android.media.MediaPlayer
  3. import androidx.appcompat.app.AppCompatActivity
  4. import android.os.Bundle
  5. import android.widget.Button
  6. class MainActivity : AppCompatActivity() {
  7. private val mediaPlayer=MediaPlayer()//获取对象
  8. override fun onCreate(savedInstanceState: Bundle?) {
  9. super.onCreate(savedInstanceState)
  10. setContentView(R.layout.activity_main)
  11. initMediaPlayer()//初始化播放器
  12. val play:Button=findViewById(R.id.button1)//播放
  13. val pause:Button=findViewById(R.id.button2)//暂停
  14. val stop:Button=findViewById(R.id.button3)//停止
  15. play.setOnClickListener {
  16. if(!mediaPlayer.isPlaying){//判断当前是否播放
  17. mediaPlayer.start()//播放
  18. }
  19. }
  20. pause.setOnClickListener {
  21. if(mediaPlayer.isPlaying){
  22. mediaPlayer.pause()
  23. }
  24. }
  25. stop.setOnClickListener {
  26. if(mediaPlayer.isPlaying){
  27. mediaPlayer.release()//重置
  28. initMediaPlayer()//释放
  29. }
  30. }
  31. }
  32. private fun initMediaPlayer(){
  33. val assetManager=assets//操作assets目录下的音频文件(只存放MP3文件)
  34. val fd=assetManager.openFd("北京欢迎你.mp3")//打开文件(全名包括后缀)
  35. mediaPlayer.setDataSource(fd.fileDescriptor,fd.startOffset,fd.length)
  36. //获取文件数据的基本信息,第一个秒数,第二个偏移量,第三个长度
  37. mediaPlayer.prepare()//调用,进行准备工作。(重置加准备)
  38. }
  39. //直接退出(关闭并释放)
  40. override fun onDestroy() {
  41. super.onDestroy()
  42. mediaPlayer.stop()
  43. mediaPlayer.release()
  44. }
  45. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/747584
推荐阅读
相关标签
  

闽ICP备14008679号