kotlin Android Studio Media Player无法启动

vfhzx4xs  于 2023-03-24  发布在  Kotlin
关注(0)|答案(1)|浏览(184)
class MusicPlayer(c: Context){
    var context: Context = c
    private var player: MediaPlayer = MediaPlayer.create(context,R.raw.sth)

    fun start() {
        Log.d("Music", context.toString())
        player.setOnPreparedListener(OnPreparedListener {
            Log.i(
                "Music",
                "player: $player"
            )
        })
        player.isLooping = false
        player.setVolume(1F, 1F)
        Log.d("Music", "START")
        player.start()
        Log.d("Music", "AFTER START")
    }
}

我有一个简单的类来控制音乐的开始。start()被另一个Activity调用为:

class MainActivity : AppCompatActivity(){

    private lateinit var player: MusicPlayer
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        player = MusicPlayer(this)

        player.start()
    }
}

日志记录start()中的所有内容,所以我认为player.start()正在通过,但即使我在Emulator上设置了最大音量也没有声音。. mp3文件在raw文件夹中。

wwwo4jvm

wwwo4jvm1#

你用来在你的MediaPlayer上设置音量的函数应该没问题。

public void setVolume (float leftVolume, float rightVolume)

设置本播放器的音量推荐使用此API,用于均衡应用内的音频流输出,除非您是编写应用来控制用户设置,否则应优先使用此接口,而不是AudioManager#setStreamVolume(int,int,int),它设置特定类型的所有流的音量。请注意,传递的音量值是范围为0.0到1.0的原始标量。UI控件应按对数缩放。

因此,在尝试下面的进一步建议之前,您可以看看以下内容:
1.你的mp3文件可以播放吗?
1.你能确保你的模拟器的最大音量是用于播放媒体吗?不是用于播放铃声或闹钟吗?
1.你的模拟器能发出声音吗?你能试试另一个模拟器吗?或者甚至找一个真实的的设备试试?
如果以上方法都不起作用,您可以考虑对全局卷进行如下操作:

fun start() {
    player.setOnPreparedListener(MediaPlayer.OnPreparedListener {
        Log.i("Music", "player: $player")
    })
    player.isLooping = true
    // Set global volume
    val audioManager = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager
    val maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, 0)
    // Also set your Media Player to use Music Stream
    player.setAudioAttributes(AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build())
    Log.d("Music", "START")
    player.start()
    Log.d("Music", "AFTER START")
}

当您在App中修改音频设置时,请确保您已在Manifest文件中添加了相应的权限:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

相关问题