【问题标题】:Working with MP3 sound in Processing for Android ( need to stop )在 Processing for Android 中使用 MP3 声音(需要停止)
【发布时间】:2013-06-30 03:43:59
【问题描述】:

我正在使用 Processing 2.0 为 Android 设备开发应用程序,现在我有 playMP3();功能,但需要使用 stopMP3(); 停止声音。我尝试了所有方法,但加载 mp3 和播放/停止使用处理的最佳方法是什么?, snd.stop();内stopMP3功能不起作用...

import android.media.*;
import android.content.res.*;

...

MediaPlayer snd;

...

    void setup()
{
MediaPlayer snd = new MediaPlayer();
}

...

void playMP3()
    { 
try {
    AssetManager assets = this.getAssets();
    AssetFileDescriptor fd = assets.openFd("loop1.mp3");
    snd.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength());
    snd.prepare();
    snd.start();
  snd.setLooping(true);
  }
  catch (IllegalArgumentException e) {
    e.printStackTrace();
  }
  catch (IllegalStateException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  }

}

void stopMP3(){
????
}

【问题讨论】:

  • 你在哪里调用 stop()?您是否尝试过使用按钮确保 mp3 至少在您执行停止之前已启动?
  • 你可以创建 OnCompletionListener 并在音乐结束时停止,或者创建一个按钮在用户点击时调用 snd.stop()
  • @eskimoapps.com 我在 playMP3() 函数之前有一个按钮,用于启动声音循环。但是不知道如何在stop函数里面停止它,可能手机上有一个命令从内存中删除声音或变量,不知道。提前谢谢你
  • @Leon_SFS 我已经有一个调用 playMP3() 函数的按钮和一个也调用 stopMP3() 函数但不知道最后一个函数中可能包含什么代码的 if 语句。感谢您的帮助
  • @DavidVera 我写了停止函数! snd.stop();snd.release();snd.reset();把这些代码写在你的stopmp3函数里,sns就是你的MediaPlayer变量名---这就是你想要的吗?

标签: android audio mp3 processing


【解决方案1】:

这是一个简单的媒体播放器示例

private MediaPlayer   m_Player;

//Start Play Function
private void startPlaying() {
    m_Player = new MediaPlayer();
    m_Player.setOnCompletionListener(onComplete);
    try {
        if(m_Player.isPlaying())
            stopPlaying();

        m_Player.setDataSource(m_FileName);
        m_Player.prepare();
        m_Player.start();

    } catch (IOException e) {

    }
}

//Stop Play Function
private void stopPlaying() {
    m_Player.stop();
    m_Player.reset();
    m_Player = null;
}

//and this is onComplete Listener
MediaPlayer.OnCompletionListener onComplete = new OnCompletionListener()
{

    @Override
    public void onCompletion(MediaPlayer mp)
    {
        stopPlaying();
    }
};

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多