잘 모르겠습니다. 나는 당신의 질문이 옳은지 아닌지를 설명해 주겠다.
Voip 통화 앱을 사용할 때와 사용자가 음악을 재생하고 앱에서 전화를 걸 때 네이티브 플레이어 음악이 일시 중지되어야하고 통화가 완료된 후 다시 재생해야합니다 .
TelephonyManager를 사용하여 전화를 걸고 있습니까? 그런 다음 solution에서 PhoneStateListener를 사용하여 통화 상태의 변경 사항을 수신 대기 할 수 있습니다. 수신자를 TelephonyManager에 등록 할 수 있습니다.
그렇다면 Voip 통화 응용 프로그램에서 전화를 걸 때 AudioManager의 isMusicActive를 확인하십시오. 그것은 사용자 정의 애플 리케이션을 포함하여 활성 음악이 전화로 재생 줄 것입니다.
isMusicActive() 음악이 활성화되어 있는지 확인합니다. 여기
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(mAudioManager.isMusicActive()) {
Intent i = new Intent(SERVICECMD);
i.putExtra(CMDNAME , CMDPAUSE);
sendBroadcast(i);
}
docs에서 MusicActive는 단순히 그것을 통과하고 당신의 전화를 할 경우. 통화를 끝내고 음악 플레이어를 다시 일시 중지하면 기본 음악 플레이어뿐 아니라 모든 플레이어가 사용할 수 있습니다.
컨트롤이와 안드로이드의 기본 음악 플레이어
,
귀하의 경우에는
public static final String CMDTOGGLEPAUSE = "togglepause";
public static final String CMDPLAY = "play";
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";
이 앱에서 VoIP 통화를하기 전에, 활성 음악이없이이 좋아입니다 확인 명령입니다
private boolean isSomethingPlaying;
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(mAudioManager.isMusicActive()) {
// some music is playing, so make it pause and save the flag for further usage.
isSomethingPlaying = true;
Intent i = new Intent(SERVICECMD);
i.putExtra(CMDNAME , CMDPAUSE);
sendBroadcast(i);
}
통화가 완료된 후 해당 기능에서 u가 플래그로 브로드 캐스트를 사용하여 음악을 일시 중지했는지 확인합니다.
if(isSomethingPlaying)
{
// before our call some music is playing. so make it play again.
isSomethingPlaying = false;
Intent i = new Intent(SERVICECMD);
i.putExtra(CMDNAME , CMDPLAY);
sendBroadcast(i);
}
호출 완료 후 onAudioFocusChange (int i)에 0 또는 1과 같은 변경 사항이 있습니까? –