a
554325746@qq.com
2019-12-25 38492bbaa63586e2f4877da0eaa01a082fd565a6
app/src/main/java/com/basic/security/fragment/helper/HomeGridViewAdapter.java
@@ -1,7 +1,9 @@
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;
@@ -14,14 +16,18 @@
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;
@@ -68,6 +74,7 @@
                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);
@@ -81,13 +88,24 @@
                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
@@ -100,19 +118,23 @@
                    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);
                }
            });
@@ -154,7 +176,7 @@
                        sqliteAlarmList.remove(viewHolder1.alarm);
                        sqliteAlarmListLock.unlock();
                        alarmListAdapter.notifyDataSetChanged();
                        ToastUtil.show("报警已确认!");
                        ToastUtil.show("报警已确认!", false);
                    }
                });
            } else {
@@ -175,7 +197,7 @@
            viewHolder.alarmVideoGestureOverlayView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    goto_video_fullscreen(viewHolder1);
                    goto_video_fullscreen(viewHolder1, true);
                }
            });
@@ -291,11 +313,13 @@
            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;
        }
    }
@@ -310,39 +334,98 @@
        }
    }
    public void goto_video_fullscreen(final AlarmListAdapter.ViewHolder viewHolder) {
        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 ("true".equals(vh.alarm.get("videoPlaying"))) {
                if (AlarmManager.getAlarmPlaying(vh.alarm)) {
                    vh.alarmVideoOverlay.setVisibility(View.VISIBLE);
                    vh.alarmVideoOverlayVisibleTime = System.currentTimeMillis();
                }
            }
            new Thread(){
            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("播放失败, 视频路径错误。");
                                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("播放失败, 视频路径错误。");
                                ToastUtil.show("录像正在处理中,请稍后再试。", false);
                            }
                        }
                    });
                }
            }.start();
            });
        } else {
            ToastUtil.show("播放失败, 视频路径错误。");
            if (!fromRetry) {
                tryGetRemoveVideoUrl(viewHolder, fromButtonClick);
            }
        }
    }
    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("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();
                }
            }
        });
    }
}