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