blob: c2b94c3f85386475f8e8ddbdfd89afc0125f8897 [file] [log] [blame]
package dev.cobalt.coat;
import static dev.cobalt.util.Log.TAG;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
/** VolumeStateReceiver monitors Android media broadcast to capture volume button events. */
final class VolumeStateReceiver extends BroadcastReceiver {
public static final String VOLUME_CHANGED_ACTION = "android.media.VOLUME_CHANGED_ACTION";
public static final String EXTRA_VOLUME_STREAM_VALUE = "android.media.EXTRA_VOLUME_STREAM_VALUE";
public static final String EXTRA_PREV_VOLUME_STREAM_VALUE =
"android.media.EXTRA_PREV_VOLUME_STREAM_VALUE";
public static final String STREAM_MUTE_CHANGED_ACTION =
"android.media.STREAM_MUTE_CHANGED_ACTION";
VolumeStateReceiver(Context appContext) {
IntentFilter filter = new IntentFilter();
filter.addAction(VOLUME_CHANGED_ACTION);
filter.addAction(STREAM_MUTE_CHANGED_ACTION);
appContext.registerReceiver(this, filter);
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(VOLUME_CHANGED_ACTION)) {
int newVolume = intent.getIntExtra(EXTRA_VOLUME_STREAM_VALUE, 0);
int oldVolume = intent.getIntExtra(EXTRA_PREV_VOLUME_STREAM_VALUE, 0);
int volumeDelta = newVolume - oldVolume;
Log.d(TAG, "VolumeStateReceiver capture volume changed, volumeDelta:" + volumeDelta);
nativeVolumeChanged(volumeDelta);
} else if (intent.getAction().equals(STREAM_MUTE_CHANGED_ACTION)) {
Log.d(TAG, "VolumeStateReceiver capture mute changed.");
nativeMuteChanged();
}
}
private native void nativeVolumeChanged(int volumeDelta);
private native void nativeMuteChanged();
}