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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值