package com.basic.security.fragment.helper; import android.media.MediaPlayer; import android.os.SystemClock; import android.view.View; import android.widget.ArrayAdapter; import com.basic.security.R; import com.basic.security.activity.MainActivity; import com.basic.security.base.BaseApplication; import com.basic.security.fragment.SettingFragment; import com.basic.security.manager.AlarmManager; import com.basic.security.manager.SettingManager; import com.basic.security.utils.AudioPlayer; import org.androidannotations.annotations.Background; import org.androidannotations.annotations.EFragment; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; @EFragment public abstract class HomePlayAlarmSound extends HomeBase { public static boolean shouldRestartSound = false; @Background public void playAlarmSound() { SettingManager.initMilliSecond(); SettingManager.initAlarmAudio(); while (true) { try { class Helper { public int getAlarmAudio() { String alarmAudio = SettingManager.alarmAudio; return SettingFragment.getAudioRawIndex(alarmAudio); } public boolean shouldPlayAlarmSound(){ boolean hasSound = false; boolean mutedAlarms = false; final Set viewHolderSet = ((MainActivity)BaseApplication.getApplication().activity).fragment_home.viewHolderSet.keySet(); Map viewHolderMap = new HashMap<>(); final Set viewHolderMuteSet = new HashSet<>(); sqliteAlarmListLock.lock(); for (Map sqliteAlarm : sqliteAlarmList) { long currentTime = System.currentTimeMillis(); try{ if ("false".equals(sqliteAlarm.get("mute"))) { long createTime = Long.parseLong(sqliteAlarm.get("createTime")); if ((currentTime - createTime) < SettingManager.milliSeconds) { hasSound = true; } else { mutedAlarms = true; sqliteAlarm.put("mute", "true"); // final HomeGridViewAdapter.AlarmListAdapter.ViewHolder viewHolder = viewHolderMap.get(sqliteAlarm.get("id")); // viewHolderMuteSet.add(viewHolder); AlarmManager.save(sqliteAlarm); } } } catch (Exception e){ e.printStackTrace(); } } sqliteAlarmListLock.unlock(); BaseApplication.getApplication().activity.runOnUiThread(new Runnable() { @Override public void run() { for (final HomeGridViewAdapter.AlarmListAdapter.ViewHolder viewHolder: viewHolderSet) { try{ if (viewHolder != null) { if ("true".equals(viewHolder.alarm.get("mute"))) { if (viewHolder.highlightBorder != null) { viewHolder.highlightBorder.setBackgroundResource(R.drawable.confirm_dialog_background); } if (viewHolder.highlightShadow != null) { viewHolder.highlightShadow.setVisibility(View.INVISIBLE); } if (viewHolder.toggleSound != null) { viewHolder.toggleSound.setImageResource(R.drawable.u258); } } } if (!"人脸".equals(viewHolder.alarm.get("alarmType"))) { if (viewHolder.showMatchPersonList.getVisibility() == View.VISIBLE) { viewHolder.showMatchPersonList.setVisibility(View.INVISIBLE); } } else { 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(); } // String[] matchPersonArray = null; // String matchPersonListStr = viewHolder.alarm.get("matchPersonListStr"); // if (matchPersonListStr != null && matchPersonListStr.length() > 0 && !"null".equals(matchPersonListStr)) { // matchPersonArray = matchPersonListStr.split("`", -1); // } // if (matchPersonArray != null && 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); // } } } catch (Exception e) { e.printStackTrace(); } } } }); // if (mutedAlarms) { // refreshGridView(); // } return hasSound; } public void execute() { if (shouldPlayAlarmSound()) { mp = AudioPlayer.play(mp, SettingManager.alarmAudio, true); // if (mp == null ) { // mp = MediaPlayer.create(mainActivity(), getAlarmAudio()); // mp.setLooping(true); // mp.start(); // } else { // if (!mp.isPlaying()) { // mp.stop(); // mp.release(); // mp = MediaPlayer.create(mainActivity(), getAlarmAudio()); // mp.setLooping(true); // mp.start(); // } // } } else { AudioPlayer.stop(mp); // if (mp != null && mp.isPlaying()) { // mp.stop(); // mp.release(); // mp = null; // } mp = null; } } } new Helper().execute(); SystemClock.sleep(500); } catch (Exception e) { e.printStackTrace(); } } } }