package org.droidplanner.android.notifications;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
import android.media.SoundPool;
import android.support.v4.content.LocalBroadcastManager;
import com.o3dr.android.client.Drone;
import org.droidplanner.android.R;
import org.droidplanner.android.utils.prefs.DroidPlannerPrefs;
public class EmergencyBeepNotificationProvider implements NotificationHandler.NotificationProvider {
private static final IntentFilter eventFilter = new IntentFilter(
Drone.ACTION_GROUND_COLLISION_IMMINENT);
private final BroadcastReceiver eventReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (Drone.ACTION_GROUND_COLLISION_IMMINENT.equals(action)) {
if(mPool != null) {
if (appPrefs.getImminentGroundCollisionWarning() && intent.getBooleanExtra(Drone
.EXTRA_IS_GROUND_COLLISION_IMMINENT, false)) {
mPool.play(beepBeep, 1f, 1f, 1, 1, 1f);
} else {
mPool.stop(beepBeep);
}
}
}
}
};
private SoundPool mPool;
private int beepBeep;
private final Context context;
private final DroidPlannerPrefs appPrefs;
public EmergencyBeepNotificationProvider(Context context) {
this.context = context;
appPrefs = DroidPlannerPrefs.getInstance(context);
}
@Override
public void init(){
mPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
beepBeep = mPool.load(context, R.raw.beep_beep, 1);
LocalBroadcastManager.getInstance(context).registerReceiver(eventReceiver, eventFilter);
}
@Override
public void onTerminate() {
LocalBroadcastManager.getInstance(context).unregisterReceiver(eventReceiver);
if(mPool != null) {
mPool.release();
mPool = null;
}
}
}