رفتن به مطلب
  • 0

ساعت هشدار دهنده(اجرای کد در زمان تعیین شده)


Mostafanet

سوال

سلام به اساتید.

 

من خسته شدم که در انجمن جستجو کردم یا فایل ها ناقص هستند یا تو تاپیکها درست جواب داده نشده.

 

یکی هست یک سورس کامل که با سرویس کار کنه بزاره که وقتی کاربر یک زمان(ساعت)روتعیین میکند در همان ساعت یک کد اجرا بشه(همون ساعت هشدار دهنده میشه)با تشکر.

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

16 پاسخ به این سوال تاکنون داده شده است

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

من برایم یه مشکلی پیش اومد

من می خوام که در یه زمانی مشخص بیاد یه عکس را نشون بده

مصل باد صبا

که هیچ جوری حتی اگه گوشی خاموش باشه بسته نشه

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

سرویستو اینطوری بنویسی هیچ وقت بسته نمیشه:

#Region  Service Attributes 
    #StartAtBoot: true
	#StartCommandReturnValue: android.app.Service.START_STICKY
	#ExcludeFromLibrary: True
#End Region


Sub Process_Globals

End Sub


Sub Service_Create

End Sub


Sub Service_Start (StartingIntent As Intent)

StartServiceAt("",DateTime.Now+10000,True)
End Sub


Sub Service_Destroy
StartService("")
  
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

تشکر ذاکر جون.حالا من وقتی با متغیر بش زمان دادم خوب تا از برنامه میام بیرون متغیرم از بین میرود و عمل نمیکند.میشود با دیتابیس از این کار جلوگیری کرد؟

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

تشکر ذاکر جون.حالا من وقتی با متغیر بش زمان دادم خوب تا از برنامه میام بیرون متغیرم از بین میرود و عمل نمیکند.میشود با دیتابیس از این کار جلوگیری کرد؟

 

سلام

 

میتونید ذخیره کنید مقدارو و بعد لودش کنید

 

 

کداییو ک استفاده کردید قرار بدید تا راهنمایی کنم :gol:

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

این کد البته با فایل تکست ساختم(دیتابیس) اما جواب نمیده

بفرما:

http://s3.picofile.com/file/8230549000/Test.zip.html

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

این کد البته با فایل تکست ساختم(تیتابیس) اما جواب نمیده

بفرما:

http://s3.picofile.com/file/8230549000/Test.zip.html

 

سلام 

 

ببینید میتونید ی مقدارو ذخیره کنید توی یک مسیر و بعد در اکتیویتی کریت یا سرویس کریت بیاید ی شرط بذارید و بگید اگر اون فایل موجود بود مثلا ی مقدار int رو برابر ی عددی کن

 

دیتابیس هم نمیخواد

 

مثلاا :

File.WriteString(File.DirInternal,"value.txt","1")

و در اکتیویتی کریت یا سرویس کریت هم ی شرط میذاریم :

Dim e As Int
If File.Exists(File.DirInternal,"value.txt") = True Then
	e = 5
	Else 
		e = 0
End If
لینک ارسال
به اشتراک گذاری در سایت های دیگر

پس کد درست بود.اینجوری تغیییر بدم درست.

ببین من میخام کار بر بتوند زمان رو دستی وارد کند

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

پس کد درست بود.اینجوری تغیییر بدم درست.

ببین من میخام کار بر بتوند زمان رو دستی وارد کند

 

میتونید زمان رو در قالب ی ادیت تکست ازش بگیرید

ذخیره کنید

و لود کنید در اکتیویتی کریت

Sub Globals
Dim EditText1 As EditText
End Sub
Sub Button1_Click
	File.WriteString(File.DirInternal,"saat.txt",EditText1.Text)
End Sub

و بعد هم در اکتیویتی کریت مشابه کدی ک دادم شرط بذارید و مقدار رو لود کنید

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

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

