【问题标题】:MediaPlayer to play sound effectsMediaPlayer 播放音效
【发布时间】:2014-04-09 12:10:59
【问题描述】:

我有一个应用程序,它使用 Android MediaPlayer 功能在单击 ImageButton 时播放音效,如下所示:

final MediaPlayer LowTomPlayer = MediaPlayer.create(HomeScreen.this, R.raw.low_tom);
ImageButton btn_low_tom = (ImageButton) findViewById(R.id.low_tom);

btn_low_tom.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        if(LowTomPlayer.isPlaying())
        {  
            LowTomPlayer.pause();
            LowTomPlayer.start();
        }
        else
            LowTomPlayer.start();



    }

});

唯一的问题是,因为我告诉它在播放效果时暂停,然后重新开始,它不会改变任何东西。

有问题的音效大约是一秒长,所以如果用户在此时间内再次敲击按钮以再次播放声音,则不会。我希望它能够在播放时停止效果,然后在用户再次单击按钮时从头开始重新启动它。

我发现如果不将媒体播放器清除回未初始化状态,就无法停止它。我要问的是,是否有人可以在不创建大量不同媒体播放器的情况下找出具有相同效果的语法。

如果有什么不清楚的地方,尽管问。提前致谢。

【问题讨论】:

    标签: android audio android-mediaplayer


    【解决方案1】:
    final MediaPlayer LowTomPlayer = MediaPlayer
            .create(this, R.raw.low_tom);
    try {
        LowTomPlayer.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    ImageButton btn_low_tom = (ImageButton) findViewById(R.id.low_tom);
    
    btn_low_tom.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View v) {
    
            if (LowTomPlayer.isPlaying()) {
                LowTomPlayer.pause();
            } else
                LowTomPlayer.start();
    
        }
    
    });
    

    试试这个代码。

    【讨论】:

    • 其实,从头开始,它
    • 只会在您再次按下按钮时暂停它,然后完成其余的音频剪辑。每次您按下按钮时,我都需要它从头开始。一个想法?
    • 你试过把 LowTomPlayer.stop();而不是 LowTomPlayer.pause();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多