2016-08-10 5 views
0

Я создаю приложение, которое запускает и запускает процесс, когда какой-либо музыкальный плеер играет музыку, и приостанавливает процесс, когда музыка приостанавливается (или во время телефонного разговора); Я думал, что могу просто использовать FileObserver, чтобы посмотреть, когда был загружен музыкальный файл (он должен быть в состоянии сказать, какую песню воспроизводить), но всякий раз, когда у меня работает наблюдатель, и я запускаю музыкальный проигрыватель, кажется, куча файлов для доступа сразу. Мои вопросы:android как сказать, когда музыка играет/приостановлена ​​

  • Есть ли лучший способ (или любой способ) сказать, когда музыка играет от любого игрока?
  • Как остановить предыдущую итерацию метода, вызванного FileObserver, если запущена другая песня?
  • Как «приостановить» запущенный метод, если музыка приостановлена ​​или аудиофокус изменен?

Я не уверен, что если что-то не так с моим наблюдателем, так вот она:

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:

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 [email protected] 
                    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 [email protected] 
                    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 [email protected] 
                    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 [email protected] 
                    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 [email protected] 
                    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, и любая помощь будет принята с благодарностью.

ответ

0

Вы можете использовать API AudioManager, чтобы легко проверить, играет ли музыка в данный момент.

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); if (audioManager.isMusicActive()) { // music is playing }

См: AudioManager.isMusicActive()

+0

Спасибо; поиск этого привел меня к [этому] (https://stackoverflow.com/questions/3616956/how-to-get-current-playing-song-details-from-mediaplayer), чтобы узнать, как получить информацию о треке , также. Теперь мне просто нужна помощь в последних двух вещах ... – badmexican333

+0

Пример использования добавлен. Кто-то хочет объяснить нижний план? –

Смежные вопросы