رفتن به مطلب

PNAlarmManager - دادن هشدار و انجام عملی در ساعت و تاریخ مشخص بدون سرویس و تایمر


پژمان نیکروان

ارسال‌های توصیه شده

سلام و تشکر از شما پژمان عزیز 
واقعا بی نظیر هست و قیمت مناسبی هم داره 
---------
سوالی که دارم اینه که دقیقا می تونم برای ارسال نوتیفیکیشن درون برنامه ای ازش استفاده کنم
مثلا بگم بیاد هر 15 روز یک بار یک نوتیفیکیشن به کار بر نشون بده
( البته با استفاده از کتابخونه های نوتیفیکیشن )
 
بیشتر توضیح میدم 
فرض میکنیم من نیاز دارم به کاربر با نوتیفیکیشن یاد آوری کنم هر 15 روز که بره برنامه رو ببینه مطالب جدید اومده در برنامه 

و آیا با این کتابخونه میتونم این کار رو انجام بدم؟

مرسی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱ ساعت قبل، arastooms گفته است :

و آیا با این کتابخونه میتونم این کار رو انجام بدم؟

بله دقیقا ارسطو جان. دقیقا این کتابخانه برای همین کار هست.

یه نمونه سورس هم کنارش وجود داره.

حالا باز برای قضیه 15روز کمک خواستی در خدمتم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 1 ساعت قبل، پژمان نیکروان گفته است :

بله دقیقا ارسطو جان. دقیقا این کتابخانه برای همین کار هست.

یه نمونه سورس هم کنارش وجود داره.

حالا باز برای قضیه 15روز کمک خواستی در خدمتم.

سلام من برا قضیه ۱۵ روز کمک میخوام داداش.. چطوری میتونم بگم این کارو برام انجام بده?

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 22 دقیقه قبل، keivan گفته است :

سلام من برا قضیه ۱۵ روز کمک میخوام داداش.. چطوری میتونم بگم این کارو برام انجام بده?

سلام عزیز.

فرض میکنیم میخوایم زمانیکه اکتیویتی کریت شد این آلارم رو فعال کنیم، به این صورت میشه:

Sub Globals
	Dim pn As PNAlarmManager
End Sub

Sub Activity_Create(FirstTime As Boolean)
	'Activity.LoadLayout("Layout1")'
	
	Dim zaman As Long=DateTime.Add(DateTime.Now,0,0,15)
	pn.setNewAlarmRepeating(0,zaman-DateTime.Now,zaman)
End Sub

یه متغیر زمان تعریف شده و از زمان حالا + 15روز شده.

و حالا به ترتیب پارامتر های متد setNewAlarmRepeating:

0: آیدیش هست که بعد برای خاموش کردن ازش استفاده میکنیم

zaman-DateTime.now: اینتروال(interval) هست که روی 15 روز تنظیم کردیم.

پارامترسوم، zaman: گفتیم از 15روز آینده شروع کن.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آیا امکانش هست حالا همون 15 روز یا 1 ساعت به یک ساعت بیاد و بجای اکتیویتی یک سرویس رو اجرا کنه؟ و اکتیویتی نمتیش داده نشه؟

اگه ممکنه یک نمونه درست کنید که بیشتر باهاش آشنا بشن دوستان:

مثلا 1 دقیقه به 1 دقیقه بیاد یک سرویس رو اجرا کنه که یک پیام نمایش بده، ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 24 دقیقه قبل، miling گفته است :

مثلا 1 دقیقه به 1 دقیقه بیاد یک سرویس رو اجرا کنه که یک پیام نمایش بده، ممنون

سلام.

بله عرض کردم. اصلا کارش همینه و بعد از دریافت الارم درواقع سرویسی رو که تعیین کردید استارت میکنه و کاری با اکتیویتی نداره. وقتی کتابخانه رو تهیه بفرمایید کاملا متوجه میشید با نمونه سورس که به چه صورت هست. خیلی راحته.

برنامه از شما توی منیفست اسم یک سرویس رو میخواد، تا وقتی آلارم دریافت شد اون سرویس رو استارت کنه:

CreateResource(values, pnarr.xml,
<resources>
<!--اسم سرویسی که میخواین بعد از دریافت آلارم اجرا بشه-->
<string name="service_name">pnalarmreceiver</string>
</resources>
)

خب شما میتونید بجاش اسم اون سرویس مورد نظر که میخواین هر 1دقیقه اجرا بشه بذارید.

مثال تنظیم هر 1دقیقه یکبار براحتی:

pn.setNewAlarmRepeating(0,60000,dateTime.Now)

بازهم میگم خدمتون اگر تهیه بکنید روند کار رو میبینید که چقدر ساده هست.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بله حتما تهیه میکنم سوال من بیشتر از این جهت هستش که اطمینان پیدا کنم که این کتابخونه مشکلات که دارم رو حل میکنه
یه سوال دیگه:

من میخوام این الارم رو 

pn.setNewAlarmRepeating(0,60000,dateTime.Now)

