können Sie überprüfen, ob Musik von this Post wie beschrieben abgespielt wird.
AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
if(manager.isMusicActive())
{
// do something - or do it not
}
es in Java um eine Klasse Wickeln Sie es dann mit Hilfe der AndroidJavaClass
API von C# aufrufen.
Aber das erfordert Java. Sie können diesen Code verwenden und ihn ohne Java in C# konvertieren. Ruft UnityPlayerPlayer, Aktivität und dann den Kontext auf. Der Rest kann von AndroidJavaClass
gehandhabt werden.
Hier ist die portierte C# -Version, die kein Java-Plugin benötigt.
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;
}
Aus irgendeinem Grund bleibt Retruning wahr? – Tiaan
Hallo, dieser Code soll funktionieren. Ich habe ein bisschen darüber recherchiert und herausgefunden, dass dies ein Fehler von Unity ist. Siehe [this] (https://answers.unity3d.com/questions/984710/detect-if-music-is-play-in-other-apps-on-androi.html) und [dies] (https: // ittetracker.unity3d.com/issues/android-native-android-method-audiomanager-dot-ismicactive-always-returns-true). Datei für einen Fehlerbericht. – Programmer