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