【问题标题】:Android play sound until explicitly stoppedAndroid 播放声音直到明确停止
【发布时间】:2014-06-11 14:50:30
【问题描述】:

已经有人编写了代码,用于在给定时间内生成具有特定频率的音调。此处给出了 SO 链接:How to Generate A Particular Sound Frequency?

我需要的是无限期地播放声音,而不是 3 秒。我希望在单击按钮或类似的东西时停止播放声音。我在想也许我可以使用计时器功能一遍又一遍地重复相同的循环。当用户单击“停止”按钮时,我想调用 audiotrack.pause 或停止。这是一个很好的方法还是有更好的逻辑?

【问题讨论】:

    标签: android timer frequency audiotrack


    【解决方案1】:

    参考这个。 http://developer.android.com/reference/android/media/MediaPlayer.html

    //Declare a new object
    
    MediaPlayer Mp3=new MediaPlayer();
    
    //Then set path of file
    Mp3.setDataSource(“sdcard/filename.mp3”);
    
    //Before playing audio, call prepare
    Mp3.prepare();
    
    //For Looping (true = looping; false = no looping)
    Mp3.setLooping(true);
    
    //To play audio ,call
    Mp3.start();
    
    //To pause, call
    Mp3.pause
    
    //To stop audio, call
    Mp3.stop(); 
    

    大功告成!

    【讨论】:

    • 谢谢,但我不想播放任何文件。我想产生具有一定频率的音调。我不确定我是否可以使用媒体播放器。
    • @Susheel 将它们结合起来。将参数从其他类传递给 MediaPlayer。另一个类将作为 MediaPlayer 的源。
    • 我会尝试并告诉你。
    • 当然没问题。如果对您有用,请投票并接受我的回答!
    • 在 mediaplayer 中设置源的唯一方法似乎是 setdatasource。我不确定如何将生成的样本数据(以字节为单位)设置为媒体播放器的输入。有什么想法吗?
    【解决方案2】:

    感谢 Boggartfly,但我找到了一个更简单的解决方案。我可以简单地循环音轨对象。

    我使用了以下代码。

             audioTrack.setLoopPoints(0, generatedSnd.length/4, -1);
    

    起始帧为零。对于 16 位 PCM,结束帧是长度/4。这里的负 1 表示循环无限次。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多