**Alarm Managerin her 15 snyede çalışmasını sağlayan sınıf**
public class alarmManagerBroadcastReceiver extends BroadcastReceiver
{ y sinif=new y();
int y=0;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
//Acquire the lock
wl.acquire();
y++;
// sinif.ad.setText(String.valueOf(y));
Toast.makeText(context, "Alarm Çalıyor : )", Toast.LENGTH_LONG).show();
// sinif.ad.setText("nn");
wl.release();
// Manifesttede tanımladığımız receiver sayesinde periyot süresi sonunda onReceive metodu içine gelip burada çalıştırmak istediğimiz kod uygulamanın o an açık olup olmamasından bağımsız olarak çalıştırılabilir.
}
public void SetRepeatingAlarm(Context context, int period)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
//C intent.putExtra(String.valueOf(i),String.valueOf(y++));
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
//After after 5 seconds
// Tekrarlayacak alarmın kurulması.Period milisaniye cinsinden oldugu icin birim cevrimi gerekli
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + period*1000, 1000 * period , pi);
}
public void SetOneTimeAlarm(Context context, int period)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
// Tek seferlik alarmın kurulması.Period milisaniye cinsinden oldugu icin birim cevrimi gerekli
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + period*1000, pi);
}
public void CancelAlarm(Context context)
{
// Kurulu son alarmı ipta et
Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}
**mainactivity sınıfım.diğer activity çağırdığım sınıf**
public class MainActivity extends Activity {
private alarmManagerBroadcastReceiver alarm;
private Button buttonStartRepeating;
private Button buttonStartOneTime;
private Button buttonStop;
private int period;
private x degiskenim;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// xml tarafından viewların çağrımı
degiskenim.degisken=0;
buttonStartRepeating = (Button) findViewById(R.id.button1);
buttonStartRepeating.setOnClickListener(clickEvent);
buttonStartOneTime = (Button) findViewById(R.id.button2);
buttonStartOneTime.setOnClickListener(clickEvent);
buttonStop = (Button) findViewById(R.id.button3);
buttonStop.setOnClickListener(clickEvent);
alarm = new alarmManagerBroadcastReceiver();
// Kaç saniyede sonra çalacak bir alarm kurulmalı?
period = 15;
}
android.view.View.OnClickListener clickEvent=new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == buttonStartRepeating.getId())
{
Intent i=new Intent(getApplicationContext(),y.class);
startActivity(i);
// startRepeatingTimer(i);
}else if(v.getId() == buttonStartOneTime.getId())
{
startOneTimeTimer();
}else if(v.getId() == buttonStop.getId())
{
cancelRepeatingTimer();
}
}
};
public void startRepeatingTimer()
{
// Tekrarlayan bir alarm kurulması
Context context = this.getApplicationContext();
if(alarm != null){
alarm.SetRepeatingAlarm(context, period);
}else{
Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
}
}
public void cancelRepeatingTimer()
{
// Kurulmuş olan son alarmın iptal edilmesi
Context context = this.getApplicationContext();
if(alarm != null){
alarm.CancelAlarm(context);
}else{
Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
**her sınıfın görebildiği değişkeni tanımladığım sınıf**
package com.example.alarmornek;
public class x {
public static int degisken=0;
}
**mainactivity sınıfında setrepeating butonuna tıkladığımda açılacak y classı **
package com.example.alarmornek;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class y extends Activity{
TextView ad;
String birlesmis;
private alarmManagerBroadcastReceiver alarm;
private int period;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.y);
ad=(TextView)findViewById(R.id.textView1);
alarm = new alarmManagerBroadcastReceiver();
// Kaç saniyede sonra çalacak bir alarm kurulmalı?
period = 15;
startRepeatingTimer();
}
public void startRepeatingTimer()
{
// Tekrarlayan bir alarm kurulması
Context context = this.getApplicationContext();
if(alarm != null){
i++;
alarm.SetRepeatingAlarm(context, period);
// finish();
// startActivity(getIntent());
}else{
Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
}
}
}
**mainactivity xml**
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginLeft="56dp"
android:layout_marginTop="30dp"
android:text="Start Repeating" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="36dp"
android:text="Start one time" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button2"
android:layout_below="@+id/button2"
android:layout_marginTop="42dp"
android:text="Stop alarm" />
</RelativeLayout>
**y activity xml**
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="102dp"
android:layout_marginTop="103dp"
android:text="TextView" />
</RelativeLayout>