如何让android媒体播放器播放声音?
我不知道为什么它不起作用,logcat中没有记录错误,但我听不到声音。
public static void DeclararSonido(int numero, Context contexto){ switch(numero){ case 0: mp = MediaPlayer.create(contexto, R.raw.alan); break; } } public static void TocarPiedra( int posicion, Context contexto){ DeclararSonido(posicion, contexto); mp.start(); mp.stop(); mp.release(); } public static void TocarSirena(Context contexto){ MediaPlayer mp2= MediaPlayer.create(contexto, R.raw.doh); mp2.start(); mp2.stop(); mp2.release(); }
如果我擦除mp2.stop();
和mp2.release();
AND mp.stop();
和mp.release();
应用程序播放声音,但文件未发布…
你当然不想马上开始然后立即停止..
问题是你正在紧接着执行这些:
mp.start(); // starts playback mp.stop(); // .. then stops immediately .. mp.release();
你应该打电话给start,然后当声音完成播放时,释放。 您可以使用Completion事件来挂接侦听器并在那里释放:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){ public void onCompletion(MediaPlayer player) { player.release(); } })
Mediaplayer.create(): – 创建媒体播放器的新对象。该对象具有来自原始文件夹的音乐文件,当调用start()方法时将播放该文件
Mediaplayer.start(): – *如果初始化对象Mediaplayer,则开始播放音乐 *。另外提供exception。
Mediaplayer.stop(): – * 停止 *当前正在播放的音乐与该对象。
Mediaplayer.release() : – 音乐文件路径不再与Mediaplayer对象关联 。 所以你需要重新分配内存和所有。 介意它的媒体播放器不会为空 。
去这里看看媒体播放器的状态图
现在你正在做的是启动歌曲并直接停止它 。我建议你创建按钮 ,当按下按钮时停止媒体播放器。
其他方式已由Miky Dinescu给出了setoncompletelistner。
所以,做如下
public static void DeclararSonido(int numero, Context contexto){ switch(numero){ case 0: mp = MediaPlayer.create(contexto, R.raw.alan); break; } } public static void TocarPiedra( int posicion, Context contexto){ DeclararSonido(posicion, contexto); mp.start(); mp.setOnCompleteListener(new OnCompleteListener(){ public void OnCompletion(MediaPlayer mp){ mp.stop(); mp.release(); }}); } public static void TocarSirena(Context contexto){ MediaPlayer mp2= MediaPlayer.create(contexto, R.raw.doh); //Alomejor es por la extension mp2.start(); mp2.setOnCompleteListener(new OnCompleteListener(){ public void OnCompletion(MediaPlayer mp){ mp2.stop(); mp2.release(); }}); }