📜  Android中的MediaPlayer类

📅  最后修改于: 2021-05-09 18:25:31             🧑  作者: Mango

Android中的MediaPlayer类用于播放媒体文件。这些是音频和视频文件。它也可以用于通过网络播放音频或视频流。因此,在本文中,讨论的内容是:

  • MediaPlayer状态图
  • 使用MediaPlayer API创建一个简单的音频播放器。看下面的图片。请注意,我们将使用Kotlin语言实施此项目。

Android中的Mediaplayer类

MediaPlayer类的状态图

  • 使用MediaPlayer播放音频或视频文件是通过状态机完成的。
  • 下图是MediaPlayer状态图。

MediaPlayer类的状态图

  • 在上面的MediaPlayer状态图中,椭圆形表示MediaPlayer实例所处的状态。

  • 状态图中显示了两种类型的弧。一个带有单个箭头的箭头表示MediaPlayer实例的同步方法调用,另一个带有两个箭头的箭头表示异步调用。

MediaPlayer类的状态图

  • 释放方法是MediaPlayer API中的重要元素之一。这有助于释放不再需要为Mediaplayer实例分配的内存资源。请参阅如何在Android中清除或释放音频资源?了解如何释放Mediaplayer分配的内存。这样就可以进行内存管理。
  • 如果使用Mediaplayer实例调用stop()方法,则需要为下一次播放做准备。
  • 可以使用seekTo()方法将MediaPlayer移到特定的时间位置,以便MediaPlayer实例可以从该指定位置继续播放音频或视频播放。
  • 应该使用AudioManager服务对音频播放的焦点进行相应的管理,这将在文章如何在Android中管理音频焦点?中进行讨论。
  • 下图是MediaPlayer状态图的摘要版本。

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


输出界面:

Android中的Mediaplayer类

步骤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的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!