Android Media Player 随机引发错误并且无法播放

Posted

技术标签:

【中文标题】Android Media Player 随机引发错误并且无法播放【英文标题】:Android Media Player randomly raises error and doesn't play 【发布时间】:2018-06-04 12:09:29 【问题描述】:

我正在为 VS2017 在 Xamarin.android 上制作乐器演奏应用程序(“Walkband”风格)。 我有一个名为playersMediaPlayers 数组。

这是Play函数,其中resid等价于Resource.Raw.filename

public void Play(int resid)
    
        for (int i = 0; i < players.Length; i++)
        
            if (!players[i].IsPlaying)
            
                players[i].Reset();
                players[i] = MediaPlayer.Create(this, resid);
                players[i].Start();
                break;
            
        
    

大多数时候它播放得很好,但偶尔(特别是在快速连续播放许多资源之后)它会无法播放。

成功后的日志是这样的:

06-04 14:52:26.112 I/MediaPlayer(17611): message received msg=2, ext1=0, ext2=0
06-04 14:52:26.112 I/MediaPlayer(17611): playback complete

失败时是这样的:

06-04 14:52:25.933 I/MediaPlayer(17611): message received msg=100, ext1=1, ext2=-19
06-04 14:52:25.933 E/MediaPlayer(17611): error (1, -19)
06-04 14:52:25.933 E/MediaPlayer(17611): Error (1,-19)

资源本身不是问题,因为所有资源大部分都可以正常工作,并且偶尔会失败

【问题讨论】:

嗨,我的回答对你有用吗? 使用MediaPlayer,即使您正确释放所有播放器(我在您的代码中没有看到),您也可以耗尽设备上的可用资源。如果你正在播放的片段很短,那么乔的答案是正确的。 【参考方案1】:

我有一个称为播放器的 MediaPlayer 数组。

您需要使用soundpool,请参考this。

【讨论】:

谢谢,这正是我所需要的!

以上是关于Android Media Player 随机引发错误并且无法播放的主要内容,如果未能解决你的问题,请参考以下文章

C# mediaplayer播放指定区间

android错误之MediaPlayer用法的Media Player called in state *,androidmediaplayer

Android Media Player:开始调用状态4错误(-38,0)

android studio media player null对象引用

Android混淆篇 ijkplayer混淆

Android 拍照 引发 “SecurityException has no access to content://media/...“