我们日常生活中,有可能登录一个长时间没登录的qq账号,这时候,会收到很多条消息,但是不会像平时每收到一条消息,响一下。而是总共只响一下。这是腾讯对消息响动机制做了优化,在短时间内频繁收到消息,则显示一声。
下面我就说一下思路,我们假设前一条 消息和后一条消息间隔只在0.2s以内,就可以认为是频繁收到消息。这时候后一条消息就不响。
先定义两个变量,lastTime代表上次接收消息的时间,currentTime代表此次接收消息时间。
private long lastTime=0;
private long currentTime;
然后在你接收消息的代码这样写
if(lastTime==0){ currentTime=System.currentTimeMillis(); }else{ lastTime=currentTime; currentTime=System.currentTimeMillis(); }
// 播放声音 MediaPlayer mPlayer = MediaPlayer.create(context.getApplicationContext(), R.raw.msn); try { if (mPlayer != null) { mPlayer.stop(); } if(currentTime-lastTime>200) { mPlayer.prepare(); mPlayer.start(); } } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }这样就可以让消息间隔小于0.2s的不发出声音了。
这其实是个抛砖引玉的文章,大家可以根据这个思路来实现自己的需求。