首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android如何分辨音乐何时播放/暂停

android如何分辨音乐何时播放/暂停
EN

Stack Overflow用户
提问于 2016-08-10 22:39:51
回答 1查看 723关注 0票数 0

我正在制作一个应用程序,每当任何音乐播放器播放音乐时,它都会启动和运行一个进程,并在音乐暂停时(或者在电话通话期间)暂停这个过程;我想我可以使用FileObserver来查看音乐文件何时被访问(它需要能够判断播放的是哪首歌),但是每当我让观察者运行并启动音乐播放器时,一堆文件似乎马上就被访问了。我的问题是:

  • 是否有更好的方法(或任何方法)来判断音乐何时从任何播放器中播放?
  • 如果启动了另一首歌曲,如何停止FileObserver调用的方法的前一次迭代?
  • 如果音乐暂停或声音焦点发生变化,我如何“暂停”运行的方法?

我不确定我的观察者是不是出了什么问题,下面是:

代码语言:javascript
运行
复制
    observer = new FileObserver(observedPath) {

        @Override
        public void onEvent(int event,final String file) {

            event &= FileObserver.ALL_EVENTS;
            switch(event) {
                case FileObserver.DELETE_SELF:
                    break;

                case FileObserver.OPEN:
                case FileObserver.ACCESS:

                    if(changesRunning > 0)
                    {
                        stopCurrentChange.post(new Runnable() {
                            @Override
                            public void run() {
                                return;
                            }
                        });
                    }
                    mainThreadHandler.post(new Runnable() {
                        @Override
                        public void run()
                        {
                            Log.v(TAG,"The event was triggered.");
                        }
                    });
                    handler.post(new Runnable() {

                        @Override
                        public void run() {
                            changesRunning++;//global variable being used
                            GatherChangeVolume(username, deviceName, file);
                            changesRunning = 0;
                        }
                });
                    break;
                default:
                    break;
            }

这是我的logcat输出:

代码语言:javascript
运行
复制
08-10 17:30:19.874 3398-3398/badmexican333.volumizer17 V/TweakRunner: Service trying to watch /storage/sdcard1/Music/
08-10 17:30:34.309 3398-3398/badmexican333.volumizer17 V/TweakRunner: The event was triggered.
08-10 17:30:34.310 3398-3799/badmexican333.volumizer17 A/FileObserver: Unhandled exception in FileObserver badmexican333.volumizer17.TweakRunner$1@21c3ca00
                                                                   java.lang.NullPointerException
                                                                       at badmexican333.volumizer17.TweakRunner$1.onEvent(TweakRunner.java:123)
                                                                       at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125)
                                                                       at android.os.FileObserver$ObserverThread.observe(Native Method)
                                                                       at android.os.FileObserver$ObserverThread.run(FileObserver.java:88)
08-10 17:30:34.314 3398-3799/badmexican333.volumizer17 A/FileObserver: Unhandled exception in FileObserver badmexican333.volumizer17.TweakRunner$1@21c3ca00
                                                                   java.lang.NullPointerException
                                                                       at badmexican333.volumizer17.TweakRunner$1.onEvent(TweakRunner.java:123)
                                                                       at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125)
                                                                       at android.os.FileObserver$ObserverThread.observe(Native Method)
                                                                       at android.os.FileObserver$ObserverThread.run(FileObserver.java:88)
08-10 17:30:34.314 3398-3398/badmexican333.volumizer17 V/TweakRunner: The event was triggered.
08-10 17:30:34.318 3398-3398/badmexican333.volumizer17 V/TweakRunner: The event was triggered.
08-10 17:30:34.319 3398-3799/badmexican333.volumizer17 A/FileObserver: Unhandled exception in FileObserver badmexican333.volumizer17.TweakRunner$1@21c3ca00
                                                                   java.lang.NullPointerException
                                                                       at badmexican333.volumizer17.TweakRunner$1.onEvent(TweakRunner.java:123)
                                                                       at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125)
                                                                       at android.os.FileObserver$ObserverThread.observe(Native Method)
                                                                       at android.os.FileObserver$ObserverThread.run(FileObserver.java:88)
08-10 17:30:34.425 3398-3398/badmexican333.volumizer17 V/TweakRunner: The event was triggered.
08-10 17:30:34.425 3398-3799/badmexican333.volumizer17 A/FileObserver: Unhandled exception in FileObserver badmexican333.volumizer17.TweakRunner$1@21c3ca00
                                                                   java.lang.NullPointerException
                                                                       at badmexican333.volumizer17.TweakRunner$1.onEvent(TweakRunner.java:123)
                                                                       at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125)
                                                                       at android.os.FileObserver$ObserverThread.observe(Native Method)
                                                                       at android.os.FileObserver$ObserverThread.run(FileObserver.java:88)
08-10 17:30:34.480 3398-3799/badmexican333.volumizer17 A/FileObserver: Unhandled exception in FileObserver badmexican333.volumizer17.TweakRunner$1@21c3ca00
                                                                   java.lang.NullPointerException
                                                                       at badmexican333.volumizer17.TweakRunner$1.onEvent(TweakRunner.java:123)
                                                                       at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125)
                                                                       at android.os.FileObserver$ObserverThread.observe(Native Method)
                                                                       at android.os.FileObserver$ObserverThread.run(FileObserver.java:88)
08-10 17:30:34.484 3398-3398/badmexican333.volumizer17 V/TweakRunner: The event was triggered.
08-10 17:30:34.571 3398-3398/badmexican333.volumizer17 V/TweakRunner: The event was triggered.

在停止之前,输出在这种模式下持续一段时间。

我是android开发公司的新手,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-08-10 22:48:38

您可以使用AudioManager API轻松地检查音乐当前是否正在播放。

代码语言:javascript
运行
复制
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (audioManager.isMusicActive()) {
    // music is playing
}

请参阅:AudioManager.isMusicActive()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38884698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档