Android中的MediaPlayer类用于播放媒体文件。这些是音频和视频文件。它也可以用于通过网络播放音频或视频流。因此,在本文中,讨论的内容是:
- MediaPlayer状态图
- 使用MediaPlayer API创建一个简单的音频播放器。看下面的图片。请注意,我们将使用Kotlin语言实施此项目。
MediaPlayer类的状态图
- 使用MediaPlayer播放音频或视频文件是通过状态机完成的。
- 下图是MediaPlayer状态图。
- 在上面的MediaPlayer状态图中,椭圆形表示MediaPlayer实例所处的状态。
- 状态图中显示了两种类型的弧。一个带有单个箭头的箭头表示MediaPlayer实例的同步方法调用,另一个带有两个箭头的箭头表示异步调用。
- 释放方法是MediaPlayer API中的重要元素之一。这有助于释放不再需要为Mediaplayer实例分配的内存资源。请参阅如何在Android中清除或释放音频资源?了解如何释放Mediaplayer分配的内存。这样就可以进行内存管理。
- 如果使用Mediaplayer实例调用stop()方法,则需要为下一次播放做准备。
- 可以使用seekTo()方法将MediaPlayer移到特定的时间位置,以便MediaPlayer实例可以从该指定位置继续播放音频或视频播放。
- 应该使用AudioManager服务对音频播放的焦点进行相应的管理,这将在文章如何在Android中管理音频焦点?中进行讨论。
- 下图是MediaPlayer状态图的摘要版本。
在Android中创建简单的MediaPlayer的步骤
步骤1:创建一个空的活动项目
- 创建一个空的活动Android Studio项目。然后选择Kotlin作为编程语言。
- 参考Android |如何在Android Studio中创建/启动新项目?了解如何创建一个空的活动Android Studio项目。
步骤2:创建原始资源文件夹
- 在res文件夹下创建一个原始资源文件夹,然后复制.mp3文件扩展名之一。
步骤3:使用activity_main.xml文件
- 该应用程序的布局主要由三个按钮PLAY,PAUSE和STOP组成,这三个按钮用于控制MediaPlayer实例的状态。
- 在activity_main.xml文件中调用以下代码以实现UI。
XML
Kotlin
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// create an instance of mediplayer for audio playback
val mediaPlayer: MediaPlayer = MediaPlayer.create(applicationContext, R.raw.music)
// register all the buttons using their appropriate IDs
val bPlay: Button = findViewById(R.id.playButton)
val bPause: Button = findViewById(R.id.pauseButton)
val bStop: Button = findViewById(R.id.stopButton)
// handle the start button to
// start the audio playback
bPlay.setOnClickListener {
// start method is used to start
// playing the audio file
mediaPlayer.start()
}
// handle the pause button to put the
// MediaPlayer instance at the Pause state
bPause.setOnClickListener {
// pause() method can be used to
// pause the mediaplyer instance
mediaPlayer.pause()
}
// handle the stop button to stop playing
// and prepare the mediaplayer instance
// for the next instance of play
bStop.setOnClickListener {
// stop() method is used to completely
// stop playing the mediaplayer instance
mediaPlayer.stop()
// after stopping the mediaplayer instance
// it is again need to be prepared
// for the next instance of playback
mediaPlayer.prepare()
}
}
}
输出界面:
步骤4:使用MainActivity.kt文件
- MediaPlayer实例需要在播放任何音频或视频文件之前设置属性。
- 在MainActivity.kt文件中调用以下内容。添加了注释以便更好地理解。
科特林
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// create an instance of mediplayer for audio playback
val mediaPlayer: MediaPlayer = MediaPlayer.create(applicationContext, R.raw.music)
// register all the buttons using their appropriate IDs
val bPlay: Button = findViewById(R.id.playButton)
val bPause: Button = findViewById(R.id.pauseButton)
val bStop: Button = findViewById(R.id.stopButton)
// handle the start button to
// start the audio playback
bPlay.setOnClickListener {
// start method is used to start
// playing the audio file
mediaPlayer.start()
}
// handle the pause button to put the
// MediaPlayer instance at the Pause state
bPause.setOnClickListener {
// pause() method can be used to
// pause the mediaplyer instance
mediaPlayer.pause()
}
// handle the stop button to stop playing
// and prepare the mediaplayer instance
// for the next instance of play
bStop.setOnClickListener {
// stop() method is used to completely
// stop playing the mediaplayer instance
mediaPlayer.stop()
// after stopping the mediaplayer instance
// it is again need to be prepared
// for the next instance of playback
mediaPlayer.prepare()
}
}
}
输出:在模拟器上运行
想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!