سلام.
من قبلا هم تایمر (آلارم) ساختم به کمک دوستان برای یک تاریخ و زمان خاص. لینک پایین. فقط از reciver استفاده کردم.
[/url]
مشکل در ایجاد تایمر برای انجام یک کار در تاریخ و ساعت مشخص
[url=http://www.kelidestan.com/forum/showthread.php?tid=7192]
حالا مسئله اینه که تایمر و برای هر دقیقه میخوام تکرار کنم. حتی با بسته شدن برنامه و ریست شدن گوشی.
گرچه شبیه همون کار بالاست و فقط کافیه دقیقه ست بشه اما گاها جواب نمیده.
میخوام کمکم کنید تا اینبار اصولی تر و با استفاده از Reciver , service این کارو انجام بدم.
این کدها رو میذارم براتون. در حال حاضر هیچگونه الارمی هم نمیده.
توی مانیفست هم همه گزینه های لازم و تعریف کردم.
سرویس Myservice برای همیش اماده بودن و صدا زدن کلاسAlarmReciver .
رسیور AutoStart برای وقتی که گوشی ریست شد.
رسیور AlarmReciver برای ست کردن آلارم.
ممنون میشم از دوستانی که وارد هستند مشکل کار رو پیدا کنن و راهنماییم کنن.
من قبلا هم تایمر (آلارم) ساختم به کمک دوستان برای یک تاریخ و زمان خاص. لینک پایین. فقط از reciver استفاده کردم.
[/url]
مشکل در ایجاد تایمر برای انجام یک کار در تاریخ و ساعت مشخص
[url=http://www.kelidestan.com/forum/showthread.php?tid=7192]
حالا مسئله اینه که تایمر و برای هر دقیقه میخوام تکرار کنم. حتی با بسته شدن برنامه و ریست شدن گوشی.
گرچه شبیه همون کار بالاست و فقط کافیه دقیقه ست بشه اما گاها جواب نمیده.
میخوام کمکم کنید تا اینبار اصولی تر و با استفاده از Reciver , service این کارو انجام بدم.
این کدها رو میذارم براتون. در حال حاضر هیچگونه الارمی هم نمیده.
توی مانیفست هم همه گزینه های لازم و تعریف کردم.
سرویس Myservice برای همیش اماده بودن و صدا زدن کلاسAlarmReciver .
رسیور AutoStart برای وقتی که گوشی ریست شد.
رسیور AlarmReciver برای ست کردن آلارم.
ممنون میشم از دوستانی که وارد هستند مشکل کار رو پیدا کنن و راهنماییم کنن.
Mainactivity
کد پیاچپی:
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, MyService.class);
startService(intent);
}
}
Myservice
کد پیاچپی:
public class MyService extends Service
{
AlarmReciver alarmReciver = new AlarmReciver();
public void onCreate()
{
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
alarmReciver.setAlarm(this);
return START_STICKY;
}
@Override
public void onStart(Intent intent, int startId)
{
alarmReciver.setAlarm(this);
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}
AlramReciver
کد پیاچپی:
public class AlarmReciver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
// Put here YOUR code.
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(100);
Toast.makeText(context, "AlarmReciver !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example
wl.release();
}
public void setAlarm(Context context)
{
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, AlarmReciver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 30 * 1, pi); // Millisec * Second * Minute
Toast.makeText(context, "Alarm set for 30 sec", Toast.LENGTH_LONG).show();
}
}
AutoStart
کد پیاچپی:
public class AutoStart extends BroadcastReceiver
{
AlarmReciver alarmReciver = new AlarmReciver();
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
{
alarmReciver.setAlarm(context);
}
}
}
مانیفست :
کد پیاچپی:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ir.m.m">
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:allowBackup="true"
android:icon="@drawable/logo2"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="ir.m.m.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<receiver android:process=":remote" android:name="ir.m.m.AlarmReciver">
</receiver>
<receiver android:name="ir.m.m.AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</action>
</intent-filter>
</receiver>
...
<service
android:name="ir.m.m.MyService"
android:enabled="true"
android:process=":My_service" >
</service>
</manifest>