【问题标题】:How to code Audio in app?如何在应用程序中编码音频?
【发布时间】:2012-12-03 23:03:19
【问题描述】:

一些背景

我制作的应用程序是一个间隔应用程序。这允许用户为两个间隔中的每一个选择时间量。运行时,应用程序会使用用户选择的两个时间设置运行倒计时计时器。我想在每个间隔播放两首歌曲,但我无法设置歌曲更改的具体时间,因为用户会更改。因此,如果用户只为第一个间隔选择 4 秒,我只需要播放这首歌,而当倒计时从另一个间隔开始时,我需要播放另一首歌曲。

现在是我真正的问题。

如何调用音频播放?我看了很多问题,但他们都说我需要把音频播放器放在一个新的活动中?如果我把它放在一个新的活动中,它不会停止倒数计时器吗?我怎样才能让倒数计时器继续运行?

【问题讨论】:

    标签: android audio


    【解决方案1】:

    你有两种在android中播放声音的方法,一种是SoundBoard(专为短片设计,如果你想播放歌曲就不要使用它),另一种是MediaPlayer。您可以通过将文件放入 raw 文件夹然后执行以下操作来播放音频:

    MediaPlayer mp = MediaPlayer.create(ClassName.this, R.raw.sound); 
    mp.start();  
    

    然后当计时器结束时,您可以使用mp.stop(); 停止歌曲,然后您可以通过以下方式播放以下音频文件:

    mp.reset();  
    mp = MediaPlayer.create(ClassName.this, R.raw.sound2);  
    

    完成后记得使用mp.release(); 释放媒体播放器。

    我希望我明白你需要做什么,你也应该把媒体播放器放在一个新线程中,从官方 android 开发者文档中看到这个:

    为避免挂起您的 UI 线程,请生成另一个线程来准备 MediaPlayer 并在完成时通知主线程。然而,当你 可以自己写线程逻辑,这种模式很常见 使用 MediaPlayer 时,该框架提供了一种方便的方法来 使用 prepareAsync() 方法完成此任务。这种方法 开始在后台准备媒体并立即返回。 当媒体准备好后,onPrepared() 方法 MediaPlayer.OnPreparedListener,通过配置 调用 setOnPreparedListener()。

    【讨论】:

    • 好的,这是有道理的。有什么方法可以让用户从他们自己的手机歌曲库中选择他/她想要播放的歌曲?
    • 是的,这是可能的。您只需要获取文件的路径,播放外部文件请参见此示例:android-er.blogspot.it/2010/07/…,另请查看 this 以获取文件资源管理器。
    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 2015-06-11
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多