2011-12-22 188 views
0

我正在尝试使用MediaPlayer对象播放声音,但尽管我尽了最大的努力,但似乎无法使其运行。声音只是拒绝播放。Android媒体播放器

这是一个短暂的声音,应该在屏幕被触摸时播放,这意味着它必须重复许多次而没有太多延迟。知道这个我遵循状态图http://developer.android.com/reference/android/media/MediaPlayer.html。我似乎无法看到我的方法调用的顺序究竟出了什么问题。

MediaPlayer mp = MediaPlayer.create(this.getContext(), R.raw.select2); 
try { 
    mp.prepare(); 
    mp.start();     
    Log.e("debug","sound played"); 
    } 
catch(Exception e) {} 
mp.stop(); 
+0

无需调用的准备方法.....在第一行会自动准备,你有在onPrepare监听器中启动播放器... – 2011-12-22 11:43:15

+0

谢谢!我不知道OnPreparedListener类。现在正在工作。 – rolledback 2011-12-22 17:26:52

回答

0

你叫prepare()上的媒体播放器,但create()呼叫使用自动准备的球员,这会导致IllegalStateException当您尝试再次调用prepare(),和您发送到您的catch()(你会注意到这一点如果以某种方式处理异常,即打印堆栈跟踪)。

0
MediaPlayer player = MediaPlayer.create(this.getContext(), R.raw.select2); 

我们通过设置它的一些属性配置音乐播放器如下图所示

player.setWakeMode(getApplicationContext()PowerManager.PARTIAL_WAKE_LOCK); 
player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
player.setOnPreparedListener(this); 
player.setOnCompletionListener(this); 
player.setOnErrorListener(this); 
try { 
    player.prepare(); 
    player.start();     
    Log.e("debug","sound played"); 
} catch(Exception e) {} 
    player.stop();