Firemonkey自定义通知声音无效

时间:2015-09-29 10:33:39

标签: delphi firemonkey

我希望我在某个地方遗漏了一些东西,我希望在我的本地通知被解雇时播放自定义通知声音。

在新表格中,我删除了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

  • 我在运行4.1.2的三星Tab3上尝试过它,这意味着它不是4.4.2问题
  • 我尝试手动复制com.andriod.project文件夹中的文件

但通知上仍然没有声音。

已解决:您需要将声音存储在外部并使用GetSharedDocumentsPath,在内部存储它并使用GetDocumentsPath不起作用

1 个答案:

答案 0 :(得分:-1)

使用property ReceiveLocalNotification。 你必须在这个属性中使用你的声音

procedure TForm1.NotificationCenter1ReceiveLocalNotification(Sender: TObject;
  ANotification: TNotification);

begin

   MediaPlayer1.FileName:=TPath.Combine(TPath.GetDocumentsPath, 'Siren.mp3');

end;