در سرویسی ست کنم که در مانفیست هم معرفی کردم
مشکلی که پیش نمیاد؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 5 دقیقه قبل، miling گفته است :

مشکلی که پیش نمیاد؟

نه هیچ مشکلی پیش نمیاد.

ببینید تمامی آلارم هایی که ست میکنید، همون سرویسی رو که توی منیفست تهیه شده استارت میکنن.

حالا اگه سرویس های دیگه ای دارید میتونید توی service_start سرویسی که توی منیفست تعریف شده سرویس های دیگرتون رو هم استارت کنید.

ضمناً چندین اعلان میتونید ست کنید با تعریف یک متغیر، منتها باید آیدی هاشون رو متفاوت بگذارید. که من توی مثال همشون رو 0 گذاشتم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا پژمان خسته نباشید، من کتابخونه شما رو تهیه کردم

کد:

<string name="service_name">pnalarmreceiver</string>

گزینه pnalarmreceiver برای چی هست؟

بعد دریافت آلارم بالا میاد؟ اگه اینطوریه میشه کلا سرویس رو حذف کرد و سرویس خودم رو جایگزینش کنم؟ البته بوت سرویس رو هم true میزام

این امکان هست؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 29 دقیقه قبل، miling گفته است :

گزینه pnalarmreceiver برای چی هست؟

بعد دریافت آلارم بالا میاد؟ اگه اینطوریه میشه کلا سرویس رو حذف کرد و سرویس خودم رو جایگزینش کنم؟ البته بوت سرویس رو هم true میزام

این امکان هست؟

سلام

آره دقیقا برای همینکار هست، هروقت الارم دریافت شد اون سرویس استارت میشه، نیازی نیست ماندگار بشه، اما خب startBoot=true باشه.

سرویس خودتونو جایگزین کنید مشکلی نیست.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 4 هفته بعد...


کتابخانه PNAlarmManager آپدیت شد، حتماً تغییرات رو مطالعه بفرمایید، چون خیلی ها گزارش مشکلاتی رو داده بودند.
نسخه جدید به ایمیل خریداران ارسال شد
.

 تغییرات نسخه 1.10 کتابخانه:

1- متد DeviceIsHuawei
تشخیص اینکه آیا گوشی هوآوی و نسخه اندروید اون بالاتر از 21 هست یا خیر

2- متد GOTO_HuaweiSetting
هدایت کاربر به بخش "برنامه های محافظت شده" در تنظیمات هوآوی.
جهت درخواست تیک زدن برنامه برای پایداری آلارم ها در هوآوی
قبل از صدا زدن این متد میتونید، با متد گزینه 1 تشخیص بدید گوشی هوآوی هست یاخیر.
توضیحات بیشتر درباره مشکل در هوآوی ها:
اینجا

3- متد setNewExact
تنظیم آلارم دقیق
در برخی از دستگاه ها مشاهده میشه دادن آلارم با متد "تنظیم آلارم تکرار شونده" با چنددقیقه تاخیر و یا زودتر انجام میشه. این متد مشکل رو برطرف کرده.
این متد امکان تکرار شونده نداره، اما میتونید خودتون اینکارو انجام بدید.
مثلا یکبار ست میکنید دفعات بعد که سرویس استارت شد مجددا برای مثلا 24ساعت آینده ست میکنید.(در سورس انجام شده)

4- گرفتن آیدی آلارم در سرویس
درصورتی که چندین آلارم با آیدی های مختلف تنظیم می کنید میتونید در "سرویس دریافت آلارم" شرط گذاری های لازم رو با گرفتن آیدی آلارم انجام بدید:
StartingIntent.GetExtra("ID")

**همه موارد بالا در نمونه سورس جدید انجام شده**

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون از کتابخانه مفیدتون سوال بنده این هست که ما الان کتابخانه رو گذاشتم رو یک دقیقه 60000 بعد این دستور رو باید چی وارد کنیم موقع خاموش و روشن شدن گوشی

 

 

	If File.Exists(File.DirInternal,"savedalarm") Then
			Select File.ReadString(File.DirInternal,"savedalarm")
				Case "1"
					Dim zaman As Long=DateTime.TimeParse("16:00:00")
	
					If zaman>=DateTime.Now Then
						pn.setNewAlarm(0,zaman)
						ToastMessageShow("روی ساعت 16:00 امروز تنظیم شد",True)
					Else
						pn.setNewAlarm(0,DateTime.Add(zaman,0,0,1))
					End If
				Case "2"
					Dim zaman As Long=DateTime.TimeParse("16:00:00")
	
					If zaman>=DateTime.Now Then
						pn.setNewAlarmRepeating(0,24*3600000,zaman)
					Else
						pn.setNewAlarmRepeating(0,24*3600000,DateTime.Add(zaman,0,0,1))
					End If
				Case "3"
					Dim zaman As Long=DateTime.DateTimeParse("2017/04/26","16:00:00")

					If zaman>=DateTime.Now Then
						pn.setNewAlarm(0,zaman)
					End If
			End Select
		End If

