I am making an app which starts and runs a process whenever any music player is playing music, and pauses the process when the music is paused(or during a phone call); I thought I could just use FileObserver to see when a music file was accessed(it needs to be able to tell which song is being played), but whenever I have the observer running and I start a music player, a bunch of the files seem to be accessed at once. My questions are:
- Is there a better way(or any way) to tell when music is playing from any player?
- how do I stop the previous iteration of the method called by FileObserver from running if another song is started?
- How do I "pause" the method running if the music is paused or the audiofocus is changed?
I'm not sure if there's something wrong with my observer, so here it is:
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;
}
This was my logcat output:
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.
The output carries on on in this pattern for a little longer before stopping.
I'm new at android development, and any help would be greatly appreciated.