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.view.ViewGroup;
|
import android.widget.ArrayAdapter;
|
import android.widget.BaseAdapter;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
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;
|
|
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
|
|
@EFragment
|
public abstract class HomeGridViewAdapter extends HomePlayAlarmSound {
|
|
public HomeGridViewAdapter.AlarmListAdapter alarmListAdapter;
|
public Map<HomeGridViewAdapter.AlarmListAdapter.ViewHolder, Object> viewHolderSet = new ConcurrentHashMap<>();
|
|
public class AlarmListAdapter extends BaseAdapter {
|
public int getCount() {
|
sqliteAlarmListLock.lock();
|
int size = sqliteAlarmList.size();
|
sqliteAlarmListLock.unlock();
|
return size;
|
}
|
public Object getItem(int position) {
|
sqliteAlarmListLock.lock();
|
Object obj = sqliteAlarmList.get(position);
|
sqliteAlarmListLock.unlock();
|
return obj;
|
}
|
public long getItemId(int position) {
|
return position;
|
}
|
public View getView(int position, View convertView, ViewGroup parent) {
|
ViewHolder viewHolder;
|
sqliteAlarmListLock.lock();
|
final Map<String, String> alarm = sqliteAlarmList.get(position);
|
sqliteAlarmListLock.unlock();
|
if (convertView == null) {
|
convertView = LayoutInflater.from(getContext()).inflate(R.layout.alarm_view, null);
|
viewHolder = new ViewHolder();
|
viewHolder.alarmPicture = convertView.findViewById(R.id.alarmPicture);
|
viewHolder.alarmVideo = convertView.findViewById(R.id.alarmVideo);
|
viewHolder.alarmVideoOverlay = convertView.findViewById(R.id.alarmVideoOverlay);
|
viewHolder.alarmVideoGestureOverlayView = convertView.findViewById(R.id.alarmVideoGestureOverlayView);
|
|
viewHolder.alarmTime = convertView.findViewById(R.id.alarmTime);
|
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.matchPersonList = convertView.findViewById(R.id.matchPersonList);
|
|
viewHolder.showPicture = convertView.findViewById(R.id.showPicture);
|
viewHolder.playVideo = convertView.findViewById(R.id.playVideo);
|
viewHolder.highlightShadow = convertView.findViewById(R.id.highlightShadow);
|
viewHolder.highlightBorder = convertView.findViewById(R.id.highlightBorder);
|
viewHolder.toggleSound = convertView.findViewById(R.id.toggleSound);
|
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);
|
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
|
public void onClick(View v) {
|
viewHolder1.alarmVideoOverlay.setVisibility(View.INVISIBLE);
|
stopVideo(viewHolder1);
|
if (!"true".equals(viewHolder1.alarm.get("alarmPictureValid"))) {
|
ToastUtil.show("显示图片失败, 图片路径错误。");
|
}
|
goto_picture_fullscreen(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, true);
|
}
|
});
|
|
viewHolder.toggleSound.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
soundPlaying = !soundPlaying;
|
viewHolder1.alarm.put("mute", "true");
|
AlarmManager.save(viewHolder1.alarm);
|
viewHolder1.highlightBorder.setBackgroundResource(R.drawable.confirm_dialog_background);
|
viewHolder1.highlightShadow.setVisibility(View.INVISIBLE);
|
viewHolder1.toggleSound.setImageResource(R.drawable.u258);
|
}
|
});
|
if ("true".equals(viewHolder1.alarm.get("mute"))) {
|
viewHolder1.toggleSound.setImageResource(R.drawable.u258);
|
viewHolder1.highlightBorder.setBackgroundResource(R.drawable.confirm_dialog_background);
|
viewHolder1.highlightShadow.setVisibility(View.INVISIBLE);
|
} else {
|
viewHolder1.toggleSound.setImageResource(R.drawable.u257);
|
viewHolder1.highlightBorder.setBackgroundResource(R.drawable.highlight_border);
|
viewHolder1.highlightShadow.setVisibility(View.VISIBLE);
|
}
|
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) {
|
goto_picture_fullscreen(viewHolder1);
|
}
|
});
|
viewHolder.alarmVideoGestureOverlayView.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
goto_video_fullscreen(viewHolder1, true);
|
}
|
});
|
|
if (("true").equals(alarm.get("alarmPictureValid"))) {
|
Glide
|
.with(mainActivity())
|
.load(alarm.get("alarmPicture"))
|
.into(viewHolder1.alarmPicture);
|
} else {
|
viewHolder1.alarmPicture.setImageResource(R.drawable.placeholder);
|
}
|
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.matchPersonList.setVisibility(View.INVISIBLE);
|
|
viewHolder.showMatchPersonList.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
viewHolder1.matchPersonList.performClick();
|
// viewHolder1.alarmPerson.setVisibility(View.INVISIBLE);
|
// viewHolder1.showMatchPersonList.setVisibility(View.INVISIBLE);
|
}
|
});
|
|
viewHolder.showMatchPersonList.setVisibility(View.GONE);
|
ViewGroup.LayoutParams alarmPictureParams = viewHolder.alarmPicture.getLayoutParams();
|
alarmPictureParams.height = WRAP_CONTENT;
|
alarmPictureParams.width = WRAP_CONTENT;
|
if ("人脸".equals(alarm.get("alarmType"))) {
|
alarmPictureParams.height = MATCH_PARENT;
|
viewHolder.matchPersonListParent.setVisibility(View.VISIBLE);
|
String matchPersonListStr = viewHolder1.alarm.get("matchPersonListStr");
|
String[] matchPersonArray = null;
|
if (matchPersonListStr != null && matchPersonListStr.length() > 0 && !"null".equals(matchPersonListStr)) {
|
matchPersonArray = matchPersonListStr.split("`", -1);
|
}
|
viewHolder.alarmPerson.setVisibility(View.VISIBLE);
|
if (matchPersonArray == null || matchPersonArray.length == 0 ) {
|
viewHolder.showMatchPersonList.setVisibility(View.GONE);
|
} else {
|
for (int i = 0; i < matchPersonArray.length; i++) {
|
String matchPerson = matchPersonArray[i];
|
if (matchPerson.length() > 9) {
|
int len = 0;
|
String newMatchPerson = "";
|
for (int j = 0; j < matchPerson.length(); j++) {
|
if (Character.isIdeographic(matchPerson.codePointAt(j))) {
|
len = len + 2;
|
} else {
|
len = len + 1;
|
}
|
if (len > 16 ) {
|
newMatchPerson += "\r\n";
|
len = 0;
|
}
|
newMatchPerson += matchPerson.charAt(j);
|
if (len == 16 ) {
|
newMatchPerson += "\r\n";
|
len = 0;
|
}
|
}
|
matchPersonArray[i] = newMatchPerson;
|
}
|
}
|
viewHolder.alarmPerson.setText(matchPersonArray[0]);
|
if (matchPersonArray.length > 1) {
|
viewHolder.matchPersonList.setVisibility(View.VISIBLE);
|
viewHolder.matchPersonList.setAdapter(new ArrayAdapter<>(getContext(), R.layout.spinner_item_small_text2, matchPersonArray));
|
viewHolder.matchPersonList.setPopupBackgroundResource(R.drawable.round_border);
|
viewHolder.showMatchPersonList.setVisibility(View.VISIBLE);
|
}
|
}
|
try {
|
if (viewHolder.matchPersonList.getAdapter() != null) {
|
if (viewHolder.matchPersonList.getAdapter().getCount() > 1) {
|
viewHolder.showMatchPersonList.setVisibility(View.VISIBLE);
|
} else {
|
viewHolder.showMatchPersonList.setVisibility(View.INVISIBLE);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
} else {
|
alarmPictureParams.width = MATCH_PARENT;
|
viewHolder.matchPersonListParent.setVisibility(View.GONE);
|
viewHolder.property.setVisibility(View.GONE);
|
viewHolder.alarmPerson.setVisibility(View.GONE);
|
viewHolder.showMatchPersonList.setVisibility(View.GONE);
|
}
|
viewHolder.alarmPicture.setLayoutParams(alarmPictureParams);
|
viewHolder1.matchPersonList.setVisibility(View.VISIBLE);
|
viewHolder1.matchPersonList.setViewHolder(viewHolder1);
|
return convertView;
|
}
|
|
public class ViewHolder {
|
public ImageView alarmPicture;
|
public VideoView alarmVideo;
|
public View alarmVideoOverlay;
|
public GestureOverlayView alarmVideoGestureOverlayView;
|
public TextView alarmTime;
|
public TextView alarmAddress;
|
public TextView property;
|
public TextView alarmType;
|
public TextView alarmPerson;
|
public ImageView showPicture;
|
public ImageView playVideo;
|
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_picture_fullscreen(AlarmListAdapter.ViewHolder viewHolder) {
|
if ("true".equals(viewHolder.alarm.get("alarmLargePictureValid"))) {
|
mainActivity().goto_fullscreenImageView(viewHolder.alarm.get("alarmLargePicture"));
|
} else {
|
if ("true".equals(viewHolder.alarm.get("alarmPictureValid"))) {
|
mainActivity().goto_fullscreenImageView(viewHolder.alarm.get("alarmPicture"));
|
}
|
ToastUtil.show("加载大图失败,图片路径错误");
|
}
|
}
|
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 (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);
|
}
|
}
|
|
}
|
|
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();
|
}
|
}
|
});
|
}
|
|
}
|