/******************************************************************************* * Created by Orlando Aliaga * Copyright 2015 Prey Inc. All rights reserved. * License: GPLv3 * Full license at "/LICENSE" ******************************************************************************/ package com.prey.actions.alarm; import android.content.Context; import android.media.AudioManager; import android.media.MediaPlayer; import com.prey.PreyConfig; import com.prey.PreyLogger; import com.prey.PreyStatus; import com.prey.R; import com.prey.json.UtilJson; import com.prey.net.PreyWebServices; public class AlarmThread extends Thread { private Context ctx; private String sound; private String messageId; public AlarmThread(Context ctx, String sound,String messageId) { this.ctx = ctx; this.sound = sound; this.messageId=messageId; } public void run() { PreyLogger.d("started alarm"); MediaPlayer mp = null; boolean start = false; try { PreyStatus.getInstance().setAlarmStart(); final AudioManager audio = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE); int max = audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC); final int setVolFlags = AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE | AudioManager.FLAG_VIBRATE; audio.setStreamVolume(AudioManager.STREAM_MUSIC, max, setVolFlags); if ("alarm".equals(sound)) mp = MediaPlayer.create(ctx, R.raw.alarm); else if ("ring".equals(sound)) mp = MediaPlayer.create(ctx, R.raw.ring); else if ("modem".equals(sound)) mp = MediaPlayer.create(ctx, R.raw.modem); else mp = MediaPlayer.create(ctx, R.raw.siren); mp.start(); Mp3OnCompletionListener mp3Listener = new Mp3OnCompletionListener(); mp.setOnCompletionListener(mp3Listener); PreyWebServices.getInstance().sendNotifyActionResultPreyHttp(ctx,"processed", messageId, UtilJson.makeMapParam("start", "alarm", "started",null)); start = true; int i = 0; while (PreyStatus.getInstance().isAlarmStart() && i < 80) { sleep(500); int currentVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC); if(currentVolume!=max){ audio.setStreamVolume(AudioManager.STREAM_MUSIC, max, setVolFlags); } i++; } mp.stop(); PreyStatus.getInstance().setAlarmStop(); PreyConfig.getPreyConfig(ctx).setLastEvent("alarm_finished"); } catch (Exception e) { PreyLogger.i("failed alarm: " + e.getMessage()); PreyWebServices.getInstance().sendNotifyActionResultPreyHttp(ctx,"failed", messageId, UtilJson.makeMapParam("start", "alarm", "failed", e.getMessage())); } finally { if (mp != null) mp.release(); } if (start) { PreyWebServices.getInstance().sendNotifyActionResultPreyHttp(ctx, UtilJson.makeMapParam("start", "alarm", "stopped",null)); } PreyLogger.d("stopped alarm"); } class Mp3OnCompletionListener implements MediaPlayer.OnCompletionListener { public void onCompletion(MediaPlayer mp) { mp.stop(); PreyLogger.d("stop alarm"); PreyStatus.getInstance().setAlarmStop(); } } }