package com.droidcool.music;
import android.content.ComponentName;
import android.content.Context;
import android.media.AudioManager;
import android.media.AudioManager.OnAudioFocusChangeListener;
import android.util.Log;
public class Api8 {
public static Object getOnAudioFocusChangeListener(final MediaPlaybackService service) {
if (Const.sdk >= 8) {
return new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
// AudioFocus is a new feature: focus updates are made verbose on purpose
switch (focusChange) {
case AudioManager.AUDIOFOCUS_LOSS:
if(service.isPlaying()) {
service.mPausedByTransientLossOfFocus = false;
service.pause();
}
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
if(service.isPlaying()) {
service.mPausedByTransientLossOfFocus = true;
service.pause();
}
break;
case AudioManager.AUDIOFOCUS_GAIN:
if(!service.isPlaying() && service.mPausedByTransientLossOfFocus) {
service.mPausedByTransientLossOfFocus = false;
service.startAndFadeIn();
}
break;
default:
}
}
};
} else {
return null;
}
}
public static void abandonAudioFocus(AudioManager manager, Object listerner) {
manager.abandonAudioFocus((OnAudioFocusChangeListener) listerner);
}
public static void play(final MediaPlaybackService service, AudioManager manager, Object listerner) {
manager.requestAudioFocus((OnAudioFocusChangeListener) listerner, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
manager.registerMediaButtonEventReceiver(new ComponentName(service.getPackageName(),
MediaButtonIntentReceiver.class.getName()));
}
public static AudioManager getAudioManager(final MediaPlaybackService service) {
AudioManager audioManager = (AudioManager) service.getSystemService(Context.AUDIO_SERVICE);
audioManager.registerMediaButtonEventReceiver(new ComponentName(service.getPackageName(),
MediaButtonIntentReceiver.class.getName()));
return audioManager;
}
}