Android Studio: creare una Sveglia
Iniziamo da qui;
Come creare questa Sveglia?
Aprendo il progetto ho solo inserito una TextView. Una componente. Trasportandola. Infatti appare anche SELEZIONATA
Abbiamo anche la possibilità selezionando la TextView, di modellarla, cioè di bloccarla in qualche Modo. Piazzarla li
Come gestire un Componente all'interno dell'Activity?
per definire dei Campi e quindi inserire L'ora e i minuti, per la Nostra Sveglia: Dalla Palette: EditText
per capir meglio come gestire;
il nostro Layout è completato con le Componenti;
Visualizzazione tipo Text:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="61dp"
android:layout_marginTop="33dp"
android:layout_marginEnd="134dp"
android:text="A che ora deve suonare la Sveglia?"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="55dp"
android:layout_marginTop="50dp"
android:text="Ora:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="51dp"
android:layout_marginTop="33dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="51dp"
android:layout_marginTop="35dp"
android:text="Minuti:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="45dp"
android:layout_marginTop="26dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="171dp"
android:layout_marginTop="38dp"
android:text="Imposta"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText2" />
</androidx.constraintlayout.widget.ConstraintLayout>
Ora Programmiamo la Nostra Sveglia, passando
MainActivity.java
package it.example.sveglia2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
procediamo:
Se l'EditText (Classe) appare in rosso, allora, dobbiamo importarla. CTRL+INVIO
Se inserendo nel Codice, il Button, dovesse apparire rosso, CTRL+INVIO per importarlo.
codice è:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = (EditText) findViewById(R.id.editText);
EditText editText2 = (EditText) findViewById(R.id.editText2);
Button button = (Button) findViewById(R.id.button);
// azzero i campi
editText.setText("");
editText2.setText("");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
Codice:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = (EditText) findViewById(R.id.editText);
EditText editText2 = (EditText) findViewById(R.id.editText2);
Button button = (Button) findViewById(R.id.button);
// azzero i campi
editText.setText("");
editText2.setText("");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
// creo una Procedura
public void createAlarm(String message, int hour, int minutes)
{
Intent sveglia = new Intent(AlarmClock.ACTION_SET_ALARM)
.putExtra(AlarmClock.EXTRA_MESSAGE, message)
.putExtra(AlarmClock.EXTRA_HOUR, hour)
.putExtra(AlarmClock.EXTRA_MINUTES, minutes);
startActivity(sveglia);
}
}
da osservare:
Notiamo degli errori;
e infine
Codice finale:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText editText = (EditText) findViewById(R.id.editText);
final EditText editText2 = (EditText) findViewById(R.id.editText2);
Button button = (Button) findViewById(R.id.button);
// azzero i campi
editText.setText("");
editText2.setText("");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createAlarm("Sveglia", Integer.parseInt( editText.getText().toString() ),
Integer.parseInt( editText2.getText().toString() ) );
}
});
}
// creo una Procedura
public void createAlarm(String message, int hour, int minutes)
{
Intent sveglia = new Intent(AlarmClock.ACTION_SET_ALARM)
.putExtra(AlarmClock.EXTRA_MESSAGE, message)
.putExtra(AlarmClock.EXTRA_HOUR, hour)
.putExtra(AlarmClock.EXTRA_MINUTES, minutes);
startActivity(sveglia);
}
}
infine dobbiamo IMPOSTARE i Permessi, affinchè la Sveglia Suoni
e
Inserendo i permessi nel Manifest, la nostra Sveglia, Funzionerà!
PERMESSI:
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
da inserire prima di <APPLICATION>