package com.basic.security.fragment.helper;
|
|
import android.gesture.GestureOverlayView;
|
import android.os.SystemClock;
|
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.manager.AlarmManager;
|
import com.basic.security.utils.KeyboardUtil;
|
import com.basic.security.utils.ToastUtil;
|
import com.basic.security.widget.CustomSpinner2;
|
import com.bumptech.glide.Glide;
|
|
import org.androidannotations.annotations.EFragment;
|
|
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.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);
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
|
viewHolderSet.put(viewHolder, viewHolder);
|
final ViewHolder viewHolder1 = viewHolder;
|
viewHolder1.alarm = alarm;
|
|
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 ("true".equals(alarm.get("alarmVideoValid"))) {
|
viewHolder1.alarmVideo.setVideoPath(alarm.get("alarmVideo"));
|
if ("true".equals(alarm.get("videoPlaying"))) {
|
playVideo(viewHolder1);
|
} else {
|
stopVideo(viewHolder1);
|
}
|
}
|
viewHolder.playVideo.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
goto_video_fullscreen(viewHolder1);
|
}
|
});
|
|
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);
|
}
|
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("报警已确认!");
|
}
|
});
|
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);
|
}
|
});
|
|
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 CustomSpinner2 matchPersonList;
|
public LinearLayout matchPersonListParent;
|
public LinearLayout highlightShadow;
|
public LinearLayout highlightBorder;
|
public Map<String, String> alarm;
|
}
|
}
|
|
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) {
|
for (AlarmListAdapter.ViewHolder vh : viewHolderSet.keySet()) {
|
if ("true".equals(vh.alarm.get("videoPlaying"))) {
|
vh.alarmVideoOverlay.setVisibility(View.VISIBLE);
|
}
|
}
|
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();
|
|
}
|
}
|