¿Cómo construir una aplicación de configuración de alarma simple en Android?

En este artículo, vamos a ver cómo crear una aplicación muy interesante llamada Alarm Setter. La alarma juega un papel vital en nuestro día a día. Hoy en día la alarma se ha convertido en nuestro asistente de despertador. Cada teléfono móvil está asociado a una aplicación de alarma. Crearemos esta aplicación usando Android Studio. Android Studio proporciona un excelente entorno unificado para crear aplicaciones para teléfonos y tabletas con Android, Android Wear, Android TV y Android Auto porque proporciona una gran cantidad de funciones de creación de aplicaciones y también es muy fácil de usar. A continuación se muestra un video de muestra para tener una idea de lo que vamos a hacer en este artículo. Tenga en cuenta que vamos a implementar este proyecto utilizando el  lenguaje Java  . 

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. En este archivo, hemos agregado dos elementos ‘TimePicker’ y ‘ToggleButton’ . TimePicker se usa para capturar la hora de la alarma y se agrega ToggleButton para activar o desactivar la alarma. Inicialmente, ToggleButton está desactivado. Se activa cuando se configura una alarma. A continuación se muestra el código para el archivo activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
  
    <!--Added Time picker just to pick the alarm time-->
    <!--gravity is aligned to center-->
    <TimePicker
        android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />
  
    <!--Added Toggle Button to set the alarm on or off-->
    <!--ByDefault toggleButton is set to false-->
    <ToggleButton
        android:id="@+id/toggleButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="20dp"
        android:checked="false"
        android:onClick="OnToggleClicked" />
  
    <!--"OnToggleClicked" method will be implemented in MainActivity.java -->
      
</LinearLayout>

Paso 3: trabajar con el archivo MainActivity.java

Vaya a Clase MainActivity.java . En la clase MainActivity.java se implementa el método onToggleClicked( ) en el que la hora actual y los minutos se configuran usando el calendario. Los servicios de alarma se implementan utilizando la clase AlarmManager. La alarma está configurada de tal manera que suena y vibra repetidamente hasta que se apaga el botón de alternancia. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.ToggleButton;
  
import androidx.appcompat.app.AppCompatActivity;
  
import java.util.Calendar;
  
public class MainActivity extends AppCompatActivity {
    TimePicker alarmTimePicker;
    PendingIntent pendingIntent;
    AlarmManager alarmManager;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        alarmTimePicker = (TimePicker) findViewById(R.id.timePicker);
        alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
  
    }
  
    // OnToggleClicked() method is implemented the time functionality
    public void OnToggleClicked(View view) {
        long time;
        if (((ToggleButton) view).isChecked()) {
            Toast.makeText(MainActivity.this, "ALARM ON", Toast.LENGTH_SHORT).show();
            Calendar calendar = Calendar.getInstance();
  
            // calendar is called to get current time in hour and minute
            calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
            calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());
  
            // using intent i have class AlarmReceiver class which inherits
            // BroadcastReceiver
            Intent intent = new Intent(this, AlarmReceiver.class);
  
            // we call broadcast using pendingIntent
            pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
  
            time = (calendar.getTimeInMillis() - (calendar.getTimeInMillis() % 60000));
            if (System.currentTimeMillis() > time) {
                // setting time as AM and PM
                if (calendar.AM_PM == 0)
                    time = time + (1000 * 60 * 60 * 12);
                else
                    time = time + (1000 * 60 * 60 * 24);
            }
            // Alarm rings continuously until toggle button is turned off
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, 10000, pendingIntent);
            // alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (time * 1000), pendingIntent);
        } else {
            alarmManager.cancel(pendingIntent);
            Toast.makeText(MainActivity.this, "ALARM OFF", Toast.LENGTH_SHORT).show();
        }
    }
}

Paso 4: trabajar con la clase BroadCastReceiver (AlarmReceiver)

Cree una nueva clase Java llamada «AlarmReceiver.java» en el mismo lugar donde reside la clase MainActivity.java . En esta clase se implementa el método onReceive() . Aquí hemos agregado la funcionalidad de vibración y un tono de llamada predeterminado que comienza a vibrar y sonar cuando está programada la hora de la alarma. A continuación se muestra el código del archivo AlarmReceiver.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Vibrator;
import android.widget.Toast;
  
import androidx.annotation.RequiresApi;
  
public class AlarmReceiver extends BroadcastReceiver {
    @RequiresApi(api = Build.VERSION_CODES.Q)
    @Override
    // implement onReceive() method
    public void onReceive(Context context, Intent intent) {
  
        // we will use vibrator first
        Vibrator vibrator = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);
        vibrator.vibrate(4000);
  
        Toast.makeText(context, "Alarm! Wake up! Wake up!", Toast.LENGTH_LONG).show();
        Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        if (alarmUri == null) {
            alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        }
          
        // setting default ringtone
        Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
  
        // play ringtone
        ringtone.play();
    }
}

Paso 5: Jugando con los colores

Vaya primero a la carpeta «valores» y luego elija el archivo colors.xml . En el archivo colors.xml, puede mantener los colores de su elección tantos como quiera usar en su aplicación. Solo tienes que dar el nombre y poner el código de color de los respectivos colores. Mantuve el color de la barra de aplicaciones como «#0F9D58» , al que llamamos «colorPrimary». 

XML

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#0F9D58</color>
    <color name="colorPrimaryDark">#0F4C2E</color>
    <color name="colorAccent">#9D0F9B</color>
</resources>

Paso 6: Cambiar el tema de la aplicación

Vaya primero a la carpeta «valores» y luego elija el archivo themes.xml . En el archivo theme.xml, hemos utilizado «Theme.AppCompat.Light.DarkActionBar», que es un tema claro con una ActionBar oscura . Podemos usar un tema ligero con una barra de acción ligera usando “Theme.AppCompat.Light.LightActionBar” , todo depende de nuestra elección y necesidad. 

XML

<resources>
    
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
  
</resources>

Paso 7: Agregar permiso en «AndroidManifest.xml»

Vaya al archivo «AndroidManifest.xml» . Un BroadcastReceiver se registra en AndroidManifest.xml agregando una sección de receptor después de que finaliza la sección de la aplicación. Además, dé permiso para vibrar usando:

<usos-permiso android:name=”android.permission.VIBRATE” />

Producción:

Aquí hemos configurado manualmente la hora de la alarma. También puede configurarlo ajustando el reloj que se muestra al frente. Tendrás que esperar a la hora de la alarma. Mostrará continuamente “¡Alarma! ¡Despierta! ¡Despierta!» y suena y vibra hasta que se apaga el botón de alternancia. Puede obtener el código fuente en el siguiente enlace de GitHub: https://github.com/Babitababy/Alarm_setter

Publicación traducida automáticamente

Artículo escrito por annulata2402 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *