package com.example.alarmexample;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
public class ExampleBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Aquí lo que se quiera ejecutar
System.out.println("*******Temporizador " + new SimpleDateFormat("HH:mm:ss").format(new Date()));
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
public class ExampleBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Aquí lo que se quiera ejecutar
System.out.println("*******Temporizador " + new SimpleDateFormat("HH:mm:ss").format(new Date()));
}
}
El segundo paso es modificar el archivo AndroidManifest.xml. De este modo registramos el Receiver.
...
<activity
android:name="com.example.alarmexample.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Registar el Receiver -->
<receiver
android:name="com.example.alarmexample.ExampleBroadcastReceiver"
android:enabled="true" >
</receiver>
<activity
android:name="com.example.alarmexample.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Registar el Receiver -->
<receiver
android:name="com.example.alarmexample.ExampleBroadcastReceiver"
android:enabled="true" >
</receiver>
Finalmente debemos añadir el código necesario para registrar la acción a ejecutarse y para pararla. Suponiendo que se han añadido dos botones a nuestra aplicación el código sería el siguiente:
package com.example.alarmexample;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
private ImageButton btnStart;
private ImageButton btnStop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (ImageButton) findViewById(R.id.imageButton1);
btnStart.setOnClickListener(new OnClickListener() {
// Acción a ejecutar cada vez que se pulse el botón
@Override
public void onClick(View v) {
/***********************************************************/
/***********************************************************/
/***********************************************************/
// Registrar el servicio cada 60 segundos
AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, ExampleBroadcastReceiver.class);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(MainActivity.this, 1234567,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Realizar la repetición cada 60 segundos.
// Con el primer parámetro estamos indicando que se continue ejecutando
// aunque el dsipositivo este con la pantalla apagada.
// En el segundo parámetro se indica a partir de cuando comienza el scheduler,
// en este ejemplo es desde el momento actual
// El tercer parámetro indica cada cuanto tiempo.
// El cuarto hace referencia al receiver que se va a ejecutar.
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60*1000, pendingIntent); /***********************************************************/
/***********************************************************/
/***********************************************************/
}
});
btnStop = (ImageButton)findViewById(R.id.ImageButton01);
btnStop.setOnClickListener(new OnClickListener() {
// Acción a ejecutar cada vez que se pulse el botón
@Override
public void onClick(View v) {
/***********************************************************/
/***********************************************************/
/***********************************************************/
// Cancelación
AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, com.example.alarmexample.ExampleBroadcastReceiver.class);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(MainActivity.this, 1234567,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(pendingIntent);
/***********************************************************/
/***********************************************************/
/***********************************************************/
}
});
}
}
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
private ImageButton btnStart;
private ImageButton btnStop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (ImageButton) findViewById(R.id.imageButton1);
btnStart.setOnClickListener(new OnClickListener() {
// Acción a ejecutar cada vez que se pulse el botón
@Override
public void onClick(View v) {
/***********************************************************/
/***********************************************************/
/***********************************************************/
// Registrar el servicio cada 60 segundos
AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, ExampleBroadcastReceiver.class);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(MainActivity.this, 1234567,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Realizar la repetición cada 60 segundos.
// Con el primer parámetro estamos indicando que se continue ejecutando
// aunque el dsipositivo este con la pantalla apagada.
// En el segundo parámetro se indica a partir de cuando comienza el scheduler,
// en este ejemplo es desde el momento actual
// El tercer parámetro indica cada cuanto tiempo.
// El cuarto hace referencia al receiver que se va a ejecutar.
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60*1000, pendingIntent); /***********************************************************/
/***********************************************************/
/***********************************************************/
}
});
btnStop = (ImageButton)findViewById(R.id.ImageButton01);
btnStop.setOnClickListener(new OnClickListener() {
// Acción a ejecutar cada vez que se pulse el botón
@Override
public void onClick(View v) {
/***********************************************************/
/***********************************************************/
/***********************************************************/
// Cancelación
AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, com.example.alarmexample.ExampleBroadcastReceiver.class);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(MainActivity.this, 1234567,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(pendingIntent);
/***********************************************************/
/***********************************************************/
/***********************************************************/
}
});
}
}
No hay comentarios:
Publicar un comentario