生活中我們會常常遇到需要鬧鐘提醒;不管是起床還是生活中的事件提醒。

10年積累的網站設計、成都做網站經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有玉泉街道免費網站建設讓你可以放心的選擇與我們合作。
那作為Android開發(fā)如何自己開發(fā)一個鬧鐘功能呢,是不是覺得很酷呢?接下來我們就實戰(zhàn)一個鬧鐘。
本示例采用的是RecyclerView,其適配器類與常無二,其異在于繼承一個代理類,為適配之后側滑刪除而準備
建立一個內部類ViewHolder實現(xiàn)控件定義申明
實現(xiàn)onCreateViewHolder方法載入子項布局文件
綁定實體類,實現(xiàn)onBindViewHolder獲取數據
此處有三處狀態(tài),第一種狀態(tài):第一次進入程序,默認加載固定鬧鐘子項;第二種狀態(tài):進入添加子項頁面,然后返回其主頁面,并判斷其switch是否為ture,如果為ture則添加子項;第三種狀態(tài):程序被系統(tǒng)回收或者用戶停止程序,并再次進入程序,防止加載前一時刻鬧鐘子項;
添加依賴 實現(xiàn)側滑主要依賴于一個第三方包,然后使用RecyclerView進行子項綁定 依賴如下:
并在目錄build.gradle包下添加如下庫
其實現(xiàn)側滑刪除主要的玄機在于布局文件當中,使用RelativeLayout布局,將刪除按鈕固定在布局右方,并使用其他布局將其覆蓋,只有滑動時,才將其顯示。掩蓋側滑刪除按鈕與暴露側滑刪除按鈕效果對比圖如下
然后,在適配器類中,實現(xiàn)WeSwipeHelper.SwipeLayoutTypeCallBack接口,實現(xiàn)如下三個方法,第一個方法為獲取側滑刪除按鈕的寬度;第二個方法為需要滑動的視圖,也就是覆蓋側滑刪除按鈕的布局;第三個方法為當視圖正在滑動時,用戶觸發(fā)單擊事件,自動還原滑動狀態(tài)
最后,在需要添加子項的視圖中綁定RecyclerView即可
通過監(jiān)聽子項滑動刪除按鈕點擊事件,實現(xiàn)子項刪除
跳轉新增鬧鐘子項Acticity需要傳輸實體類對象,傳輸對象一般需要序列化改類,其操作如下
定義實體類,并實現(xiàn)序列化
然后通過Intent傳輸Bundle對象
實現(xiàn)時間選擇主要使用系統(tǒng)集成的組件TimePicker,其使用方法如下 其有兩種顯示方式,第一種為spinner,就是下拉滑動式,第二種為clock,即顯示一個時鐘,通過滑動指針選擇時間
在style.xml文件中申明如下樣式
然后再指定Activcty申明即可
獲取數據比較簡單,實現(xiàn)對應接口即可
將獲取的數據通過SharedPreferences存儲起來,然后點擊存儲時,進行頁面跳轉,然后再該界面進行取出數據
存儲數據
首先判斷回調的switch數據是否為ture,如果為ture則保存該子項,然后再適配器類中進行數據添加
選中與默認兩種狀態(tài)效果圖如下
創(chuàng)建thumb和track樣式
創(chuàng)建一個選擇器文件,有選中和默認兩種狀態(tài)
創(chuàng)新open_thumb.xml文件
創(chuàng)建shut_thumb.xml文件
同樣創(chuàng)建一個選擇器,并用于兩種狀態(tài)
其中AlarmManager為系統(tǒng)主要操作類,參數為提醒模式、提醒時間(long型)、PendingIntent對象 以下有三種時間傳入,第一種,直接傳入一個Long型時間用于測試,第二種,通過設置系統(tǒng)啟動至今而設置時間,第三種,通過取出設置的時間,然后獲取系統(tǒng)當前時間,將其差傳入其中。
然后再清單文件中注冊服務
使用Intent實現(xiàn)服務啟動
殺死程序
本示例總共使用到了三個單例類:SP(SharedPreferences封裝)、TimeFormat(時間數據格式封裝)、KillProcess(殺死所有Activity)
SharedPreferences
KillProcess
文章帶這里就完成了一個簡單的鬧鐘;Android開發(fā)還有許多更加更多的知識學習。進一步學習Android技術,我這里推薦這份筆記方便學習,我就放在私信, 發(fā)送“核心筆記”或“手冊”即可獲取。朋友們可以免費領取!
一般Android手機具有四種鈴聲可以設置,分別為:來電、短信、鬧鐘、系統(tǒng)等種類鈴聲,具體的設置編制為:
1:先打開Android手機的內存卡盤,在里面成立個“media”文件夾,然后打開后成立個“audio”文件夾。
2:打開“audio”文件夾后,在里面非別成立“ringtones”(來電)、“notifications”(短信)、“alarms”(鬧鐘)、 “ui”(系統(tǒng)提示)。
3:然后遵循本身的需要將鈴聲存放到這幾個文件夾中。
4:打開Android手機,在“菜單”-“設置”-“聲音”這里便可以自行進行選擇了。
【首要提示:把文件夾設置好,在把要設置的鈴聲放進指定文件夾后重啟手機后,在進進設置里往設置,便可以選擇剛才放進的鈴聲了〔短信鈴聲設置編制—進進短信內—按菜單鍵—進進設置里便可以設置短信鈴聲了〕
vivo手機設置鬧鐘方法:
進入鬧鐘時鐘 → 點擊右上角“+”,編輯添加新的鬧鐘;
OriginOS系統(tǒng)可直接點擊桌面鬧鐘組件語音圖標或進入鬧鐘--右上角語音圖標,可以語音創(chuàng)建鬧鐘;
貪睡小助手 (部分機型支持):進入鬧鐘時鐘--點擊需要設置的鬧鐘--貪睡,開啟“貪睡小助手”功能,鬧鐘貪睡超過5次將自動發(fā)送信息給指定的聯(lián)系人;
鬧鐘鈴聲:
OriginOS系統(tǒng):進入鬧鐘時鐘--點擊單個鬧鐘--更多設置--提醒方式--設置鈴聲即可;
Funtouch OS/iQOO UI系統(tǒng):進入鬧鐘時鐘--點擊需要設置的鬧鐘--鈴聲,選擇自定義鈴聲或者系統(tǒng)備選鈴聲;
語音播報:進入鬧鐘時鐘--點擊需要設置的鬧鐘--開啟“語音播報”,在手動關閉鬧鐘后,系統(tǒng)將自動為您語音播報當天的天氣。
現(xiàn)在有一個定時提醒的功能, 用 AlarmManager 自己來做,有多少坑做過的都知道。(應用被kill, 應用保活,息屏,關機重啟,多版本兼容問題。。。)。要自己做一個完善的不是 1-2天就能搞定的。當然如果是應用內簡單的定時執(zhí)行,定時提醒 AlarmManager 還是很好用的。
對于這種需求可以調用系統(tǒng)鬧鐘或用系統(tǒng)日歷的提醒事件來做。
日歷提醒功能可以直接用 Intent 起日歷提醒界面,這樣最簡單,不需要權限。
調用API 直接設置需要動態(tài)申請權限
設置系統(tǒng)鬧鐘需要 SET_ALARM 權限
取消鬧鐘用 AlarmClock.ACTION_DISMISS_ALARM
AlarmManager是android中系統(tǒng)自帶的一個提醒服務,比如設置鬧鐘,做一個定時任務,還可以設置重復操作
AlarmManager中常用的有三個方法:
1、set(int type,long startTime,PendingIntent pi),用于設置一次鬧鐘。
2、setRepeating(int type,long startTime,long intervalTime,PendingIntent pi),用于設置重復鬧鐘。
3、setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi),同樣是用于設置重復鬧鐘,但是它是不準確的,相對于第二個方法,也更加節(jié)能。
下面就看看這些方法中的參數:
type為鬧鐘的類型,可分為四個常量:
ELAPSED_REALTIME:鬧鐘在睡眠狀態(tài)下不可用,使用的是相對系統(tǒng)啟動時間。
ELAPSED_REALTIME_WAKEUP:鬧鐘在睡眠狀態(tài)下可用,使用的是相對系統(tǒng)啟動時間。
RTC:鬧鐘在睡眠狀態(tài)下不可用,使用的是真實時間。
RTC_WAKEUP:鬧鐘在睡眠狀態(tài)下可用,使用的是真實時間。
startTime:為開始時間
intervalTime:為重復鬧鐘的間隔時間,內置了幾種:
INTERVAL_FIFTEEN_MINUTES 15分鐘
INTERVAL_HALF_HOUR 半個小時
INTERVAL_HOUR 一個小時
INTERVAL_HALF_DAY 半天
INTERVAL_DAY 一天
PendingIntent :廣播的一個intent,我們用廣播接受鬧鐘的定時任務,注冊一個廣播去接受,任務指令。
使用PendingIntent的getBroadcast (Context context, int requestCode, Intent intent, int flags)方法可以得到一個發(fā)送廣播動作的PendingIntent對象
為以下4個常量或其他支持使用Intent.fillIn()來控制它的變量:
FLAG_CANCEL_CURRENT:如果描述的PendingIntent對象已經存在時,會先取消當前的PendingIntent對象再生成新的。
FLAG_NO_CREATE:如果描述的PendingIntent對象不存在,它會返回null而不是去創(chuàng)建它。
FLAG_ONE_SHOT:創(chuàng)建的PendingIntent對象只使用一次。
FLAG_UPDATE_CURRENT:如果描述的PendingIntent對象存在,則保留它,并將新的PendingIntent對象的數據替換進去。
另一個就是在manifest.xml中注冊自己的廣播
這樣就可以實現(xiàn)定時任務了,如果要定時任務service啟動還可以加上service
一、本課題要求:設計一個基于Android的鬧鐘的軟件。
實現(xiàn)的功能有:能通過界面設置鬧鐘的啟動條件建立后臺服務進程,當滿足觸發(fā)條件時,鬧鐘響應相應事件。
二、需求分析
該課題實現(xiàn)在手機操作系統(tǒng)Android鬧鐘提醒功能,攜帶方便,使用起來靈活、快捷、省心,是一款實用的手機軟件。“手機鬧鐘”可以在后臺運行,且能和普通鬧鐘一樣設置多個位置鬧鈴,有良好的人機交互界面,可對其編輯、啟用或禁用,關鍵在于可以自定義設置取消鬧鐘的操作。
(1)系統(tǒng)體系結構包括:添加鬧鈴、設置時間、重復等,鬧鈴提醒方式,返回首頁。
(2)用戶界面設計
主頁面
取消鬧鈴頁面
三、代碼設計
(1)
main.xml代碼
解除鬧鈴代碼
(2)代碼分析
開發(fā)手機鬧鐘主要用到了AlarmManager類,AlarmManager類提供了訪問系統(tǒng)定時服務的途徑,開發(fā)人員可以在程序中設置某個應用程序在未來的某個時刻被執(zhí)行。當AlarmManager定時時間到了之后,當初注冊的Intent對象將會被系統(tǒng)廣播,進而啟動目標程序。注冊的鬧鐘在設備睡眠的時候仍然會保留,可以選擇性地設置是否喚醒設備,但是當設備關機和重啟后,鬧鐘將會被清除。
在程序運行時當需要使用AlarmManager類時,可以通過Context對象的getSystemService(Context.ALARM_SERVICE)方法來獲得AlarmManager對象。
鬧鐘使用的Demo:com.example.android.apis.app.AlarmController其中設定了兩種鬧鐘,一種是一次性的,一種是重復的。
四、總結
在這個過程中,我學會了很多知識,比如Android環(huán)境的搭建和配置問題、Android的構架和基本組建等,同時我學會的最重要的一點是,要利用現(xiàn)有的資源去解決問題,在圖書館、在網絡上尋找答案,也可以請教老師或與同學相互討論。雖然,這個軟件目前運行良好,但是我認為代碼的健壯還很差,在整個工程的構思方面也不足,用戶操作界面還不夠靈活,這些問題還需要今后逐一解決。與此同時,這個軟件還可以進一步擴展,例如通過Android Api獲取位置信息,并在指定地點設置鬧鐘提醒等,使功能更加強大,帶給用戶更好的體驗與便捷的生活服務。
文章名稱:android鬧鐘,Android鬧鐘功能需求分析
文章網址:http://chinadenli.net/article39/dsgpdph.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、品牌網站制作、網站導航、品牌網站建設、建站公司、網站設計公司
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)