Nad*_*ddy 20 android android-service
如何控制Android或任何其他播放器的默认音乐播放器?通过控制我的意思是暂停,播放,下一个等等.我必须绑定服务吗?我试图使用IMediaPlaybackService它,但它不起作用.因为我在Android市场上看到了控制音乐播放器的应用程序,所以肯定有一条出路.任何的想法?
Ahm*_*kri 22
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(mAudioManager.isMusicActive()) {
Intent i = new Intent(SERVICECMD);
i.putExtra(CMDNAME , CMDSTOP );
YourApplicationClass.this.sendBroadcast(i);
}
Run Code Online (Sandbox Code Playgroud)
您可以通过获取audiomanager然后向其发送命令.
这些是命令.
public static final String CMDTOGGLEPAUSE = "togglepause";
public static final String CMDPAUSE = "pause";
public static final String CMDPREVIOUS = "previous";
public static final String CMDNEXT = "next";
public static final String SERVICECMD = "com.android.music.musicservicecommand";
public static final String CMDNAME = "command";
public static final String CMDSTOP = "stop";
Run Code Online (Sandbox Code Playgroud)
Vir*_*ank 10
发送Intent广播接收器的问题在于,用户必须至少打开音乐播放器一次,它也不适用于许多第三方音乐播放器.
下面给出的代码适用于所有音乐播放器.
long eventtime = SystemClock.uptimeMillis();
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);
Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent upEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
sendOrderedBroadcast(upIntent, null);
/*NEXT*/
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);
/*PREVIOUS*/
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);
Run Code Online (Sandbox Code Playgroud)
我已在Sony,Htc和Samsung设备上测试过此代码.
此代码模仿免提(耳机)的播放/暂停按钮操作.
小智 5
如果要控制音乐播放器(当前正在播放的音乐播放器),可以使用一种方法向其发送KeyEvent:
if (mAudioManager == null) mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY);
mAudioManager.dispatchMediaKeyEvent(event);
Run Code Online (Sandbox Code Playgroud)
这是一种比较安全的方法,因为通常广播keyEvent可能导致一次播放多个玩家。
注意:它必须具有minSdk 19或更高。
| 归档时间: |
|
| 查看次数: |
17899 次 |
| 最近记录: |