Sub Service_Start (StartingIntent As Intent)
	Dim Now() As String = Regex.Split(":",DateTime.Time(DateTime.Now))
	Log("Saat:" & Now(0) & ", Daqiqe:" & Now(1))
	Dim NtfTime() As String=Regex.Split(":",home.AspTimeNotify.GetString("NotifiTime","10:00"))
	Log("SaatNtf:" & NtfTime(0) & ", DaqiqeNtf:" & NtfTime(1))
	If Now(0)=NtfTime(0) And Now(1)=NtfTime(1) Then	
		notif_crt
	Else
	    Try
			Log((NtfTime(0)-Now(0))&"ساعت و "&(NtfTime(1)-Now(1))&"دقیقه مانده تا نوتیفیکیشن")
	    Catch
			Log("error: "&LastException)
	    End Try
	End If
	StartServiceAt("",DateTime.Now+30*1000,True)
End Sub

مشکل من زمانیه که زبان گوشی کاربر روی فارسی هست.

ارور زیر برام میاد:

java.lang.NumberFormatException: Invalid double: "۲۳"

همونطور که ملاحظه می کنید 23 رو که به عنوان ساعت از کاربر دریافت کرده، به صورت فارسی میخونه و نمیشناسه و جالبه که فقط هم توی خط

	Log((NtfTime(0)-Now(0))&"ساعت و "&(NtfTime(1)-Now(1))&"دقیقه مانده تا نوتیفیکیشن")

ارور میده و try-catch هم ارور رو رد میکنه ولی نوتیفیکیشن اجرا نمیشه

ممنون میشم راهنمایی بفرمایید

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

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

وقتی سرویس اجرا میشه و کاربر بره تنظیمات ساعت رو تغییر بده ازستینگ گوشی ، سرویس از کار میفته

علتش چیه؟

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

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

بر رفع مشکلی که در پستهای قبلی اشاره شد، کافیه موقعی که زمان رو میگیرید، با استفاده از تابع زیر از انگلیسی بودن اعداد مطمئن بشید.

Sub fa2en(a As String) As String
Dim fa As String="۰۱۲۳۴۵۶۷۸۹"
For la=0 To 9
a=a.Replace(fa.SubString2(la,la+1),la)
Next
Return a
End Sub

مثلا جایی که زمان رو میگیرید به این شکل تابع رو فراخوانی می کنید:

fa2en(DateTime.Time(DateTime.Now))
لینک ارسال
به اشتراک گذاری در سایت های دیگر

با سلام خدمت اساتید

من یه مشکلی دارم با زمان نوتیفیکیشن

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

Sub Service_Start (StartingIntent As Intent)
	Dim Now() As String = Regex.Split(":",DateTime.Time(DateTime.Now))
	Log("Saat:" & Now(0) & ", Daqiqe:" & Now(1))
	Dim NtfTime() As String=Regex.Split(":",home.AspTimeNotify.GetString("NotifiTime","10:00"))
	Log("SaatNtf:" & NtfTime(0) & ", DaqiqeNtf:" & NtfTime(1))
	If Now(0)=NtfTime(0) And Now(1)=NtfTime(1) Then	
		notif_crt
	Else
	    Try
			Log((NtfTime(0)-Now(0))&"ساعت و "&(NtfTime(1)-Now(1))&"دقیقه مانده تا نوتیفیکیشن")
	    Catch
			Log("error: "&LastException)
	    End Try
	End If
	StartServiceAt("",DateTime.Now+30*1000,True)
End Sub

مشکل من زمانیه که زبان گوشی کاربر روی فارسی هست.

ارور زیر برام میاد:

java.lang.NumberFormatException: Invalid double: "۲۳"

همونطور که ملاحظه می کنید 23 رو که به عنوان ساعت از کاربر دریافت کرده، به صورت فارسی میخونه و نمیشناسه و جالبه که فقط هم توی خط

	Log((NtfTime(0)-Now(0))&"ساعت و "&(NtfTime(1)-Now(1))&"دقیقه مانده تا نوتیفیکیشن")

ارور میده و try-catch هم ارور رو رد میکنه ولی نوتیفیکیشن اجرا نمیشه

ممنون میشم راهنمایی بفرمایید

:shout: :shout: :shout: :shout: :shout: :shout: :shout:

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

سلام 

تو سرویست این کدو بذار:

If DateTime.GetHour(DateTime.Now) = 15 AND DateTime.GetMinute(DateTime.Now) = 30 Then 
کد مورد نظرت

end if


تو کد بالا گفتیم ساعت 15:30 بعد از ظهر کد مورد نظرتو اجرا کنه

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

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

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

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