2014-02-07 6 views
4

음악 플레이어를 일시 중지하는 데이 코드를 사용하면 기본 음악 플레이어가 일시 중지되지만 다른 음악 플레이어가 설치되어 있으면 작동하지 않습니다. 예를 들어 poweramp를 들어, 리얼 플레이어 등다른 음악 플레이어를 Android에서 일시 중지하는 방법은 무엇인가요?

여기에 내가 음악을 일시 정지 할 때 사용하는 아래의 코드입니다 : - 단순히 미디어 버튼을 사용

AudioManager mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);  

if (mAudioManager.isMusicActive()) 
{ 
    Intent i = new Intent("com.android.music.musicservicecommand"); 

    i.putExtra("command", "pause"); 
    ListenAndSleep.this.sendBroadcast(i); 
} 

답변

8

이 쉽게하지 않을까요은? 전부는 아니지만 대부분의 플레이어가 대부분을 처리해야합니다.

private static void sendMediaButton(Context context, int keyCode) { 
    KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode); 
    Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON); 
    intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); 
    context.sendOrderedBroadcast(intent, null); 

    keyEvent = new KeyEvent(KeyEvent.ACTION_UP, keyCode); 
    intent = new Intent(Intent.ACTION_MEDIA_BUTTON); 
    intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); 
    context.sendOrderedBroadcast(intent, null); 
} 

그럼 당신은 사용할 수 있습니다

sendMediaButton(getApplicationContext(), KeyEvent.KEYCODE_MEDIA_PAUSE); 

또한 정지 키 이벤트를 보낼 수 있습니다. 관련 키와 연결된 링크가 있습니다. http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PAUSE

+0

감사합니다. 가장 많이 다운로드 한 음악 플레이어와 잘 어울립니다. – Kamran

0
public static void pauseMusic() { 

    KeyEvent ke = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PAUSE); 
    Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON); 
    intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); 

    // construct a PendingIntent for the media button and unregister it 
    Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); 
    PendingIntent pi = PendingIntent.getBroadcast(AppContext.getContext(), 
      0/*requestCode, ignored*/, mediaButtonIntent, 0/*flags*/); 
    intent.putExtra(Intent.EXTRA_KEY_EVENT, ke); 
    sendKeyEvent(pi, AppContext.getContext(), intent); 

    ke = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PAUSE); 
    intent.putExtra(Intent.EXTRA_KEY_EVENT, ke); 
    sendKeyEvent(pi, AppContext.getContext(), intent); 

    //  android.intent.action.MEDIA_BUTTON 

} 

private static void sendKeyEvent(PendingIntent pi, Context context, Intent intent) { 
    try { 
     pi.send(context, 0, intent); 
    } catch (PendingIntent.CanceledException e) { 
     Log.e(TAG, "Error sending media key down event:", e); 
    } 
} 
관련 문제