diff --git a/src/main/java/com/yutou/bilibili/BiliBili/Live.java b/src/main/java/com/yutou/bilibili/BiliBili/Live.java index 4ddc7c9..181b238 100644 --- a/src/main/java/com/yutou/bilibili/BiliBili/Live.java +++ b/src/main/java/com/yutou/bilibili/BiliBili/Live.java @@ -45,7 +45,8 @@ public class Live implements ApplicationContextAware { private BilibiliLiveInfo info; private BilibiliUpInfo upData; private Timer heartBeattimer; - public BiliBiliLiveDatabasesManager danmuManager=null; + public BiliBiliLiveDatabasesManager danmuManager = null; + public Timer checkLiveTimer; @PostConstruct public void init() { @@ -80,6 +81,13 @@ public class Live implements ApplicationContextAware { Live.lives.add(this); updateUpInfo(); com.yutou.bilibili.Tools.Log.i("roomId = " + roomId + ", isLogin = " + isLogin); + checkLiveTimer=new Timer(); + checkLiveTimer.schedule(new TimerTask() { + @Override + public void run() { + checkLive(); + } + },0,1000); } private void updateUpInfo() { @@ -200,7 +208,7 @@ public class Live implements ApplicationContextAware { public void stop() { run = false; client.close(); - if(danmuManager!=null){ + if (danmuManager != null) { danmuManager.close(); } if (SaveLive.getInstance().checkLive(roomId)) { @@ -208,6 +216,9 @@ public class Live implements ApplicationContextAware { } Live.lives.remove(this); com.yutou.bilibili.Tools.Log.i("退出" + roomId + "直播间"); + if(checkLiveTimer!=null){ + checkLiveTimer.cancel(); + } } /** @@ -272,9 +283,9 @@ public class Live implements ApplicationContextAware { } catch (Exception e) { int popular = LiveUtils.bytesToInt2(bytes, 0); info.setPopular(popular); + checkLive(); } } - checkLive(); } catch (Exception e) { e.printStackTrace(); com.yutou.bilibili.Tools.Log.i("----------ERROR----------"); @@ -290,8 +301,8 @@ public class Live implements ApplicationContextAware { if (isLive && upData.getSavelive() == 1) { SaveLive.getInstance().addLive(this); } - if(!isLive&&upData.getSavelive()==1){ - if(SaveLive.getInstance().checkLive(roomId)){ + if (!isLive || upData.getSavelive() == 0) { + if (SaveLive.getInstance().checkLive(roomId)) { SaveLive.getInstance().stop(roomId); } } @@ -324,9 +335,9 @@ public class Live implements ApplicationContextAware { service.addLiveData(liveData); break; case "DANMU_MSG"://普通弹幕 - JSONArray infoData=json.getJSONArray("info"); + JSONArray infoData = json.getJSONArray("info"); danmu = json.getJSONArray("info").getString(1); - DanmuData danmuData=new DanmuData(); + DanmuData danmuData = new DanmuData(); danmuData.setModel(infoData.getJSONArray(0).getInteger(1)); danmuData.setFontSize(infoData.getJSONArray(0).getInteger(2)); danmuData.setFontColor(infoData.getJSONArray(0).getInteger(3));