九江网站网站建设,怀化招标网站,系统重装后 怎么装wordpress,台州做网站需要多少钱以下内容摘自郭霖《第一行代码》第三版
播放音频
MediaPlayer类中常用的控制方法
方法名功能描述setDataSource()设置要播放的音频文件的位置prepare()在开始播放之前调用#xff0c;以完成准备工作start()开始或继续播放音频pause()暂停播放音频reset()将MediaPlayer对象重…以下内容摘自郭霖《第一行代码》第三版
播放音频
MediaPlayer类中常用的控制方法
方法名功能描述setDataSource()设置要播放的音频文件的位置prepare()在开始播放之前调用以完成准备工作start()开始或继续播放音频pause()暂停播放音频reset()将MediaPlayer对象重置到刚刚创建的状态seekTo从指定的位置开始播放音频stop()停止播放音频。调用后的MediaPlayer对象无法再播放音频release()释放与MediaPlayer对象相关的资源isPlaying()判断当前MediaPlayer是否正在播放音频getDuration()获取载入的音频文件的时长
MediaPlayer的工作流程。首先需要创建一个MediaPlayer对象然后调用setDataSource()方法设置音频文件的路径再调用prepare()方法使MediaPlayer进入准备状态接下来调用start()方法就可以开始播放音频调用pause()方法就会暂停播放调用reset()方法就会停止播放。
activity_main.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivityButtonandroid:idid/playandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textPlay /Buttonandroid:idid/pauseandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textPause /Buttonandroid:idid/stopandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textStop //LinearLayoutAndroid Studio允许我们在项目工程中创建一个assets目录并在这个目录下存放任意文件和子目录这些文件和子目录在项目打包时会一并被打包到安装文件中然后我们在程序中就可以借助AssetManager这个类提供的接口对assets目录下的文件进行读取。
那么首先来创建assets目录吧它必须创建在app/src/main这个目录下面也就是和java、res这两个目录是平级的。右击app/src/main→New→Directory在弹出的对话框中输入“assets”目录就创建完成了。
MainActivity
package com.example.playaudiotestimport android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Buttonclass MainActivity : AppCompatActivity() {private val mediaPlayer MediaPlayer()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val play: Button findViewById(R.id.play)val pause: Button findViewById(R.id.pause)val stop: Button findViewById(R.id.stop)initMediaPlayer()play.setOnClickListener {if(!mediaPlayer.isPlaying){mediaPlayer.start() // 开始播放}}pause.setOnClickListener {if(mediaPlayer.isPlaying){mediaPlayer.pause() // 暂停播放}}stop.setOnClickListener {if(mediaPlayer.isPlaying){mediaPlayer.reset() // 停止播放initMediaPlayer()}}}private fun initMediaPlayer(){val assetManager assetsval fd assetManager.openFd(music.mp3)mediaPlayer.setDataSource(fd.fileDescriptor, fd.startOffset, fd.length)mediaPlayer.prepare()}override fun onDestroy() {super.onDestroy()mediaPlayer.stop()mediaPlayer.release()}
}在类初始化的时候我们就先创建了一个MediaPlayer的实例然后在onCreate()方法中调用initMediaPlayer()方法为MediaPlayer对象进行初始化操作。在initMediaPlayer()方法中首先通过getAssets()方法得到了一个AssetManager的实例AssetManager可用于读取assets目录下的任何资源。接着我们调用了openFd()方法将音频文件句柄打开后面又依次调用了setDataSource()方法和prepare()方法为MediaPlayer做好了播放前的准备。
最后在onDestroy()方法中我们还需要分别调用stop()方法和release()方法将与MediaPlayer相关的资源释放掉。