我希望我在某个地方遗漏了一些东西,我希望在我的本地通知被解雇时播放自定义通知声音。
在新表格中,我删除了2个按钮,btnnotification和btnmediaplayer
procedure TForm1.btnnotificationClick(Sender: TObject);
var
MyNotification : TNotification;
begin
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.EnableSound := True;
MyNotification.SoundName := TPath.Combine(TPath.GetDocumentsPath, 'Siren.mp3');
MyNotification.Name := 'mynote';
MyNotification.AlertBody := 'Test';
MyNotification.FireDate := Now;
ShowMessage(MyNotification.SoundName); //<-- Points towards a valid filepath
NotificationCenter1.ScheduleNotification(MyNotification);
finally
//MyNotification.DisposeOf;
end;
end;
我将Siren文件添加到部署中的内部资源,通知触发但没有声音,然后我添加了另一个按钮,这次我只是使用TMediaplayer
procedure TForm1.btnmediaplayerClick(Sender: TObject);
begin
MediaPlayer1.FileName := TPath.Combine(TPath.GetDocumentsPath, 'Siren.mp3');
MediaPlayer1.Play;
ShowMessage(MediaPlayer1.FileName);//<--Points towards the same path as the notification
end;
使用TMediaplayer它没有问题,这意味着文件确实存在,我现在尝试使用2个不同的设备:Xperia Z2和三星Note 2都运行Andriod V4.4.2, 并且两个设备的通知音量都设置为最大但仍然没有声音。
更新1
但通知上仍然没有声音。
已解决:您需要将声音存储在外部并使用GetSharedDocumentsPath,在内部存储它并使用GetDocumentsPath不起作用
答案 0 :(得分:-1)
使用property ReceiveLocalNotification
。
你必须在这个属性中使用你的声音
procedure TForm1.NotificationCenter1ReceiveLocalNotification(Sender: TObject;
ANotification: TNotification);
begin
MediaPlayer1.FileName:=TPath.Combine(TPath.GetDocumentsPath, 'Siren.mp3');
end;