# WMPFMusicController

> 需 WMPF >= 2.1.0 支持，使用前建议阅读[注意事项](/doc/oplatform/Miniprogram_Frame/api/about)
>
> 2.2.0 开始停止维护，建议使用 WMPFMusicApi 系列接口

## 1. addMusicPlayStatusListener

注册 WMPF 背景音频播放状态变化事件回调。

### 调用参数

| 参数     | 类型                           | 说明                         | 最低版本 |
|----------|--------------------------------|------------------------------|----------|
| listener | WMPFMusicStatusChangedListener | 背景音频播放状态变化事件回调 |          |

### 返回参数

无

## 2. removeMusicPlayStatusListener

取消注册 WMPF 背景音频播放状态变化事件回调。

### 调用参数

| 参数     | 类型                           | 说明                                 | 最低版本 |
|----------|--------------------------------|--------------------------------------|----------|
| listener | WMPFMusicStatusChangedListener | 要取消的背景音频播放状态变化事件回调 |          |

### 返回参数

无

## 3. play

开始播放小程序背景音频。如果当前没有需要播放背景音频的小程序，该函数将没有作用。

该函数只会在暂停播放小程序背景音频后恢复播放，相当于 resume。

## 4. pause

暂停播放小程序背景音频。如果当前没有正在播放背景音频的小程序，该函数将没有作用。

## 5. seek

设置小程序背景音频播放进度。如果当前没有正在播放背景音频的小程序，该函数将没有作用。

### 调用参数

| 参数     | 类型 | 说明                           |
|----------|------|--------------------------------|
| position | int  | 播放进度, 范围 `[0, duration)` |

`duration` 可以通过 `WMPFMusicController.getPlayingMetadta()` 获取。

## 6. previous

要求当前正在播放背景音频的小程序切换上一首。

## 7. stop

停止播放小程序背景音频。如果当前没有正在播放背景音频的小程序，该函数将没有作用。

## 8. playOrPause

切换小程序背景音频播放状态。
- 如果当前有正在播放背景音频的小程序，该函数将暂停播放。
- 如果当前有小程序的背景音频被暂停，该函数将恢复播放。

## 9. next

要求当前正在播放背景音频的小程序切换下一首。

## 10. getPlayingMetadata

获取小程序背景音频播放信息。

### 返回参数

| 类型              | 说明                                                                              |
|-------------------|-----------------------------------------------------------------------------------|
| WMPFMusicMetadata | 音频信息，具体字段参见 [WMPFMusicApi.getPlayingMetadata](getPlayingMetadata) |

## 11. isPlaying

获取当前是否正在播放小程序背景音频。

### 返回参数

| 类型    | 说明                       |
|---------|----------------------------|
| boolean | 是否正在播放小程序背景音频 |

## 12. release

停止监听小程序背景音频变化事件和控制小程序背景音频。

该函数调用后 `WMPFMusicController` 对象将失效。

## 13. 示例代码

```kotlin
val musicController = WMPFMusicController() // 该对象应当只创建一个
musicController.addMusicPlayStatusListener(object : WMPFMusicStatusChangedListener {
    override fun onChanged(newStatus: WMPFMusicPlayStatus) {
        // 在这里监听 newStatus
    }
})

musicController.play()
musicController.pause()
musicController.seek(position)
musicController.previous()
musicController.stop()
musicController.playOrPause()
musicController.next()
val isPlaying: Boolean = musicController.isPlaying()
val metadata = musicController.getPlayingMetadata()

musicController.release()
```
