0

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);
}

}

Community
  • 1
  • 1
satyagvns
  • 31
  • 5

1 Answers1

0

You're using wrong import. You are using Android's handler but the import you use is java.util.logging.handler. The error clearly also states what import is expected. So try android.os.handler and error should go away.

gaurav jain
  • 3,119
  • 3
  • 31
  • 48