Я не уверен, правильно ли я понял ваш вопрос или нет, но позвольте мне объяснить.
Вы работаете над приложением для вызовов Voip, и в вашем случае, когда когда-либо пользователь воспроизводит какую-либо музыку и пытается сделать вызов из приложения, музыка собственного проигрывателя должна быть приостановлена, и снова после завершения вызова она должна возобновить воспроизведение.
Вы звоните с помощью TelephonyManager? Затем вы можете посмотреть на это решение, где вы можете прослушивать изменения в состоянии вызова с помощью PhoneStateListener. Вы можете зарегистрировать слушателя в TelephonyManager:
Если это так, когда вы когда-либо звоните из своего приложения для вызовов Voip, просто проверьте isMusicActive в АудиоМенеджер. Это даст активную музыку, играющую в телефоне, включая пользовательские приложения.
isMusicActive() Проверяет, активна ли музыка. из документов
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(mAudioManager.isMusicActive()) {
Intent i = new Intent(SERVICECMD);
i.putExtra(CMDNAME , CMDPAUSE );
sendBroadcast(i);
}
Здесь, если MusicActive, то просто передайте его и делайте свое призвание. После того, как вы закончите с вызовом, снова запустите / приостановите музыкальный проигрыватель. Он будет работать для всех проигрывателей, а не только для музыкального проигрывателя по умолчанию.
Управляйте музыкальным проигрывателем Android по умолчанию с помощью этих команд
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);
}
После того, как ваш вызов будет завершен, в этой функции проверьте, не сделали ли вы паузу в музыке, используя трансляцию с флагом.
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);
}
person
King of Masses
schedule
16.11.2017