目录
一、基础知识
Android中播放音频采用MediaPlayer类,以下几种是本次所需的控制方法:
方法名 | 功能描述 |
start() | 开启或继续播放音频 |
pause() | 暂停播放音频 |
stop() | 停止播放音频 |
release() | 释放MediaPlayer对象相关资源 |
isPlaying() | 判断当前是否播放 |
二、项目搭建
(一)音频准备工作
1.文件夹准备
main文件(右击)~new~Directory~assets(双击),添加assets文件到main下方。
关于assts:Android用来存储音频文件的地方,且只能存储音频。
2.音频准备
自行下载.mp3文件,可通过拖拽方式添加到assts文件夹下方。(也可复制粘贴)
(二)布局设置
设置xml文件为线性结构,然后创建三个按钮(分别为播放、暂停和停止)
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="play"
/>
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="pause"
/>
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:text="stop"
/>
(三)项目建立
1.创建连接
val play:Button=findViewById(R.id.button1)//播放
val pause:Button=findViewById(R.id.button2)//暂停
val stop:Button=findViewById(R.id.button3)//停止
2.定义全局变量mediaPlayer
private val mediaPlayer=MediaPlayer()//获取对象
3.建立三个按钮的监听
需要判断是否播放
play.setOnClickListener {
if(!mediaPlayer.isPlaying){//判断当前是否播放
mediaPlayer.start()//播放
}
}
pause.setOnClickListener {
if(mediaPlayer.isPlaying){
mediaPlayer.pause()
}
}
stop.setOnClickListener {
if(mediaPlayer.isPlaying){
mediaPlayer.release()//重置
initMediaPlayer()
}
}
4.初始化播放器
initMediaPlayer()
5.建立播放器initMediaPlayer()
private fun initMediaPlayer(){
val assetManager=assets//操作assets目录下的音频文件
val fd=assetManager.openFd("北京欢迎你.mp3")//打开文件(名称+后缀)
mediaPlayer.setDataSource(fd.fileDescriptor,fd.startOffset,fd.length)
//获取文件数据的基本信息,第一个秒数,第二个偏移量,第三个长度
mediaPlayer.prepare()//调用,进行准备工作。(重置加准备)
}
6.直接退出播放
//直接退出(关闭并释放)
override fun onDestroy() {
super.onDestroy()
mediaPlayer.stop()
mediaPlayer.release()
}
(四)完整代码
activity.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="play"
/>
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="pause"
/>
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:text="stop"
/>
</LinearLayout>
activity.kt文件
package com.example.a134
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
class MainActivity : AppCompatActivity() {
private val mediaPlayer=MediaPlayer()//获取对象
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initMediaPlayer()//初始化播放器
val play:Button=findViewById(R.id.button1)//播放
val pause:Button=findViewById(R.id.button2)//暂停
val stop:Button=findViewById(R.id.button3)//停止
play.setOnClickListener {
if(!mediaPlayer.isPlaying){//判断当前是否播放
mediaPlayer.start()//播放
}
}
pause.setOnClickListener {
if(mediaPlayer.isPlaying){
mediaPlayer.pause()
}
}
stop.setOnClickListener {
if(mediaPlayer.isPlaying){
mediaPlayer.release()//重置
initMediaPlayer()//释放
}
}
}
private fun initMediaPlayer(){
val assetManager=assets//操作assets目录下的音频文件(只存放MP3文件)
val fd=assetManager.openFd("北京欢迎你.mp3")//打开文件(全名包括后缀)
mediaPlayer.setDataSource(fd.fileDescriptor,fd.startOffset,fd.length)
//获取文件数据的基本信息,第一个秒数,第二个偏移量,第三个长度
mediaPlayer.prepare()//调用,进行准备工作。(重置加准备)
}
//直接退出(关闭并释放)
override fun onDestroy() {
super.onDestroy()
mediaPlayer.stop()
mediaPlayer.release()
}
}