Kotlin MediaPlayer 简单使用
Kotlin MediaPlayer simple usage
我是 Kotlin 的新手,正在尝试制作一个简单的 AudioManager(包装 MediaPlayer)。
我想让 class 播放音频。
这是我的 class:
package com.example.myappname
import android.media.MediaPlayer
interface AudioManagerInput {
fun startSound()
fun stopSound()
}
class AudioManager: AudioManagerInput {
// Instance variables
private var mediaPlayer: MediaPlayer? = null
// AudioManagerInput methods
override fun startSound() {
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer()
mediaPlayer?.setDataSource("R.raw.songone") // ???
}
mediaPlayer?.start()
}
override fun stopSound() {
mediaPlayer?.stop()
}
}
我在设置歌曲时遇到问题。
我正在寻找加载本地文件 R.raw.songone
,这是一个位于 res/raw
.
中的 .wav 文件
如何获取字符串路径?
我搜索了包含使用 MediaPlayer 的其他解决方案的教程,但遇到了不知道要导入什么、无法调用 create
或找不到 context
等问题(无论如何那就是)。
将上下文导入 AudioManager:
import android.content.Context
修改class或者是这样的方法签名:
class AudioManager(private val context: Context): AudioManagerInput
现在我们可以将上下文传递给 MediaPlayer
:
override fun startSound() {
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer.create(context, R.raw.yourSound);
}
mediaPlayer?.start()
}
从 Activity 初始化您的 AudioManager:
var audioManager = AudioManager(this)
要手动访问 raw
个文件:Read/write from res/raw by name。
我是 Kotlin 的新手,正在尝试制作一个简单的 AudioManager(包装 MediaPlayer)。
我想让 class 播放音频。
这是我的 class:
package com.example.myappname
import android.media.MediaPlayer
interface AudioManagerInput {
fun startSound()
fun stopSound()
}
class AudioManager: AudioManagerInput {
// Instance variables
private var mediaPlayer: MediaPlayer? = null
// AudioManagerInput methods
override fun startSound() {
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer()
mediaPlayer?.setDataSource("R.raw.songone") // ???
}
mediaPlayer?.start()
}
override fun stopSound() {
mediaPlayer?.stop()
}
}
我在设置歌曲时遇到问题。
我正在寻找加载本地文件 R.raw.songone
,这是一个位于 res/raw
.
如何获取字符串路径?
我搜索了包含使用 MediaPlayer 的其他解决方案的教程,但遇到了不知道要导入什么、无法调用 create
或找不到 context
等问题(无论如何那就是)。
将上下文导入 AudioManager:
import android.content.Context
修改class或者是这样的方法签名:
class AudioManager(private val context: Context): AudioManagerInput
现在我们可以将上下文传递给 MediaPlayer
:
override fun startSound() {
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer.create(context, R.raw.yourSound);
}
mediaPlayer?.start()
}
从 Activity 初始化您的 AudioManager:
var audioManager = AudioManager(this)
要手动访问 raw
个文件:Read/write from res/raw by name。