a
554325746@qq.com
2019-07-15 e6a8bdd23d6f5cb46ac650285829573280edcdf6
app/src/main/java/com/basic/security/fragment/helper/HomePlayAlarmSound.java
@@ -16,19 +16,78 @@
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.EFragment;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@EFragment
public abstract class HomePlayAlarmSound extends HomeBase {
    public static boolean shouldRestartSound = false;
    @Background
    public static List<MediaPlayer> mediaPlayers = new ArrayList<>();
    public static Lock mediaPlayersLock = new ReentrantLock();
    public static MediaPlayer mp;
    public static MediaPlayer playAlarm(String alarmAudio) {
        mediaPlayersLock.lock();
        boolean looping = true;
        try {
            if (mp == null ) {
                stopAlarm();
                mp = MediaPlayer.create(BaseApplication.getApplication().activity, SettingFragment.getAudioRawIndex(alarmAudio));
                mp.setLooping(looping);
                mp.start();
                mediaPlayers.add(mp);
            } else {
                boolean isPlaying = false;
                try {
                    isPlaying = mp.isPlaying();
                } catch (Exception e) {
                    System.out.println("HomePlayAlarmSound.playAlarm " + e.getMessage());
                }
                if (!isPlaying || !looping || HomePlayAlarmSound.shouldRestartSound) {
                    if (HomePlayAlarmSound.shouldRestartSound) {
                        HomePlayAlarmSound.shouldRestartSound = false;
                    }
                    stopAlarm();
                    mp = MediaPlayer.create(BaseApplication.getApplication().activity, SettingFragment.getAudioRawIndex(alarmAudio));
                    mp.setLooping(looping);
                    mp.start();
                    mediaPlayers.add(mp);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        mediaPlayersLock.unlock();
        return mp;
    }
    public static void stopAlarm() {
        mediaPlayersLock.lock();
        for (MediaPlayer mediaPlayer : mediaPlayers) {
            try {
                mediaPlayer.stop();
                mediaPlayer.release();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        mediaPlayers.clear();
        mediaPlayersLock.unlock();
    }
    public void playAlarmSound() {
        new Thread(){
            @Override
            public void run() {
        SettingManager.initMilliSecond();
        SettingManager.initAlarmAudio();
        while (true) {
@@ -40,6 +99,7 @@
                    }
                    public boolean shouldPlayAlarmSound(){
                        boolean hasSound = false;
                                try {
                        boolean mutedAlarms = false;
                        final Set<HomeGridViewAdapter.AlarmListAdapter.ViewHolder> viewHolderSet =
                                ((MainActivity)BaseApplication.getApplication().activity).fragment_home.viewHolderSet.keySet();
@@ -121,36 +181,16 @@
                                }
                            }
                        });
//                        if (mutedAlarms) {
//                            refreshGridView();
//                        }
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                        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();
//                                }
//                            }
                                    playAlarm(SettingManager.alarmAudio);
                        } else {
                            AudioPlayer.stop(mp);
//                            if (mp != null && mp.isPlaying()) {
//                                mp.stop();
//                                mp.release();
//                                mp = null;
//                            }
                            mp = null;
                                    stopAlarm();
                        }
                    }
                }
@@ -161,5 +201,7 @@
            }
        }
    }
        }.start();
}
}