gpt4 book ai didi

android - 服务结束时发出通知声

转载 作者:行者123 更新时间:2023-12-03 00:20:33 27 4
gpt4 key购买 nike

我有一项服务,当它完成运行任务时,它会播放声音通知。结束时,我的调用应用程序(如果在最上面)调用了stopservice。问题在于,notificationmanager在声音结束之前返回,因此应用程序会在声音结束(如果很长)之前停止服务。有没有一种方法可以检测到声音何时结束,以便不让服务在声音结束之前停止?
我一直在研究soundmanager和其他主题,但没有运气。另外,一种解决方法是放入Thread.sleep(ms),但是如果通知声音很长,则无论如何它都可以停止,我希望在服务完成后立即对我的应用程序负责。
一个可能的解决方案是计算mp3文件的长度,但我不知道该怎么做...。

最佳答案

假设您使用MediaPlayer进行播放,则可以使用MediaPlayer.getDuration()获得持续时间。

请注意,这不适用于某些VBR mp3。因此,您可能需要以恒定的比特率保存mp3或运行vbrfix之类的工具,然后再将其放入应用中。

持续时间以毫秒为单位返回,因此您可以简单地将此值传递给SystemClock.sleep()
/编辑:

好的,如果您将文件另存为 Assets ,则可以使用以下代码:

MediaPlayer media = new MediaPlayer();
AssetFileDescriptor descriptor;
try {
descriptor = assetMan.openFd("YOURNAME.mp3");
media.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
media.prepare();
} catch (IOException e) {
// File not found
e.printStackTrace();
}
media.getDuration();
media.release();

关于android - 服务结束时发出通知声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com