在做APP的时候,需要播放声音。就遇到一个情况:
音频播放这块有问题请教一下,下面这段代码在 API34的模拟器中正常运行,在真机API25中就报错,有没有什么解决办法。
代码
package com.android.example.sound
import android.media.MediaPlayer
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.tooling.preview.Previewclass MainActivity : ComponentActivity() {private var mediaPlayer: MediaPlayer? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {AudioPlayerApp(onPlayClicked = {if (mediaPlayer == null) {mediaPlayer = MediaPlayer.create(this, R.raw.beep)}mediaPlayer?.start()})}}override fun onDestroy() {super.onDestroy()mediaPlayer?.release()mediaPlayer = null}
}@Composable
fun AudioPlayerApp(onPlayClicked: () -> Unit) {Box(contentAlignment = Alignment.Center,modifier = Modifier.fillMaxSize()) {Button(onClick = onPlayClicked, modifier = Modifier.padding(16.dp)) {Text(text = "播放音频")}}
}@Preview(showBackground = true)
@Composable
fun DefaultPreview() {AudioPlayerApp(onPlayClicked = {})
}
根本原因
我问了一圈人,给的示例代码都是差不多的,为什么我的就不行呢?
问题的原因竟然是mp3格式支持,wav格式不支持。wav格式高版本支持,低版本报错。
因为这个问题我搞了半天。