2017-08-11 1 views
0

Ich verwende den folgenden Code, um mit der Wiedergabe einer lokalen Audiodatei zu beginnen. Zu meiner Enttäuschung wird auf meinem Android-Emulator keine Benachrichtigung angezeigt. Nach etwas graben merke ich, dass der Android MediaNotificationManager den ganzen Code auskommentiert hat.Xamarin MediaMager Benachrichtigungen auf Android

ich von einigen anderen auf GitHub sehen kann, dass andere Menschen Benachrichtigungen zu haben scheinen (ironisch, ein paar Leute scheinen Probleme zu haben, sie loszuwerden - Example), so was brauche ich, um es zu bekommen ?

IMediaFile mediaFile = new MediaFile(playRequest.Path, MediaFileType.Audio, ResourceAvailability.Local); 
mediaFile = await CrossMediaManager.Current.MediaExtractor.ExtractMediaInfo(mediaFile); 
await CrossMediaManager.Current.Play(mediaFile); 

CrossMediaManager.Current.MediaNotificationManager.StartNotification(mediaFile); 
CrossMediaManager.Current.MediaNotificationManager.UpdateNotifications(mediaFile, MediaPlayerStatus.Playing); 

Antwort

0

Ich fand einen Grund. Benachrichtigungen auf Android erfordern ein Icon. Durch die Überprüfung des Quellcodes von MediaNotificationManager habe ich festgestellt, dass auf Android tatsächlich Benachrichtigungen in einer komplett anderen Klasse behandelt werden: MediaNotificationManagerImplementation in MediaSession. Dort habe ich auch gelernt, dass es ein Symbol des Typs Android.Graphics.Bitmap in der Eigenschaft Art auf den Metadaten suchen wird. Seltsamerweise wird die Eigenschaft ArtUri für nichts verwendet.

Wenn diese Eigenschaft null ist, sucht sie nach einem Zeichen in Ressourcen mit dem Namen xam_mediamanager_notify_ic. Wenn keine gefunden wird, wird das Anwendungssymbol verwendet.

Jetzt löst das alle meine Bedürfnisse für Android. Auf anderen Plattformen wird es jedoch anders gehandhabt, und ich muss noch herausfinden, wie ich die Grafik auf UWP einstellen kann (und ich habe iOS noch nicht getestet).

Verwandte Themen