![](/img/trans.png)
[英]Get current playing track info from Microsoft Groove Music app
[英]Detecting if user is playing music from another app
我的游戏具有游戏中的配乐,如果用户正在从Android或iOS上的媒体应用程序播放自己的音乐,我想暂停音乐。
有没有一种方法可以有效地在update()函数中运行?
提前致谢!
您可以检查是否正在播放的音乐从描述的这个职位。
AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
if(manager.isMusicActive())
{
// do something - or do it not
}
将其包装在Java中的类周围,然后在AndroidJavaClass
API的帮助下从C#调用它。
但这需要Java。 您可以完全不用Java就可以将代码转换为C#。 得到UnityPlayerPlayer,活动然后上下文。 其余的可以由AndroidJavaClass
处理。
这是不需要Java插件的移植C#版本。
bool isMusicPlaying()
{
const string AUDIO_SERVICE = "audio";
AndroidJavaClass unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject unityContext = unityActivity.Call<AndroidJavaObject>("getApplicationContext");
bool mIsPlaying;
using (AndroidJavaObject audioManager = unityContext.Call<AndroidJavaObject>("getSystemService", AUDIO_SERVICE))
{
mIsPlaying = audioManager.Call<bool>("isMusicActive");
}
return mIsPlaying;
}
您必须实现在其他一些应用获取或放弃音频焦点时将接收到的onAudioFocusChange()回调。
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// Start playback
}
和回调本身:
AudioManager.OnAudioFocusChangeListener afChangeListener = new AudioManager.OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
// Permanent loss of audio focus
// Pause playback immediately
} else if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT) {
// Pause playback
} else if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
// Lower the volume, keep playing
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
// Your app has been granted audio focus again
// Raise volume to normal, restart playback if necessary
}
}
看一下这个官方指南: 处理音频输出的变化
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.