繁体   English   中英

如何让android媒体播放器播放声音?

[英]How can I make android mediaplayer play sound?

我不知道为什么它不起作用,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,则开始播放音乐 *。另外提供异常。

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();
    }});


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM