我一直在使用Android Xamarin应用中播放自定义声音的简单概念,但无论我尝试什么声音都无法播放。
我创造了一个" raw"资源下的文件夹,并添加了适当的声音文件。我确保该文件是作为Android资源构建的。
这是我的代码:
// note I have also tried just /raw/NotificationSound, /integeridofresource and many other formats
string sSoundUrl = "android.resource://" + AppGlobals.PackageName + "/raw/NotificationSound.wav";
Notification nNotification = new Notification.Builder(this.Activity).SetSmallIcon(Resource.Drawable.AppIcon)
.SetContentTitle("Test title")
.SetContentText("Hello notifications")
.SetAutoCancel(true)
.SetSound(Android.Net.Uri.Parse(sSoundUrl)).Build();
// I have tried 0, All, NotificationDefaults.Sound basically all different combinations
nNotification.Defaults = NotificationDefaults.Lights;
NotificationManager nmNotManager = (NotificationManager)this.Activity.GetSystemService(Context.NotificationService);
nmNotManager.Notify(0, nNotification);
我希望有人能发现我做错了什么......
感谢!!!
答案 0 :(得分:2)
看起来你很接近,你的代码和我们在几个Xamarin.Android应用程序中工作的东西之间只有一些细微的差别。
我认为显着的区别在于我们使用GcmListenerService
- 派生类作为上下文而不是this.Activity
,我们省略了" .wav"在路径中的扩展,我们为通知生成唯一的ID,我们设置了一个意图。
以下是一些显示方法的代码:
var intent = new Intent(context, typeof(MainActivity));
intent.PutExtra(MainActivity.GoToAction, action);
intent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
var pushId = DateTime.Now.TimeOfDay.Milliseconds;
var pendingIntent = PendingIntent.GetActivity(context, pushId, intent, PendingIntentFlags.OneShot);
// Set custom push notification sound.
var pathToPushSound = "android.resource://" + context.ApplicationContext.PackageName + "/raw/pushalert";
var soundUri = Android.Net.Uri.Parse(pathToPushSound);
var notificationBuilder = new Android.App.Notification.Builder(context)
.SetSmallIcon(Resource.Drawable.icon_transparent)
.SetContentTitle(title)
.SetContentText(message)
.SetAutoCancel(true)
.SetSound(soundUri)
.SetStyle(new Android.App.Notification.BigTextStyle().BigText(message))
.SetVibrate(new long[] {100, 1000, 100})
.SetLights(Android.Resource.Color.HoloOrangeDark, 1, 1)
.SetContentIntent(pendingIntent);
var notificationManager = (NotificationManager) context.GetSystemService(Context.NotificationService);
notificationManager.Notify(pushId, notificationBuilder.Build());
答案 1 :(得分:1)
嗯,我想我终于搞清楚了。如果你的声音有问题,我建议:1)像我一样创建一个Media Player对象,看看它是否可以播放你的Uri 2)检查以确保你为Notification对象设置了正确的默认值。在我的情况下,我将默认值设置为0并播放声音......