透過監聽廣播的方式去得知目前的動作,在透過發送廣播的方式去控制到音樂播放器
package com.example.listenmusic; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class ListenMusic extends Activity { private Button btn_TogglePause; private Button btn_Pause; private Button btn_Next; private Button btn_Previous; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listen_music); init(); filterMusic(); } private void init() { btn_Next = (Button) findViewById(R.id.buttonNext); btn_Next.setOnClickListener(clickListenerNext); btn_Pause = (Button) findViewById(R.id.buttonPause); btn_Pause.setOnClickListener(clickListenerPause); btn_Previous = (Button) findViewById(R.id.buttonPrevious); btn_Previous.setOnClickListener(clickListenerPrevious); btn_TogglePause = (Button) findViewById(R.id.buttonTogglePause); btn_TogglePause.setOnClickListener(clickListenerStop); } private void filterMusic() { IntentFilter filter = new IntentFilter(); filter.addAction(MusicBroadcastReceiver.SERVICECMD); filter.addAction(MusicBroadcastReceiver.TOGGLEPAUSE_ACTION); filter.addAction(MusicBroadcastReceiver.PAUSE_ACTION); filter.addAction(MusicBroadcastReceiver.NEXT_ACTION); filter.addAction(MusicBroadcastReceiver.PREVIOUS_ACTION); registerReceiver(new MusicBroadcastReceiver(), filter); } private Button.OnClickListener clickListenerStop = new OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent( MusicBroadcastReceiver.TOGGLEPAUSE_ACTION); sendBroadcast(intent); } }; private Button.OnClickListener clickListenerPause = new OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MusicBroadcastReceiver.PAUSE_ACTION); sendBroadcast(intent); } }; private Button.OnClickListener clickListenerNext = new OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MusicBroadcastReceiver.NEXT_ACTION); sendBroadcast(intent); } }; private Button.OnClickListener clickListenerPrevious = new OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MusicBroadcastReceiver.PREVIOUS_ACTION); sendBroadcast(intent); } }; }
package com.example.listenmusic; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MusicBroadcastReceiver extends BroadcastReceiver { public static final String SERVICECMD = "com.android.music.musicservicecommand"; public static final String CMDNAME = "command"; public static final String CMDTOGGLEPAUSE = "togglepause"; public static final String CMDSTOP = "stop"; public static final String CMDPAUSE = "pause"; public static final String CMDPREVIOUS = "previous"; public static final String CMDNEXT = "next"; public static final String TOGGLEPAUSE_ACTION = "com.android.music.musicservicecommand.togglepause"; public static final String PAUSE_ACTION = "com.android.music.musicservicecommand.pause"; public static final String PREVIOUS_ACTION = "com.android.music.musicservicecommand.previous"; public static final String NEXT_ACTION = "com.android.music.musicservicecommand.next"; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String cmd = intent.getStringExtra("command"); if (CMDNEXT.equals(cmd) || NEXT_ACTION.equals(action)) { Log.i("NEXT", action); } else if (CMDPREVIOUS.equals(cmd) || PREVIOUS_ACTION.equals(action)) { Log.i("PREVIOUS", action); } else if (CMDTOGGLEPAUSE.equals(cmd) || TOGGLEPAUSE_ACTION.equals(action)) { Log.i("PAUSE", action); } else if (CMDPAUSE.equals(cmd) || PAUSE_ACTION.equals(action)) { Log.i("PAUSE", action); } else if (CMDSTOP.equals(cmd)) { Log.i("STOP", action); } } }