کلا من میخوام سورسم یکی از اکتیویتی هاش به اسم فعال هر 1 دقیقه رفلش بشه اگر میشه کد کاملش رو بزارید که وارد سورسم کنم ممنون

 

لطفا کدهایی کاملا بغییر منیفست بدید که من هر 1 دقیقه به یک دقیقه بتونم این کار رو بکنم 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

پژمان عزیز کلا ما این سورس رو بزاریم کنار من چه کدی تو منیفست و بیسیک بدم که هر 1 دقیقه بیاد یک سرویس همون استارتر رو استارت بزنه و گوشی خاموش روشن هم شد همین روال باشه ممنون میشم راهنمایی کنی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1396/03/19, 20:08:44، [email protected] گفته است :

لطفا کدهایی کاملا بغییر منیفست بدید که من هر 1 دقیقه به یک دقیقه بتونم این کار رو بکنم 

سلام خوبین.

چیز خاصی نیست، کافیه فقط توی اکتیویتی یا هرجا که میخواین این عمل آغاز بشه کد زیر رو بنویسید:

pn.setNewAlarmRepeating(1,60000,DateTime.Now+60000)

حالا سرویسی که توی منیفست اسمش رو نوشتید از 1 دقیقه یکبار اجرا میشه و میتونید بگید فلان کار رو بکن:

If StartingIntent.HasExtra("alarm") Then 
	if StartingIntent.GetExtra("ID")=1 Then
		'سرویس مورد نظر استارت بشه مثلا...'
	end if

Else
	pn.setNewAlarmRepeating(1,60000,DateTime.Now+60000)
End if

کدهای بعد از Else برای اینه که میگیم هروقت گوشی خاموش و روشن شد دوباره تنظیم بشه.

 

 

در 21 دقیقه قبل، [email protected] گفته است :

پژمان عزیز کلا ما این سورس رو بزاریم کنار من چه کدی تو منیفست و بیسیک بدم که هر 1 دقیقه بیاد یک سرویس همون استارتر رو استارت بزنه و گوشی خاموش روشن هم شد همین روال باشه ممنون میشم راهنمایی کنی

چرا میخواین استارتر رو هر 1دقیقه یکبار اجرا کنید؟

توی منیفست همچین کدی وجود داره:

<string name="service_name">starter</string>

بجای 
pnalarmreceiver
نوشتم: starter

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

• تغییرات نسخه 1.20:
1- اضافه شدن متد AlarmAlreadyHasSet
فهمیدن اینکه آلارم مورد نظر از قبل ست شده یا خیر توسط آیدی

 

If pn.AlarmAlreadyHasSet("آیدی آلارم") Then
'این الارم با این آیدی از قبل ست شده است، البته ست کردن مجدد تداخلی ایجاد نمیکنه
end if

 

نسخه 1.20 به ایمیل خریداران ارسال شد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 هفته بعد...

سلام یه سوال داشتم مالان تو یه اکتیویتی یه تایمر داریم 

 

که ساب تایمر رو مثلا گفتیم هر 1 دقیقا بیا فلان کار رو بکن

 

با این کتابخانه چطوری مثل تایمر یه ساب داشته باشیم که بگیم هر 1 دقیقه تو اکتیویتی این کار رو بکن مثلا به edit text یک عدد اضافه کن 

 

( اکتیوینی استارد نشه من میخوام مثل ساب تایمر با این کتابخانه کار کنم )

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1396/04/10, 18:11:49، [email protected] گفته است :

( اکتیوینی استارد نشه من میخوام مثل ساب تایمر با این کتابخانه کار کنم )

چکاریه آخه برای اینکار چرا میخواین از آلارم منیجر استفاده کنید؟ از همون تایمر استفاده کنید بهتره که.

برای اینطور مواقع تایمر استاندارد تره.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کتابخانه به نسخه 1.40 ارتقا داده شد

• تغییرات نسخه 1.40:
1- بهبود متد SetNewExcat در اندرویدهای 5 به بالا

کاملا شبیه به برنامه باد صبا عمل میکنه و مشکل تاخیر توی اندروید6 حل شد *
2- ساده تر شدن مثال کتابخانه

 

نسخه جدید به ایمیل خریداران ارسال شد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 ماه بعد...
در در 1396/05/19, 13:48:24، پژمان نیکروان گفته است :

کتابخانه به نسخه 1.40 ارتقا داده شد

• تغییرات نسخه 1.40:
1- بهبود متد SetNewExcat در اندرویدهای 5 به بالا

کاملا شبیه به برنامه باد صبا عمل میکنه و مشکل تاخیر توی اندروید6 حل شد *
2- ساده تر شدن مثال کتابخانه

 

نسخه جدید به ایمیل خریداران ارسال شد.

سلام ببخشید میشه با این کتابخانه ساعت و تاریخ و آهنگ مورد نظر برای آلارم رو خود کاربر انتخاب کنه نوشت؟

اگه میشه کداشم بنویسید.

با تشکر.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
  • اضافه کردن...