/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ideabag.playtunes.media;
import com.ideabag.playtunes.service.MusicPlayerService;
import com.ideabag.playtunes.util.GAEvent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
/**
* Receives broadcasted intents. In particular, we are interested in the
* android.media.AUDIO_BECOMING_NOISY and android.intent.action.MEDIA_BUTTON intents, which is
* broadcast, for example, when the user disconnects the headphones. This class works because we are
* declaring it in a <receiver> tag in AndroidManifest.xml.
*/
public class MusicIntentReceiver extends BroadcastReceiver {
@Override public void onReceive( Context context, Intent intent ) {
String action = intent.getAction();
Intent mIntent = new Intent();
if ( action.equals( android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY ) ) {
context.sendBroadcast( new Intent( MusicPlayerService.ACTION_PAUSE ) );
} else if ( action.equals( Intent.ACTION_MEDIA_BUTTON ) ) {
if ( intent.hasExtra( Intent.EXTRA_KEY_EVENT ) ) {
KeyEvent keyEvent = ( KeyEvent ) intent.getExtras().get( Intent.EXTRA_KEY_EVENT );
if ( keyEvent.getAction() != KeyEvent.ACTION_DOWN )
return;
mIntent.putExtra( GAEvent.Categories.LOCKSCREEN, true );
switch ( keyEvent.getKeyCode() ) {
case KeyEvent.KEYCODE_MEDIA_PAUSE:
case KeyEvent.KEYCODE_MEDIA_PLAY:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
case KeyEvent.KEYCODE_HEADSETHOOK:
mIntent.setAction( MusicPlayerService.ACTION_PLAY_OR_PAUSE );
context.sendBroadcast( mIntent );
break;
/*
case KeyEvent.KEYCODE_MEDIA_PLAY:
mIntent.setAction( MusicPlayerService.ACTION_PLAY );
context.sendBroadcast( mIntent );
break;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
mIntent.setAction( MusicPlayerService.ACTION_PAUSE );
context.sendBroadcast( mIntent );
break;
case KeyEvent.KEYCODE_MEDIA_STOP:
context.startService( new Intent( MusicPlayerService.ACTION_STOP ) );
break;
*/
case KeyEvent.KEYCODE_MEDIA_NEXT:
mIntent.setAction( MusicPlayerService.ACTION_NEXT );
context.sendBroadcast( mIntent );
break;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
mIntent.setAction( MusicPlayerService.ACTION_BACK );
context.sendBroadcast( mIntent );
break;
}
}
}
}
}