您如何检测声音文件何时完成?

Posted

技术标签:

【中文标题】您如何检测声音文件何时完成?【英文标题】:How do you detect when a sound file has finished? 【发布时间】:2011-11-14 03:26:33 【问题描述】:

我正在广播接收器活动中使用此代码播放声音文件:

notification.sound = Uri.parse("android.resource://emad.app/raw/seven_chimes");

我想检测此文件何时播放完毕。

我尝试了这样的循环,但我认为这仅对媒体播放器有好处,因为即使我确定声音文件仍在播放,它总是 = false:

/*
 * Stay here until the chime sound is finished.
 */
   while (manager.isMusicActive())
   

你能告诉我应该用什么来代替manager.isMusicActive()吗?

【问题讨论】:

【参考方案1】:

您可以使用 MediaPlayer 类并添加一个 Completion 侦听器,以便在声音播放完毕时激活

MediaPlayer mp = MediaPlayer.create(this,Uri.parse("android.resource://emad.app/raw/seven_chimes"));

mp.setOnCompletionListener(new OnCompletionListener() 

    @Override
    public void onCompletion(MediaPlayer mp) 
        performOnEnd();
    

);

mp.start();

【讨论】:

嗨 Ronny,我尝试了代码,但收到一条错误消息:MediaPlayer is not applicable for the arguments (new OnCompletionListener())。 嗨 Emad,您需要添加 import android.media.MediaPlayer.OnCompletionListener;所以它会识别它。 嗨 Ronny,我添加了导入并且不得不将“this”更改为“context”,但在 OnCletionListener 行上仍然出现相同的错误。还缺少什么吗?谢谢。真的,埃马德 嗨,这很奇怪,因为它是一种非常严格的方法。您使用的 API 版本是什么?错误信息是什么?当您按 control+1(或 command + 1)时,Eclipse 的建议是什么?您可以将“this”作为参数传递,mp.setOnCompletionListener(this);它会建议您实现 OnCompletionListener 并且您可以将 onCompletion 方法添加到您的类中。希望它有所帮助:) 嗨 Ronny,它适用于 Android 1.6,并且在广播接收器活动中。我发现我还必须包括“import android.media.MediaPlayer.OnCompletionListener;”得到它没有错误。非常感谢帮忙。真的,埃马德【参考方案2】:

不适用于广播接收器,但这对我当前使用 Kotlin 跟踪音频文件何时播放完毕的项目有效。

playButton.setOnClickListener 

            if (isPlaying) 
                pauseSound()
            else 
                playSound()
            

            mediaPlayer.setOnCompletionListener 
                playButton.text = "Play"
                isPlaying = false
            
        

isPlaying 是布尔值,如果有人感到困惑,我会解释更多。希望它在未来对其他人有所帮助。编码愉快!

【讨论】:

【参考方案3】:

尝试使用服务播放音乐.. 播放一次后,停止您的服务,您可以在 onDestroy() 服务方法上添加您的程序.. 希望对你有帮助:)

【讨论】:

嗨迈克尔,我也想试试你的方法。你能展示一个代码示例供我试用吗?谢谢。真的,埃马德

以上是关于您如何检测声音文件何时完成?的主要内容,如果未能解决你的问题,请参考以下文章

montouch 检测声音何时播放完毕

Xcode iOS:如何使用 AVFoundation 重置声音

是否可以检测系统何时录制声音,然后在 Python 上执行一些操作?

ALSA:如何判断声音何时播放完毕

使用 Python 在 Windows 上检测系统声音

在 C# 中确定声音何时完成播放