| | |
| | | package com.basic.security.fragment; |
| | | |
| | | import android.content.Intent; |
| | | import android.os.SystemClock; |
| | | import android.view.View; |
| | | import android.widget.AbsListView; |
| | |
| | | import android.widget.Spinner; |
| | | |
| | | import com.basic.security.R; |
| | | import com.basic.security.base.BaseApplication; |
| | | import com.basic.security.fragment.helper.HomeGridViewAdapter; |
| | | import com.basic.security.fragment.helper.HomePlayAlarmVideo; |
| | | import com.basic.security.manager.AlarmManager; |
| | | import com.basic.security.manager.SettingManager; |
| | | import com.basic.security.utils.MemoryUtil; |
| | | import com.basic.security.utils.RabbitMQConsumer; |
| | | import com.basic.security.utils.SocketClient; |
| | | import com.basic.security.utils.ThreadUtil; |
| | | |
| | | import org.androidannotations.annotations.AfterInject; |
| | | import org.androidannotations.annotations.AfterViews; |
| | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.ExecutorService; |
| | | import java.util.concurrent.Executors; |
| | | |
| | | |
| | | @EFragment(R.layout.fragment_home) |
| | | public class HomeFragment extends HomePlayAlarmVideo { |
| | | |
| | | List<Map<String, String>> newSqliteAlarmList; |
| | | public List<Map<String, String>> newSqliteAlarmList; |
| | | |
| | | @AfterInject |
| | | void afterInject() { |
| | |
| | | refreshGridView(); |
| | | while (true) { |
| | | try{ |
| | | try { |
| | | if (1!=1) { |
| | | startNewSocketClient(); |
| | | break; |
| | | } else { |
| | | List<SocketClient> socketClientListToRemove = new ArrayList<>(); |
| | | for (SocketClient socketClient1 : socketClientList) { |
| | | if (System.currentTimeMillis() - socketClient1.lastUpdateTime > 1000*60*2) { |
| | | // socketClient1.closeSocket(); |
| | | socketClient1.interrupt(); |
| | | socketClientListToRemove.add(socketClient1); |
| | | } |
| | | } |
| | | socketClientList.removeAll(socketClientListToRemove); |
| | | if (socketClientList.size() == 0) { |
| | | startNewSocketClient(); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | System.out.println("pullAlarmDataList, " + e.getMessage()); |
| | | } |
| | | RabbitMQConsumer.init(); |
| | | // try { |
| | | // if (1!=1) { |
| | | // startNewSocketClient(); |
| | | // break; |
| | | // } else { |
| | | // List<SocketClient> socketClientListToRemove = new ArrayList<>(); |
| | | // for (SocketClient socketClient1 : socketClientList) { |
| | | // if (System.currentTimeMillis() - socketClient1.lastUpdateTime > 1000*60*2) { |
| | | //// socketClient1.closeSocket(); |
| | | // socketClient1.interrupt(); |
| | | // socketClientListToRemove.add(socketClient1); |
| | | // } |
| | | // } |
| | | // socketClientList.removeAll(socketClientListToRemove); |
| | | // if (socketClientList.size() == 0) { |
| | | // startNewSocketClient(); |
| | | // } |
| | | // } |
| | | // } catch (Exception e) { |
| | | // System.out.println("pullAlarmDataList, " + e.getMessage()); |
| | | // } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | |
| | | @Override |
| | | public void show() { |
| | | for (AlarmListAdapter.ViewHolder viewHolder : viewHolderSet.keySet()) { |
| | | if ("true".equals(viewHolder.alarm.get("videoPlaying"))) { |
| | | viewHolder.alarm.put("videoPlaying", "false"); |
| | | if (AlarmManager.getAlarmPlaying(viewHolder.alarm)) { |
| | | AlarmManager.putAlarmPlaying(viewHolder.alarm, false); |
| | | } |
| | | } |
| | | refreshGridView(); |
| | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | refreshGridViewLocker.lock(); |
| | | newSqliteAlarmList = AlarmManager.findAlarmList(); |
| | | if (newSqliteAlarmList != null) { |
| | | final Map<String, Map<String, String>> sqliteAlarmListMap = new HashMap<>(); |
| | | sqliteAlarmListLock.lock(); |
| | | for (Map<String, String> alarm : sqliteAlarmList) { |
| | | sqliteAlarmListMap.put(alarm.get("id"), alarm); |
| | | } |
| | | sqliteAlarmListLock.unlock(); |
| | | for (Map<String, String> alarm : newSqliteAlarmList) { |
| | | alarm.put("videoPlaying", "false"); |
| | | Map<String, String> backupAlarm = sqliteAlarmListMap.get(alarm.get("id")); |
| | | if (backupAlarm != null) { |
| | | if (!"true".equals(backupAlarm.get("videoPlayFinished"))) { |
| | | if ("true".equals(backupAlarm.get("videoPlaying"))) { |
| | | alarm.put("videoPlaying", backupAlarm.get("videoPlaying")); |
| | | try { |
| | | refreshGridViewLocker.lock(); |
| | | newSqliteAlarmList = AlarmManager.findAlarmList(); |
| | | if (newSqliteAlarmList != null) { |
| | | final Map<String, Map<String, String>> sqliteAlarmListMap = new HashMap<>(); |
| | | sqliteAlarmListLock.lock(); |
| | | for (Map<String, String> alarm : sqliteAlarmList) { |
| | | sqliteAlarmListMap.put(alarm.get("id"), alarm); |
| | | } |
| | | sqliteAlarmListLock.unlock(); |
| | | for (Map<String, String> alarm : newSqliteAlarmList) { |
| | | //AlarmManager.putAlarmPlaying(alarm, false); |
| | | Map<String, String> backupAlarm = sqliteAlarmListMap.get(alarm.get("id")); |
| | | if (backupAlarm != null) { |
| | | if ("true".equals(backupAlarm.get("videoPlayFinished"))) { |
| | | if (AlarmManager.getAlarmPlaying(alarm)) { |
| | | //alarm.put("videoPlaying", backupAlarm.get("videoPlaying")); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | sqliteAlarmListLock.lock(); |
| | | sqliteAlarmList.clear(); |
| | | sqliteAlarmList.addAll(newSqliteAlarmList); |
| | | sqliteAlarmListLock.unlock(); |
| | | updateAlarmDataListInUIThread(); |
| | | } |
| | | sqliteAlarmListLock.lock(); |
| | | sqliteAlarmList.clear(); |
| | | sqliteAlarmList.addAll(newSqliteAlarmList); |
| | | sqliteAlarmListLock.unlock(); |
| | | updateAlarmDataListInUIThread(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | refreshGridViewLocker.unlock(); |
| | | } |
| | | refreshGridViewLocker.unlock(); |
| | | |
| | | } |
| | | |
| | | @UiThread |
| | |
| | | public void onScrollStateChanged(AbsListView view, int scrollState) { |
| | | sqliteAlarmListLock.lock(); |
| | | for (Map<String, String> sqliteAlarm : sqliteAlarmList) { |
| | | sqliteAlarm.put("videoPlaying", "false"); |
| | | AlarmManager.putAlarmPlaying(sqliteAlarm, false); |
| | | } |
| | | sqliteAlarmListLock.unlock(); |
| | | try{ |
| | |
| | | public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {} |
| | | }); |
| | | saveVideoPlayerCurrentTime(); |
| | | // executorService.execute(new Runnable() { |
| | | // @Override |
| | | // public void run() { |
| | | // while (true) { |
| | | // try { |
| | | // AlarmManager.updateVideoUrl(); |
| | | // SystemClock.sleep(1 * 1000); |
| | | // } catch (Exception e) { |
| | | //// e.printStackTrace(); |
| | | // System.out.println("HomeFragment.run " + e.getMessage()); |
| | | // } |
| | | // } |
| | | // } |
| | | // }); |
| | | executorService.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | while (true) { |
| | | try { |
| | | MemoryUtil.monitorMemory(); |
| | | sendKeepLife(); |
| | | ThreadUtil.threadCreateObserver(); |
| | | SystemClock.sleep(3 * 1000); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | public static void sendKeepLife() { |
| | | try { |
| | | if (System.currentTimeMillis() - lastSendKeepLife > 2 * 1000) { |
| | | Intent intent = new Intent("keepLife"); |
| | | intent.putExtra("message", "This is my message!"); |
| | | BaseApplication.getApplication().activity.sendBroadcast(intent); |
| | | lastSendKeepLife = System.currentTimeMillis(); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | static long lastSendKeepLife = 0; |
| | | public ExecutorService executorService = Executors.newCachedThreadPool(); |
| | | @Click |
| | | public void goto_top() { |
| | | alarmListGridView.smoothScrollToPositionFromTop(0,0); |