Thursday, 11 June 2015

Alarm screen class

package com.siliconicpro.admin.ialarm;

import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.database.Cursor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Vibrator;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class AlarmScreen extends Activity {
    private MediaPlayer mediaPlayer;
    private Vibrator vib;
    private Uri uri;
    private String snoozeTime;
    private DateFormat timeFormat = new SimpleDateFormat("hh:mm aa");
    private DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.alarm_screen);
        TextView title = (TextView)findViewById(R.id.title);
        TextView location = (TextView)findViewById(R.id.location);
        TextView time = (TextView)findViewById(R.id.time);
        TextView date = (TextView)findViewById(R.id.date);
        final ImageView stop_alarm = (ImageView)findViewById(R.id.stop_alarm);

        // Getting Information from Intent
        String alarm_id = getIntent().getExtras().getString("id");

        // Getting Alarm Data
        DatabaseOperations dop = new DatabaseOperations(this);
        Cursor cursor1 = AlarmsTable.getAlarm(dop, alarm_id);
        String title_ = cursor1.getString(cursor1.getColumnIndex(AlarmsTable.TITLE));
        String location_ = cursor1.getString(cursor1.getColumnIndex(AlarmsTable.LOCATION));
        String time_ = cursor1.getString(cursor1.getColumnIndex(AlarmsTable.TIME));
        String date_ = cursor1.getString(cursor1.getColumnIndex(AlarmsTable.DATE));
        int repeat_ = cursor1.getInt(cursor1.getColumnIndex(AlarmsTable.REPEAT));
        int interval_ = cursor1.getInt(cursor1.getColumnIndex(AlarmsTable.INTERVAL));
        snoozeTime = cursor1.getString(cursor1.getColumnIndex(AlarmsTable.SNOOZE));
        long currentTimeLong = Home.getRingTime(time_, date_, interval_);

        // Turning Off No Repeat Alarms
        if(repeat_ == 0) {
            AlarmsTable.updateAlarmStatus(Integer.parseInt(alarm_id), 0, dop);
        }
        // for Repeating Alarms
        if(repeat_ == 1){
            String newTime = timeFormat.format(currentTimeLong);
            String newDate = dateFormat.format(currentTimeLong);
            AlarmsTable.updateRepeatTime(alarm_id, newTime, newDate, dop);
        }

        // Getting Settings Data
        uri = SettingsTable.getUri(dop);

        // Setting Text Field Values
        // Get Screen Orientation Info
        int ot = getResources().getConfiguration().orientation;
        switch(ot) {
            case Configuration.ORIENTATION_LANDSCAPE:
                //
                break;
        }
        title.setText(title_);
        if(location_.equals("")){
            location.setVisibility(View.GONE);
        }
        else {
            location.setText(location_);
        }
        time.setText(timeFormat.format(currentTimeLong));
        date.setText(dateFormat.format(currentTimeLong));

        // On Click Listener
        stop_alarm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                stop_alarm.setImageDrawable(getResources().getDrawable(R.drawable.stop_button_click));
                finish();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
                        WindowManager.LayoutParams.FLAG_FULLSCREEN|
                        WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|
                        WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
                        WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
                        WindowManager.LayoutParams.FLAG_FULLSCREEN|
                        WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|
                        WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        snoozeTimer();
        playSound();
    }

    private void snoozeTimer() {
        int time;
        String snooze[] = getResources().getStringArray(R.array.snooze);
        if(snoozeTime.equals(snooze[0])){
            time = 2;
        }
        else if(snoozeTime.equals(snooze[1])){
            time = 5;
        }
        else{
            time = 10;
        }
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                finish();
            }
        }, time * 60 * 1000);
    }

    private void playSound(){
        mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setDataSource(this, uri);
            AudioManager audioManager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
            mediaPlayer.setLooping(true);
            mediaPlayer.prepare();
            mediaPlayer.start();
            // When phone is in Vibrate mode
            if(audioManager.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE){
                startVibration();
            }

        }catch(Exception e){
            mediaPlayer = null;
        }
    }

    // Setting Vibration Mode
    private void startVibration() {
        vib = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
        long array[] = {1000, 1000};
        vib.vibrate(array, 0);
    }

    @Override
    protected void onStop() {
        super.onStop();
        if(mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer = null;
        }
        if(vib != null) {
            vib.cancel();
        }
    }
}

No comments:

Post a Comment