I want to capture the volume levels in background even my app is closed. I am using AudioManager. But I am getting below error: ContentObserver (android.os.Handler) in ContentObserver cannot be applied to (java.util.logging.Handler) at private ContentObserver mVolumeObserver = new ContentObserver(mHandler) {
I followed bellow link to resolve my issue: any way to detect volume key presses or volume changes with android service?
Here is my Code:
public class BackGroundServices extends Service {
AudioManager mAudioManager;
Handler mHandler;
private ContentObserver mVolumeObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
if(mAudioManager != null){
final int volume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
Log.e("TEST","VOLUME STREAM IS : " + volume);
}
}
};
@Override
public IBinder onBind(Intent arg0){
return null;
}
@Override
public void onCreate(){
super.onCreate();
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
Uri uri = Settings.System.getUriFor(Settings.System.VOLUME_SETTINGS[AudioManager.STREAM_RING]);
getContentResolver().registerContentObserver(uri, true, mVolumeObserver);
}
@Override
public int onStartCommand(Intent intent, int flag, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
return START_STICKY;
}
@Override
public void onDestroy () {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();
getContentResolver().unregisterContentObserver(mVolumeObserver);
}
}