| | |
| | | package com.basic.security.fragment.helper; |
| | | |
| | | import android.gesture.GestureOverlayView; |
| | | import android.graphics.Color; |
| | | import android.os.SystemClock; |
| | | import android.text.TextUtils; |
| | | import android.view.LayoutInflater; |
| | | import android.view.MotionEvent; |
| | | import android.view.View; |
| | |
| | | import android.widget.VideoView; |
| | | |
| | | import com.basic.security.R; |
| | | import com.basic.security.base.BaseApplication; |
| | | import com.basic.security.manager.AlarmManager; |
| | | import com.basic.security.manager.LogManager; |
| | | import com.basic.security.model.Alarm; |
| | | import com.basic.security.utils.KeyboardUtil; |
| | | import com.basic.security.utils.ToastUtil; |
| | | import com.basic.security.utils.VideoPath; |
| | | import com.basic.security.widget.CustomSpinner2; |
| | | import com.bumptech.glide.Glide; |
| | | |
| | | import org.androidannotations.annotations.EFragment; |
| | | import org.xutils.common.util.KeyValue; |
| | | |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | |
| | | viewHolder.alarmAddress = convertView.findViewById(R.id.alarmAddress); |
| | | viewHolder.property = convertView.findViewById(R.id.property); |
| | | viewHolder.alarmType = convertView.findViewById(R.id.alarmType); |
| | | viewHolder.layout1 = convertView.findViewById(R.id.layout1); |
| | | viewHolder.alarmPerson = convertView.findViewById(R.id.alarmPerson); |
| | | viewHolder.showMatchPersonList = convertView.findViewById(R.id.showMatchPersonList); |
| | | viewHolder.matchPersonListParent = convertView.findViewById(R.id.matchPersonListParent); |
| | |
| | | viewHolder.closeAlarm = convertView.findViewById(R.id.closeAlarm); |
| | | // KeyboardUtil.setupUI(convertView); |
| | | convertView.setTag(viewHolder); |
| | | KeyboardUtil.setupUI(convertView); |
| | | } else { |
| | | viewHolder = (ViewHolder) convertView.getTag(); |
| | | } |
| | | |
| | | viewHolderSet.put(viewHolder, viewHolder); |
| | | final ViewHolder viewHolder1 = viewHolder; |
| | | ViewHolder viewHolder1 = viewHolder; |
| | | viewHolder1.alarm = alarm; |
| | | // if ("true".equals(alarm.get("alarmVideoValid"))) { |
| | | // viewHolder.layout1.setBackgroundColor(Color.BLUE); |
| | | // } else { |
| | | // if ("DSVAD010220181119".equals(alarm.get(Alarm.indeviceid))) { |
| | | // |
| | | // viewHolder.layout1.setBackgroundColor(Color.GREEN); |
| | | // } else { |
| | | // viewHolder.layout1.setBackgroundColor(Color.RED); |
| | | // |
| | | // } |
| | | // } |
| | | |
| | | viewHolder.showPicture.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | |
| | | goto_picture_fullscreen(viewHolder1); |
| | | } |
| | | }); |
| | | |
| | | if ("true".equals(alarm.get("alarmVideoValid"))) { |
| | | viewHolder1.alarmVideo.setVideoPath(alarm.get("alarmVideo")); |
| | | if ("true".equals(alarm.get("videoPlaying"))) { |
| | | playVideo(viewHolder1); |
| | | } else { |
| | | stopVideo(viewHolder1); |
| | | if (!AlarmManager.removeNewAlarmIdSet(alarm)) { |
| | | if ("true".equals(alarm.get("alarmVideoValid"))) { |
| | | viewHolder1.alarmVideo.setVideoPath(alarm.get("alarmVideo")); |
| | | if (AlarmManager.getAlarmPlaying(alarm)) { |
| | | playVideo(viewHolder1); |
| | | } else { |
| | | stopVideo(viewHolder1); |
| | | } |
| | | } |
| | | } else { |
| | | AlarmManager.putAlarmPlaying(alarm, false); |
| | | viewHolder.showPicture.setVisibility(View.VISIBLE); |
| | | } |
| | | viewHolder.playVideo.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | goto_video_fullscreen(viewHolder1); |
| | | goto_video_fullscreen(viewHolder1, true); |
| | | } |
| | | }); |
| | | |
| | |
| | | viewHolder1.highlightBorder.setBackgroundResource(R.drawable.highlight_border); |
| | | viewHolder1.highlightShadow.setVisibility(View.VISIBLE); |
| | | } |
| | | viewHolder.closeAlarm.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | viewHolder1.alarm.put("closeAlarm", "true"); |
| | | AlarmManager.deleteAlarm(viewHolder1.alarm); |
| | | stopVideo(viewHolder1); |
| | | sqliteAlarmListLock.lock(); |
| | | sqliteAlarmList.remove(viewHolder1.alarm); |
| | | sqliteAlarmListLock.unlock(); |
| | | alarmListAdapter.notifyDataSetChanged(); |
| | | ToastUtil.show("报警已确认!"); |
| | | } |
| | | }); |
| | | if ("true".equals(viewHolder1.alarm.get("canClose"))) { |
| | | viewHolder1.closeAlarm.setImageResource(R.drawable.u259); |
| | | viewHolder.closeAlarm.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | viewHolder1.alarm.put(Alarm.mute, "true"); |
| | | viewHolder1.alarm.put("closeAlarm", "true"); |
| | | new Thread(){ |
| | | @Override |
| | | public void run() { |
| | | AlarmManager.deleteAlarm(viewHolder1.alarm); |
| | | } |
| | | }.start(); |
| | | stopVideo(viewHolder1); |
| | | sqliteAlarmListLock.lock(); |
| | | sqliteAlarmList.remove(viewHolder1.alarm); |
| | | sqliteAlarmListLock.unlock(); |
| | | alarmListAdapter.notifyDataSetChanged(); |
| | | ToastUtil.show("报警已确认!", false); |
| | | } |
| | | }); |
| | | } else { |
| | | viewHolder1.closeAlarm.setImageResource(R.drawable.u259_gray); |
| | | viewHolder.closeAlarm.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | } |
| | | }); |
| | | } |
| | | |
| | | viewHolder.alarmPicture.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | |
| | | viewHolder.alarmVideoGestureOverlayView.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | goto_video_fullscreen(viewHolder1); |
| | | goto_video_fullscreen(viewHolder1, true); |
| | | } |
| | | }); |
| | | |
| | |
| | | viewHolder.alarmAddress.setText(alarm.get("alarmAddress")); |
| | | viewHolder.alarmTime.setText(alarm.get("alarmTime")); |
| | | viewHolder.property.setText(alarm.get("property")); |
| | | viewHolder.alarmType.setText("报警类型: "+alarm.get("alarmType")); |
| | | viewHolder.alarmType.setText(alarm.get("alarmType") + " " + alarm.get("alarmLevel")); |
| | | |
| | | viewHolder.matchPersonList.setVisibility(View.INVISIBLE); |
| | | |
| | |
| | | public ImageView toggleSound; |
| | | public ImageView closeAlarm; |
| | | public ImageView showMatchPersonList; |
| | | public View layout1; |
| | | public CustomSpinner2 matchPersonList; |
| | | public LinearLayout matchPersonListParent; |
| | | public LinearLayout highlightShadow; |
| | | public LinearLayout highlightBorder; |
| | | public Map<String, String> alarm; |
| | | public long alarmVideoOverlayVisibleTime = 0; |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | public void goto_video_fullscreen(final AlarmListAdapter.ViewHolder viewHolder) { |
| | | for (AlarmListAdapter.ViewHolder vh : viewHolderSet.keySet()) { |
| | | if ("true".equals(vh.alarm.get("videoPlaying"))) { |
| | | vh.alarmVideoOverlay.setVisibility(View.VISIBLE); |
| | | goto_video_fullscreen(viewHolder, false); |
| | | } |
| | | public void goto_video_fullscreen(final AlarmListAdapter.ViewHolder viewHolder, boolean fromButtonClick) { |
| | | goto_video_fullscreen(viewHolder, fromButtonClick, false); |
| | | } |
| | | public void goto_video_fullscreen(final AlarmListAdapter.ViewHolder viewHolder, boolean fromButtonClick, boolean fromRetry) { |
| | | System.out.println("HomeGridViewAdapter.goto_video_fullscreen 1 " + ("true".equals(viewHolder.alarm.get("alarmVideoValid"))) + " retry="+fromRetry); |
| | | if ("true".equals(viewHolder.alarm.get("alarmVideoValid"))) { |
| | | for (AlarmListAdapter.ViewHolder vh : viewHolderSet.keySet()) { |
| | | if (AlarmManager.getAlarmPlaying(vh.alarm)) { |
| | | vh.alarmVideoOverlay.setVisibility(View.VISIBLE); |
| | | vh.alarmVideoOverlayVisibleTime = System.currentTimeMillis(); |
| | | } |
| | | } |
| | | BaseApplication.getApplication().executorService.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | SystemClock.sleep(100); |
| | | mainActivity().runOnUiThread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | System.out.println("HomeGridViewAdapter.goto_video_fullscreen 2 "); |
| | | currentVideoPlayTimeMap.remove(viewHolder.alarm.get("id")); |
| | | playVideo(viewHolder); |
| | | if (!"true".equals(viewHolder.alarm.get("alarmVideoValid"))) { |
| | | ToastUtil.show("录像正在处理中,请稍后再试。", false); |
| | | } |
| | | System.out.println("HomeGridViewAdapter.goto_video_fullscreen 3 fromButtonClick="+fromButtonClick + "true".equals(viewHolder.alarm.get("alarmVideoValid"))); |
| | | if ("true".equals(viewHolder.alarm.get("alarmVideoValid"))) { |
| | | System.out.println("HomeGridViewAdapter.goto_video_fullscreen 4 fromButtonClick="+fromButtonClick); |
| | | if (fromButtonClick) { |
| | | AlarmManager.putAlarmPlaying(viewHolder.alarm, true); |
| | | } |
| | | viewHolder.alarmVideo.setVisibility(View.INVISIBLE); |
| | | viewHolder.alarmVideoGestureOverlayView.setVisibility(View.INVISIBLE); |
| | | stopAllVideoPlays(viewHolder.alarmVideo); |
| | | mainActivity().goto_fullscreenVideoView(viewHolder.alarm.get("alarmVideo")); |
| | | try { |
| | | LogManager.saveLog(viewHolder.alarm.get("alarmVideo")); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } else { |
| | | ToastUtil.show("录像正在处理中,请稍后再试。", false); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } else { |
| | | if (!fromRetry) { |
| | | tryGetRemoveVideoUrl(viewHolder, fromButtonClick); |
| | | } |
| | | } |
| | | new Thread(){ |
| | | @Override |
| | | public void run() { |
| | | SystemClock.sleep(100); |
| | | mainActivity().runOnUiThread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | currentVideoPlayTimeMap.remove(viewHolder.alarm.get("id")); |
| | | playVideo(viewHolder); |
| | | if (!"true".equals(viewHolder.alarm.get("alarmVideoValid"))) { |
| | | ToastUtil.show("播放失败, 视频路径错误。"); |
| | | } |
| | | if ("true".equals(viewHolder.alarm.get("alarmVideoValid"))) { |
| | | viewHolder.alarmVideo.setVisibility(View.INVISIBLE); |
| | | viewHolder.alarmVideoGestureOverlayView.setVisibility(View.INVISIBLE); |
| | | stopAllVideoPlays(viewHolder.alarmVideo); |
| | | mainActivity().goto_fullscreenVideoView(viewHolder.alarm.get("alarmVideo")); |
| | | } else { |
| | | ToastUtil.show("播放失败, 视频路径错误。"); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }.start(); |
| | | |
| | | } |
| | | |
| | | public void tryGetRemoveVideoUrl(AlarmListAdapter.ViewHolder viewHolder, boolean fromButtonClick) { |
| | | BaseApplication.getApplication().executorService.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | long requestVideoUrlBegin = System.currentTimeMillis(); |
| | | String alarmVideo = VideoPath.getVideoUrl(viewHolder.alarm); |
| | | System.out.println("alarmVideo="+alarmVideo); |
| | | // System.out.println("HomeGridViewAdapter.run alarmVideo="+alarmVideo); |
| | | // System.out.println("HomeGridViewAdapter.run 2 " + (!TextUtils.isEmpty(alarmVideo) && alarmVideo.startsWith("http"))); |
| | | if (!TextUtils.isEmpty(alarmVideo) && alarmVideo.startsWith("http")) { |
| | | viewHolder.alarm.put("alarmVideoValid", "true"); |
| | | viewHolder.alarm.put(Alarm.alarmVideo, alarmVideo); |
| | | AlarmManager.save(viewHolder.alarm); |
| | | mainActivity().fragment_home.refreshGridView(); |
| | | // System.out.println("HomeGridViewAdapter.run 3 " + (System.currentTimeMillis() - requestVideoUrlBegin < 5* 1000) ); |
| | | if (System.currentTimeMillis() - requestVideoUrlBegin < 5* 1000) { |
| | | viewHolder.alarm.put("alarmVideoValid", "true"); |
| | | AlarmManager.putAlarmPlaying(viewHolder.alarm, true); |
| | | // System.out.println("HomeGridViewAdapter.run goto_video_fullscreen"); |
| | | mainActivity().runOnUiThread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | viewHolder.alarmVideoOverlay.setVisibility(View.INVISIBLE); |
| | | goto_video_fullscreen(viewHolder, fromButtonClick, true); |
| | | } |
| | | }); |
| | | return; |
| | | } |
| | | } |
| | | ToastUtil.show("录像正在处理中,请稍后再试。", false); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |