问题描述
当用户点击该通知时,我想显示一个通知并播放声音。当我使用活动播放声音时,它会以某种方式起作用,就像我对这个问题的答案写的一样:How can I create a notification that plays an audio file when being tapped?(在这个问题和答案中,还有源代码显示了我如何创建通知以及如何我的PlaySoundActivity
的样子。
但是,我已经意识到,在播放声音时,我的主应用程序的外观会发生变化,并且如果不关闭该应用程序,它将无法恢复。
我已经从“标签活动”项目模板中创建了我的应用程序。
启动后的外观如下:
这是我轻按声音通知时的外观(这些部分已消失):
谁能解释为什么会这样?使用活动播放声音是否错误?但是,当我使用服务时在这里不起作用,我什么也听不到!该怎么解决?
解决方法
根据Android开发者参考,“几乎所有活动都与用户交互,因此Activity类负责为您创建一个窗口,您可以在其中放置带有setContentView(View)的UI”。
我没有这样做。因此,显示了一个新窗口,但没有任何内容。
播放声音的更好解决方案是使用PlaySoundService
(服务!!!)而不是活动。它包含与活动几乎相同的代码,但是使用PendingIntent.getService(...)
而非PendingIntent.getActivity(...)
创建挂起的意图。使用错误的方法不会导致明显的错误消息,但是该服务将无法正常工作。