2016-08-10 3 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; 
      } 

:

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. 

출력은에에에 전달 이 패턴은 조금 더 오래 멈추기 전에.

나는 안드로이드 개발에 새로운 있으며, 어떤 도움을 주시면 대단히 감사하겠습니다.

답변

0

AudioManager API를 사용하면 음악이 현재 재생되는지 쉽게 확인할 수 있습니다.

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

참조 :

+0

AudioManager.isMusicActive() 감사합니다; 그것에 대한 검색은 [this] (https://stackoverflow.com/questions/3616956/how-to-get-current-playing-song-details-from-mediaplayer) 트랙의 세부 사항을 얻는 방법에 대한 약간의 설명이되었습니다. ,뿐만 아니라. 이제 마지막 두 가지에 대한 도움이 필요합니다 ... – badmexican333

+0

사용 예제가 추가되었습니다. 누군가 downvote를 설명해 주겠다고? –

관련 문제