59 lines
2.1 KiB
Java
59 lines
2.1 KiB
Java
/*
|
|
* Copyright (c) 2019 Hemanth Savarala.
|
|
*
|
|
* Licensed under the GNU General Public License v3
|
|
*
|
|
* This is free software: you can redistribute it and/or modify it under
|
|
* the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public License for more details.
|
|
*/
|
|
|
|
package code.name.monkey.retromusic.volume;
|
|
|
|
import android.content.Context;
|
|
import android.media.AudioManager;
|
|
import android.os.Handler;
|
|
import androidx.annotation.NonNull;
|
|
|
|
public class AudioVolumeObserver {
|
|
|
|
private final Context mContext;
|
|
private final AudioManager mAudioManager;
|
|
private AudioVolumeContentObserver mAudioVolumeContentObserver;
|
|
|
|
public AudioVolumeObserver(@NonNull Context context) {
|
|
mContext = context;
|
|
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
|
}
|
|
|
|
public void register(int audioStreamType, @NonNull OnAudioVolumeChangedListener listener) {
|
|
|
|
Handler handler = new Handler();
|
|
// with this handler AudioVolumeContentObserver#onChange()
|
|
// will be executed in the main thread
|
|
// To execute in another thread you can use a Looper
|
|
// +info: https://stackoverflow.com/a/35261443/904907
|
|
|
|
mAudioVolumeContentObserver = new AudioVolumeContentObserver(
|
|
handler,
|
|
mAudioManager,
|
|
audioStreamType,
|
|
listener);
|
|
|
|
mContext.getContentResolver().registerContentObserver(
|
|
android.provider.Settings.System.CONTENT_URI,
|
|
true,
|
|
mAudioVolumeContentObserver);
|
|
}
|
|
|
|
public void unregister() {
|
|
if (mAudioVolumeContentObserver != null) {
|
|
mContext.getContentResolver().unregisterContentObserver(mAudioVolumeContentObserver);
|
|
mAudioVolumeContentObserver = null;
|
|
}
|
|
}
|
|
} |