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文件为线性结构,然后创建三个按钮(分别为播放、暂停和停止)

<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()
    }
}

猜你喜欢

转载自blog.csdn.net/m0_61059796/article/details/130753806
今日推荐