我正在处理一个邮件跟踪应用程序。如果我收到消息,我会显示一个带有消息文本的对话框并播放选定的声音。
当我的广播接收器被调用时,我调用了对话框活动,我在清单中设置了主题/对话框。一切都很好。
查询:
假设第一个消息对话框正在播放并且正在播放歌曲,同时还有一个消息出现,我的另一个声音启动意味着两个声音同时运行,依此类推。
我想如果正在播放一首歌并且第二条消息出现则第一个声音应该停止,第二个声音应该从头开始。
我也实现了这个东西
if(media.isPlaying)方法。但它总是返回false。因为在每个新消息上都会创建新的媒体播放器实例并返回false。
任何帮助将不胜感激......
答案 0 :(得分:0)
不要为每条消息创建新的媒体播放器实例。例如,检查
之类的内容MediaPlayer mediaPlayer;
if (mediaPlayer == null){
mediaPlayer = new MediaPlayer();
}
然后第一次出现对话框消息时,通过执行类似
的操作启动媒体播放器mediaPlayer.setDataSource(song.uri);
或类似的东西。现在,如果有新消息出现,您可以检查媒体播放器是否已播放(因为现在只有一个媒体播放器实例),并在设置其数据源之前重置它。
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
mediaPlayer.reset();
}