کلیدستان

نسخه‌ی کامل: ایجاد تایمر (در برنامه نویسی اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
 سلام
ممنون میشم جوابم رو کامل بدین.
من میخوام برنامه ای بسازم که در آن تایمر باشه که وقت آن رو هم خود کاربر تنظیم کنه و زمان رو هم نشون بده در صفحه که داره میگذره و وقتی وقت به پایان رسید رنگ صفحه مثلا قرمز بشه و یه صدا پخش بشه و گوشی بلرزه میشه منو کمک کنید تا این برنامه رو بنویسم.
سلام.
کاربر به دو صورت می تواند زمان را وارد کند (که البته برنامه نویس، آن را انتخاب و کد را بر اساس آن می نویسد، یا اینکه برنامه اندروید را برای هر دو حالت طراحی می کند) :
1- کاربر یک مقدار زمان (مثلا 2 روز و 6 ساعت و 34 دقیقه و 20 ثانیه) را وارد می کند و بعد شمارش معکوس داریم
2- کاربر یک تاریخ و زمان (مثلا ساعت 10 در 20 اسفند 1393) را انتخاب می کند و بعد شمارش معکوس شروع می شود
هر کدام از دو مورد بالا را که انتخاب کنید، باید تعدادی EditText (کلید شماره 265) داشته باشیم که مقادیر را به طور جداگانه از کاربر گرفته و سپس آنها را به ((یک عدد تنها)) بر اساس تعداد ثانیه تبدیل می کنیم (که در ادامه روش آن را شرح می دهم).
در حالت اول، چون کاربر مقدار زمان را وارد کرده، تنها باید همه آن را به ثانیه تبدیل کنیم و بعد شمارش معکوس را شروع کرده و از عدد حاصل، یک ثانیه یک ثانیه کم می کنیم و نتیجه را در یک TextView نمایش می دهیم. 
چگونگی انجام آن را در موضوع زیر شرح داده ایم (این موضوع در مورد روزشمار است و توضیحات آن به درد شما هم می خورد) :

http://www.kelidestan.com/forum/showthread.php?tid=5039

برای حالت دوم که با تاریخ سر و کار داریم، باید از معیار Unix Epoch استفاده کنیم. یعنی آن تاریخ را به صورت یک عدد تنها بر اساس ثانیه به دست می آوریم (بر اساس معیار Unix Epoch) و زمان فعلی (بر اساس معیار Unix Epoch) را هم به دست می آوریم و دو عدد بر اساس ثانیه داریم که باید از هم کم کنیم و شمارش معکوس را شروع نماییم. چگونگی شمارش معکوس هم مثل همان حالت قبل است.
برای تبدیل یک تاریخ ساختاریافته (بر اساس سال و ماه و روز و ساعت و ...) به یک عدد تنها (بر اساس معیار Unix Epoch)، کلید زیر را بخوانید :

کلید شماره 2983

برای به دست آوردن زمان فعلی، بر اساس معیار Unix Epoch ، کلید زیر را بخوانید :

کلید شماره 2981

اما در مورد عملیات هایی که گفتید بعد از پایان شمارش معکوس باید اتفاق بیفتد، شمارش معکوس در یک حلقه while (کلید شماره 339) انجام می شود که در آن، همان کدی را داریم که هر 1 ثانیه یک بار اجرا می شود (این مورد را در همان موضوع ذکر کرده ایم و کلید مربوط به آن نیز کلید شماره 2861 می باشد) و 1 عدد از تعداد ثانیه ها کم کرده و سپس نتیجه را به صورت زمان جدید، در TextView نمایش می دهد. ما زمانی از حلقه while خارج می شویم که آن قدر از عدد مورد نظر کم کرده ایم که دیگر برابر عدد صفر شده است. پس شرط خروج از حلقه را صفر شدن آن می گذاریم. پس کافی است که کدهای مورد نظرتان برای مرحله بعد از شمارش را بعد از کدهای حلقه while بنویسید. 
برای قرمز شدن صفحه (تغییر رنگ پس زمینه Activity) کلید زیر را بخوانید :

کلید شماره 844

برای پخش صدا، دسته بندی زیر را ببینید :

http://www.kelidestan.com/keys/categorie...Category=8

برای لرزش گوشی، دسته بندی زیر را ببینید :

http://www.kelidestan.com/keys/categorie...ategory=47