آموزش Alarm Manager در برنامه نویسی اندروید
سلام دوستان با آموزش Alarm Manager در برنامه نویسی اندروید برگشتیم از Alarm می توانیم در جاهای مختلف مانند اذان استفاده کنیم اگر بخواهیم برنامه ما سر ساعت خاصی اجرا شود و شروع به زنگ زدن کند می توانیم از Alarm استفاده کنیم مثل برنامه هایی که برای اذان صبح نوشه می شوند.
برویم به سراغ کد برنامه
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void setRecurringAlarm(Context context) { Calendar updateTime = Calendar.getInstance(); updateTime.setTimeZone(TimeZone.getTimeZone("GMT+5:00")); updateTime.set(Calendar.HOUR_OF_DAY, 3); updateTime.set(Calendar.MINUTE, 00); Intent intent = new Intent(context, Tasks.class); PendingIntent recurringDownload = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarms = (AlarmManager) this.getSystemService( Context.ALARM_SERVICE); alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, recurringDownload); } |
در بالا ما alarm خود رو در ساعت ۳ شب ست کردم یعنی در هر روز ساعت ۳ صبح شروع به انجام یک کاری می کند حالا این کار را ما در یک کلاس دیگر به نام task ایجاد کرده ایم و خود این task داری یک BroadcastReciver هست قبل تر اموزش BroadcastReciver را داده ایم ولی باز در اینجا تکرارش می کنیم .
و دقت کنید ما از متد Calendar استفاده کردایم یعنی تایمر را برابر با زمان Gmt (گرینویچ) تنظیم کردیم و ساعت و دقیقه را بر روی 3:00 قرار داده ایم و برای اینکه این تکرار شود از از setInexcatRepeating قرار داده ایم.
یک کلاس به نام Tasks ایجاد کرده سپس به شکل زیر آن را گسترش دهید.
1 2 3 4 5 6 | public class Tasks extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Do somthing", Toast.LENGTH_SHORT).show(); } } |
و اگر تاریخ گوشی خود را یک روز جلو ببرید یک Toast برای شما نمایش داده می شود. فقط توجه کنید باید کلاس tasks را در بخش AndroidManifest قبل از بسته شدن تگ Application تعریف کنید به شکل زیر
1 2 | <receiver android:name=".Tasks"> </receiver> |
و یادتان نرود دسترسی (permission) زیر را به androidManifest اضافه کنید. در صورتی که این دسترسی را اضافه نکنید برنامه Force close می دهد. این کد را باید قبل از باز شدن تگ Application قرار دهید.
1 | <uses-permission android:name="com.android.alarm.permission.SET_ALARM" /> |
آموزش به پایان رسید انشاالله مفید واقع شده باشد.
سلام. لطفا در مورد کنسل کردن الارم هم توضیح بدین.
سلام و ممنون از نظرتون در آینده ای نزدیک اضافه می شود.
سلام خسته نباشید من یه مشکل دارم میخواستم اگه امکانش هست کمکم کنید,یه اپ میسازم میخوام مکانی که توش هستم رو بگیره بعد با مختصات ادرسی که قبلا با placepicker گرفته مقایسه کنه درصورتی که یکی بود آلارم بده میشه کمکم کنید؟
سلام آموزش به دست آوردن مکان در سایت موجود است می توانید از لینک زیر استفاده کنید.
https://programchi.ir/2017/08/02/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a8%d9%87-%d8%af%d8%b3%d8%aa-%d8%a2%d9%88%d8%b1%d8%af%d9%86-%d9%85%da%a9%d8%a7%d9%86-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-gps-%d8%af/
در صورتی که سوال دیگری دارید بفرمایید.
موفق باشید.
سلام خسته نباشید
ببخشید من زیاد حرفه نیستم و تازه دارم یاد میگیرم
private void set Recurring Alarm رو باید کجای مین اکتیویتی قرار بدیم؟؟؟؟؟؟
لطفا جوابتون رو به ایمیلم ارسال کنید ممنون میشم
زیر void اصلی یا main اصلی باید قرار داده شود.
سلام . چرا نمیشه شما رو تو ی لینکد این دنبال کرد . ممنونم . ازتون . و یک سوال من میخوام توی تاریخ و ساعت مشخص اس م اس ارسال بشه . میشه بفرمایید من ماه و روز رو چطوری اضافه کنم .
برای ارسال اس امس از کدی که زحمت کشیدید گذاشتید AlarmManager alarms = (AlarmManager) this.getSystemService(
Context.ALARM_SERVICE);
alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP,
updateTime.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, recurringDownload);
حذف می کنم و اس ام اس منیجر و پروسه ارسال اس ام اس رو به کلاس تسک اضافه می کنم . فقط میشه ست کردن ماه و روز و سال رو مثل ساعت و دقیقه بفرمایید.
بسیار ممنونم از شما
سلام و درود
می توانید مثل زیر عمل کنید
موفق باشید.
سلام و احترام
خیلی ممنونم از پاسخگویی شما. پس الارم منیجر اصلا ربطی به زنگ زدن نداره . برای همه چی تعریف میشه و تو کلاس تسکی که فرمودید مشخص میکنم تو این الارم ست شده چه کاری انجام بشه .
بسیار ممنونم از شما
سلام و احترام
مورد دیگه میشه ایکس ام ال اینکه کم چطوری زمان و تاریخ را بگیرم و. بگذارید . مانند کدی که لطف کردید تو پاسخ
سپاس فراوان
سلام من عذر خواهی می کنم . امکان داره ارسال اس ام اس رو به وسیله زمانبندی الارم منیجر توضیح بدید . من به شدتدچار اشکال شدم اگر امکان داشته باشه ممنون میشم. من بسیار دچار اشکال شدم
بسیار ممنونم
سلام
پاس ام اس ای که من ست میکنم با لارم منیجر در دیتابیس ذخیره میشه اما فرستاده نمیشه . میشه تعریف تایم زون لوکال رو توضیح بدید میشد داخل تایم زون چیز دیگه ای گذاشت که شما گذاشتید .
سلام و درود بله شما می توانید ساعت زمان یا حتی تاریخ را به صورت جداگانه برای alaram manager ست کنید. مثل زیر
موفق باشید.
دیدم در قسمت date picker همین سایت ممنونم از لط ف شما
خواهش می کنم موفق باشید.
یک سوال بزرگ اون تقویم جلالی که با date picker اموزش شما تنظیم میکنم برای ست کردن الارم منیجرم چطوری ازش استفاده کنم . یعنی مثلا 29 ابان سال 1396 رو انتخاب میکنم از تقویم میگیرم اما چطور به میلادی تبدیلش کنم برای تنظیم الارم منیجرم ممنون میشم راهنمایی بفرمایید
سلام می توانید آن را تبدیل کنید برای تبدیل از کد زیر استفاده کنید.
ابتدا یک کلاس به نام زیر درست کنید
و برای استفاده از آن می توانید مثل زیر عمل کنید
موفق باشید.
سلام من الارم منیجرم بعد از خاموش شدن گوشی دیگه کار نمیکنه. لطفا راهنمایی ام کنید
فکر میکنم broadcast receiver زیر مشکلتون حل کنه:
” action android:name=”android.intent.action.BOOT_COMPLETED”
سلام باید از سرویس استفاده کنید و در بخش Manifest آن را در هربار بوت اجرا کنید کد زیر را بررسی کنید.
اول یه سرویس درست کنید سپس مثل زیر در هر بار بوت اجراش کنید.
اینهم کد مربوط به سرویس
موفق باشید.
سلام، ببخشید مطمئنید که Service نمی خواد چون اگه برنامه بسته بشه کامل دیگه کار نمی کنه، Broadcast Receiver هم از کار میفته!
یا اینکه ما داریم با آلارم گوشی داریم کار می کنیم؟!
سلام استفاده از سرویس اجباری نیست ولی استفاده از آن منطقی است ولی بازهم نیاز نیست چون می توان در بخش filter مربوط به manifest بهش boot رو اضافه کنید تا در هر بار خاموش روشن شدن گوشی اتوماتیک ست بشه ولی با استفاده از سرویس شاید اینکار به مراتب راحتر باشد.
موفق و پیروز باشید.
سلام بی سرویس و دادن دسترسی بوت در مانی فست الارم منیجر کار میکنه ولی بعد از بوت شدن گوشی نه زمانی که در الارم منیجر ذخیره کردم
سلام
چیکار کنیم که این الارم منیجر برای دفعه اول اجرا نشه ؟؟؟
سلام و درود با ایجاد یک shareperfence چک کنید در اولین بار این امر انجام نشود.
موفق و پیروز باشید.
سلام
من آلارم رو تنظیم می کنم و وقتی برنامه در حال اجرا باشه انجام میشه. اما وقتی برنامه در بک گراند توسط اندروید کیل میشه دیگه آلارم هام کار نمی کنه. نوتیفیکیشن هم تنظیم کردم که هر روز فایر بشه اما در گوشی خودم با کیل شدن برنامه در بک گراند، نوتیفیکیشن هم متوقف میشه اما در گوشی مامانم متوقف نمی شه. اندروید گوشی مامانم قدیمی تر از مال منه. اما اپلیکیشن های دیگه ای که دارم، مثل باد صبا، در گوشی خودم حتی اگه کیل شده باشن باز هم آلارم و نوتیفیکیشن شون ران می شه. می شه راهنمایی م کنید؟
سلام و درود
باید دوبار آلارم ست شود یعنی یکبار در اولین بار که برنامه اجرا می شود پس یکبار در همان صفحه اصلیتون این کار رو بکنید و یک سرویس درست کنید تا در هر بار خاموش روشن شدن گوشی بیاید این آلارمتون رو صدا بزنید یعنی یک سرویس ایجاد کرده تا این کار را برای شما انجام دهد.
موفق باشید.
سلام . اول یه تشکر بابت زحماتتون . دوم هم اینکه این کد برا من ارور میده . هیچ کدوم از context هارو نمیشناسه و ارور میده . همچنین set ، setTimezone ، getTime zone و getTimeInMillis هم آندرلاین قرمز دارن . ممنون میشم راهنماییم کنید
سلام
context که مشیه root اکتیویتتیون باید هر جایی که استفاده می کنید context رو بریزید متود هایی که گفتید مشکلی ندارد.
سلام شما توی این اموزش یک ساعت خاص براش گذاشتین من میخوام یک ساعت یک بار یک کار انجام بشه؟؟
سلام با SharePrefrence چک کنید در سایت سرچ کنید هست.
سلام من به یک مشکل بر خوردم این ها رو ست کردم به یک الارم ولی مشکل الان اینجاس که هر چند دقیقه یه بار الارم میزنه من میخوام فقط یه بار الارم بزنه اگ کمکم کنید ممنون میشم .
سلام :
من الارم منیجر رو ساختم حالا میخوام اگه کاربر وارد نرم افزار شد و خواست چند تا زمان تنظیم کنه باید چه کدی بنویسیم
تشکر از سایت خوبتون
سلام دوستان
من از setInexcatRepeating برای تکرار شدن یک کد استفاده کردم، توی گوشی با APK 19 کد ها در زمان مورد نظرم اجرا میشه ولی در گوشی دیگری با apk 26 (اندروید 8) کدها عقب جلو کار میکنه. حتی تا 10 ثانیه عقب و جلو میشه.
زمان رو هم روی 70 * 1000 میلی ثانیه تنظیم کردم.
من میخوام برنامه ام از اندروید کیت کت (19) به بعد قابل استفاده باشه.
لطفا راهنمایی کنید، ممنون