package com.asp.radiorake.recording; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import com.asp.radiorake.AlarmHelper; import com.asp.radiorake.DatabaseHelper; import com.asp.radiorake.RadioDetails; import com.aspillai.R; import java.io.IOException; public class RecordingBroadcastReceiver extends BroadcastReceiver { private static final String TAG = "com.asp.radiorake.recording.RecordingBroadcastReceiver"; @Override public void onReceive(Context context, Intent receivedIntent) { Bundle bundle = receivedIntent.getExtras(); // Whilst the below line should work, it doesn't, so have to manually marshall and unmarshall. //RadioDetails radioDetails = bundle.getParcelable(context.getString(R.string.radio_details_key)); long databaseId = bundle.getLong(context.getString(R.string.timed_recorder_service_database_id_key)); RadioDetails radioDetails = new RadioDetails( bundle.getString(context.getString(R.string.radio_details_name_key)), bundle.getString(context.getString(R.string.radio_details_stream_url_key)), bundle.getString(context.getString(R.string.radio_details_playlist_url_key)), bundle.getLong(context.getString(R.string.timed_recorder_service_recording_duration)), bundle.getLong(context.getString(R.string.timed_recorder_service_operation_key)) ); // Need to fire off service request here and then if one-off delete from table. Intent newIntent = new Intent("com.asp.radiorake.recording.RecorderService"); newIntent.putExtra(context.getString(R.string.radio_details_key), radioDetails); RecorderService.sendWakefulWork(context, newIntent); if (databaseId > 0) { DatabaseHelper databaseHelper = new DatabaseHelper(context); try { databaseHelper.openDataBase(); switch ((int) radioDetails.getRecordingType()) { case AlarmHelper.ONE_OFF_SCHEDULED_RECORDING: databaseHelper.deleteScheduledRecording(databaseId); break; case AlarmHelper.DAILY_SCHEDULED_RECORDING: databaseHelper.updateScheduledRecordingAddDay(databaseId); break; case AlarmHelper.WEEKLY_SCHEDULED_RECORDING: databaseHelper.updateScheduledRecordingAddWeek(databaseId); break; default: Log.e(TAG, "Unexpected recordingType received - " + radioDetails.getRecordingType()); } } catch (IOException e) { Log.e(TAG, "IOException thrown when trying to access DB", e); } finally { databaseHelper.close(); } } } }