• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Android個性化服務(wù)軟件的設(shè)計及教學(xué)應(yīng)用

      2020-03-02 11:36馬玉春汪文彬
      軟件 2020年1期
      關(guān)鍵詞:情景模式聯(lián)系人

      馬玉春 汪文彬

      摘 ?要: 智能手機的普及為用戶使用手機提供了便利,也帶來諸多不便。本文將手機聯(lián)系人區(qū)分為通訊簿聯(lián)系人、白名單、黑名單等,并結(jié)合參數(shù)設(shè)置和時間表設(shè)置,分別采用不同的策略進行處理;隱私數(shù)據(jù)本地保存和恢復(fù),可以根據(jù)設(shè)置從靜音模式自動切換到正常模式,自動打開Wi-Fi等。最后對技術(shù)細節(jié)和知識點進行剖析,給出了教學(xué)應(yīng)用方案。

      關(guān)鍵詞: Android;聯(lián)系人;情景模式;Wi-Fi;攔截

      中圖分類號: TP311.52 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.01.006

      本文著錄格式:馬玉春,汪文彬. Android個性化服務(wù)軟件的設(shè)計及教學(xué)應(yīng)用[J]. 軟件,2020,41(01):2428

      【Abstract】: The popularity of smart phones provides convenience for users to use them, but also brings many inconveniences. Mobile phone contacts are divided into system contacts, whitelists, and blacklists and so on, and different strategies are adopted to deal with them combined with parameter settings and timetable settings. Private data can be saved and restored locally, and can be automatically switched from silent mode to normal mode according to settings, and Wi-Fi can be automatically opened. Finally, the technical details and knowledge points are analyzed, and the teaching application solution is given.

      【Key words】: Android; Contacts; Scenario mode; Wi-Fi; Blocking

      0 ?引言

      智能手機在給用戶帶來便利的同時也帶來了諸多不便,例如,上課時不能接聽電話和收發(fā)短信且不能響鈴;用戶為避免影響正常的工作和生活,不希望陌生電話或匿名電話及垃圾短信騷擾;開會和駕駛時不能接聽電話,如何自動告知對方自己所處的狀態(tài)?在深夜睡眠狀態(tài),用戶不希望大部分電話呼入,但是,又希望能夠響應(yīng)緊急聯(lián)系人;對于獨居老人,經(jīng)常需要安靜地查看其所處位置和地理環(huán)境,但老人由于誤操作將情景模式設(shè)置為靜音并關(guān)閉Wi-Fi,視力不好又找不到對應(yīng)的開關(guān),導(dǎo)致子女無法跟老人電話聯(lián)系或微信視頻。本文以Android手機作為對象,解決智能手機使用中的常見問題,達到個性化服務(wù)的目的。

      1 ?邏輯框架

      為了方便使用智能手機,將聯(lián)系人分為普通名單(手機通訊簿中的成員)、白名單(緊急聯(lián)系人)、黑名單和陌生人,分別采用不同的策略進行處理。另外根據(jù)時間表設(shè)置機主的時間安排,如上課時間段、午休和睡覺時間段等;再用Switch組件設(shè)置臨時狀態(tài),例如,開會或駕駛(本文僅以會議為例說明)。如果是黑名單用戶,則直接攔截,并更新當(dāng)前日期和累加來電或短信次數(shù)(首次黑名單的添加在第3節(jié)介紹)。如果處于會議狀態(tài),則攔截來電,禁止短信播放提示音,并根據(jù)設(shè)置回復(fù)“會議中,會后聯(lián)系……”。查詢時間表,如果處于上課狀態(tài),同樣攔截來電,禁止短信播放提示音,回復(fù)的短信可以根據(jù)設(shè)置的參數(shù)自動查詢并添加下課時間。如果時間表上處于休息時間段,則禁止短信播放提示音,但當(dāng)白名單來電時,允許正常撥入,否則直接攔截任何非白名單用戶。這里采用一個BlockStructure類用于控制邏輯,主要有是否攔截、是否白名單或黑名單等布爾屬性及主動回復(fù)的字符串短信內(nèi)容屬性,以及查詢數(shù)據(jù)表和用戶配置的各個Switch的狀態(tài)。本服務(wù)軟件的基本邏輯處理框架如圖1所示。

      2 ?主窗體設(shè)計

      主窗體的設(shè)計圍繞圖1所示的邏輯框架展開,界面集成了來電顯示和回撥功能、短信接收和發(fā)送、各種名單(通訊簿、白名單和黑名單)的添加和刪除,通訊簿名單包括電話號碼和姓名,白名單只取姓名,黑名單只取電話號碼。軟件運行所需要的各項參數(shù)及各種數(shù)據(jù)表的查看和設(shè)置,都通過菜單項進行,而“參數(shù)設(shè)置”由于使用最頻繁,總是在標題欄上顯示,以方便用戶操作。

      參數(shù)設(shè)置具有多個選項,主要用Switch組件來實現(xiàn),對于時間表中的上課時間段,如果允許提示,則攔截后自動回復(fù)短信,回復(fù)對象可以是通訊簿中的普通名單、白名單或者包括陌生人(黑名單總是無條件攔截);對于會議開關(guān),也采取這一策略。對于假期開關(guān),如果假期有效,則上課時間段自動無效,電話可以正常撥入,短信提示音可以正常播放。白名單響鈴開關(guān),如果設(shè)置為有效,即使手機的情景模式為振動或無聲,白名單呼入也可以自動切換為響鈴,該項功能主要為了方便老人使用,避免白名單子女無法聯(lián)系老人的情況。另外,還有攔截陌生人(不在系統(tǒng)通訊簿中)和匿名電話開關(guān),一旦設(shè)置為有效,這些電話都將被攔截。點擊白名單中的選項,可以查詢其所在的地理位置,這在第4節(jié)詳細介紹。

      3 ?主要的數(shù)據(jù)表及處理

      圖2所示的黑名單數(shù)據(jù)表包括電話號碼(Phone)、日期(Date)、次數(shù)(Times)和備注(Remark),其中Phone字段是關(guān)鍵字,Date字段用來登記來電或短信的日期,Times用來累加來電或短信的次數(shù),Remark是黑名單的分類(如“詐騙”、“騷擾”等)。首次添加黑名單時通過手動進行,其后自動更新日期和累計次數(shù)。查看黑名單時,根據(jù)日期進行降序排序,即最近的日期在最前面。數(shù)據(jù)表采用文獻[1]中的基于SQLite的通用數(shù)據(jù)庫類進行管理。黑名單的分類專門用一個文本文件存儲,利用ListView組件進行顯示,可以根據(jù)需要修改。

      作為對黑名單的補充,設(shè)置了AreaCode表,只有一個頭部號碼字段HeadCode,凡是以該頭部號碼(如區(qū)號)開頭的電話全部攔截,這樣可以避免區(qū)域電話或某些虛擬電話的騷擾。

      白名單為緊急聯(lián)系人,為了方便用戶,避免輸入電話號碼的麻煩,白名單數(shù)據(jù)表中用姓名(Name)來標識。接到來電后,通過系統(tǒng)通訊簿查找到姓名,然后再對照白名單。白名單的顯示順序可以根據(jù)用戶喜好進行手動調(diào)整,并調(diào)用Vibrator對象的vibrate方法振動手機。

      時間表包括開始時間(Start)、結(jié)束時間(Stop)、業(yè)務(wù)類型(Business)和星期數(shù)(Weekday),以時間和星期的組合字段作為關(guān)鍵字。這里的業(yè)務(wù)類型主要以Class(上課)和Rest(休息)為主。上課期間攔截所有來電,可以根據(jù)設(shè)置的相應(yīng)內(nèi)容自動回復(fù)短信。如果處于放假狀態(tài),則上課時間無效。在休息時間段,白名單作為緊急聯(lián)系人可以直通,其他所有號碼直接攔截。查看時間表時,根據(jù)時間升序排列。

      各項數(shù)據(jù)表的顯示,都通過自定義ListView組件進行。以時間表為例,由于一行數(shù)據(jù)包含多個數(shù)據(jù),需要設(shè)置一個自定義適配器TimeTableAdapter,其中存放TimeTableRowHolder類的對象,該對象包括時間表中的所有字段,在這個適配器中重寫添加、更新和刪除時間表記錄的方法。ListView對象調(diào)用其setAdapter方法設(shè)置TimeTableAdapter對象,建立與數(shù)據(jù)源之間的聯(lián)系。數(shù)據(jù)表中的數(shù)據(jù),可以通過多線程技術(shù)調(diào)用FileOutputStream對象寫入外部文本文件,從而復(fù)制到外部存儲器保存;也可以調(diào)用FileInputStream對象從外部存儲器中恢復(fù)數(shù)據(jù),便于換機操作。

      4 ?地理位置的查詢

      選擇圖2中的白名單,可以查詢其所在的地理位置。采用文獻[2]中的技術(shù)對待發(fā)送的短信進行加密,然后發(fā)送到目標手機。目標手機收到短信后進行解密,如果是白名單發(fā)送的查詢地理位置命令,則調(diào)用百度地圖的API函數(shù),獲取經(jīng)緯度數(shù)據(jù),加密后返回給查詢手機。查詢手機解密短信后,將經(jīng)緯度數(shù)據(jù)在百度地圖上進行標示,可以在2D地圖和衛(wèi)星地圖之間切換,以便更加詳細地了解目標手機所處的地理位置。目標手機在地址查詢過程中,均自動處于靜音狀態(tài),所收發(fā)的短信自動刪除,不影響目標手機持有者的工作與生活。

      百度地圖 Android SDK是一套基于Android 4.0及以上版本設(shè)備的應(yīng)用程序接口??梢允褂迷撎?SDK開發(fā)適用于Android系統(tǒng)移動設(shè)備的地圖應(yīng)用,通過調(diào)用地圖SDK接口,可以輕松訪問百度地圖服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強的地圖類應(yīng)用程序。該套地圖SDK免費對外開放,接口使用無次數(shù)限制。涉及百度地圖的應(yīng)用軟件開發(fā),首先需要申請百度帳號,申請成為百度地圖開發(fā)者,最好進行實名認證,這樣可以得到更好的服務(wù)。然后在百度地圖控制臺申請SDK開發(fā)密鑰,輸入“應(yīng)用名稱”、“應(yīng)用類型”和開發(fā)工具指紋信息等,提交后即可得到“應(yīng)用AK”,這個“應(yīng)用AK”將用于項目配置文件AndroidManifest.xml中,如圖3所示。

      地理位置查詢需要手機安裝百度地圖,開通訪問網(wǎng)絡(luò)和地理位置的權(quán)限。

      5 ?廣播接收器及其權(quán)限

      當(dāng)接到來電、收到短信或系統(tǒng)開機等,Android系統(tǒng)都會發(fā)出廣播,任何注冊了相應(yīng)接收器的應(yīng)用程序都可以收到廣播并執(zhí)行相應(yīng)的處理[3]。應(yīng)用程序本身也可以自行送出廣播。大部分系統(tǒng)廣播接收器需要申請系統(tǒng)權(quán)限,廣播接收器的核心代碼是實現(xiàn)BroadcastReceiver類的onReceive抽象方法。表1所示是本文所使用的部分廣播接收器類及其對應(yīng)的權(quán)限,第7個廣播接收器類GetDataRecever是自定義類,當(dāng)后臺數(shù)據(jù)發(fā)生變化時,通知系統(tǒng)去更新界面,因而不需要任何權(quán)限。

      個性化服務(wù)軟件常駐系統(tǒng)內(nèi)存執(zhí)行,具有系統(tǒng)軟件的特性,需要開機自動啟動,需要設(shè)置相關(guān)的權(quán)限,并需要用戶在安裝的時候授權(quán)。在開機接收器類BootCompleteReceiver中啟動服務(wù),使得即使退出軟件主界面,也能讓軟件在后臺自動運行;OutGoingCallReceiver類可以監(jiān)聽撥出電話,并在主界面顯示;PhoneStateReceiver類主要用于處理來電,獲取來電號碼進行一系列是否攔截的處理,主要任務(wù)在第1節(jié)的邏輯框架中進行,在這里還需要MODIFY_PHONE_STATE權(quán)限,用于攔截來電;SmsReceiver類用于接收短信,還需要READ_SMS權(quán)限讀取短信內(nèi)容;SmsSentReceiver類和SmsDeliveredReceiver類都用于發(fā)送短信監(jiān)測,前者監(jiān)測短信是否發(fā)出,后者監(jiān)測短信是否送達目標手機,兩者都需要SEND_SMS權(quán)限。

      RingModeChangeReceiver類用于監(jiān)測情景模式(響鈴、振動與靜音)的變化,需要READ_ SETTINGS權(quán)限讀取系統(tǒng)設(shè)置,還需要MODIFY_ AUDIO_SETTINGS權(quán)限,當(dāng)白名單呼入時自動修改情景模式為響鈴狀態(tài);WiFiChangeReceiver 類用于監(jiān)測Wi-Fi開關(guān)設(shè)置,需要ACCESS_WIFI_STATE權(quán)限,為了免手機流量使用微信視頻,當(dāng)發(fā)現(xiàn)Wi-Fi處于關(guān)閉狀態(tài)時,需要使用CHANGE_WIFI_STATE權(quán)限來打開Wi-Fi開關(guān);ScreenChangeReceiver類用于監(jiān)測屏幕狀態(tài)變化,當(dāng)屏幕處于解鎖狀態(tài)時,自動讀取Wi-Fi開關(guān)狀態(tài),及時打開Wi-Fi開關(guān)。

      屏幕變化的廣播接收器不能在配置文件AndroidManifest.xml中注冊,只能通過代碼進行注冊,否則無效。老人由于視力不好或者文化程度不高,不小心將手機設(shè)置為靜音或者關(guān)閉Wi-Fi功能,導(dǎo)致白名單呼入無聲音,微信視頻無反應(yīng),自己找不到開關(guān)設(shè)置,最后的三個廣播接收器主要方便該類人群有效使用智能手機。

      6 ?啟動服務(wù)的實現(xiàn)

      服務(wù)是一個應(yīng)用程序組件,它能夠在后臺執(zhí)行一些耗時較長的操作,并且不提供用戶界面。服務(wù)能被其它應(yīng)用程序的組件啟動,即使用戶切換到另外的應(yīng)用時還能保持在后臺運行。此外,應(yīng)用程序組件還能與服務(wù)綁定,并與服務(wù)進行交互,甚至能進行進程間通信(Inter-Process Communication,IPC)。比如,服務(wù)可以處理網(wǎng)絡(luò)傳輸、音樂播放、執(zhí)行文件I/O或者與Content Provider進行交互,所有這些都是在后臺進行的[4]。

      服務(wù)有兩種基本類型,即Started(啟動)和Bound(綁定)服務(wù)。Started服務(wù)是應(yīng)用程序組件通過調(diào)用startService來啟動的,一旦被啟動,該服務(wù)就處于“started”狀態(tài),服務(wù)就能在后臺一直運行下去,即使啟動它的組件已經(jīng)被銷毀了。通常,started的服務(wù)執(zhí)行單一的操作并且不會向調(diào)用者返回結(jié)果。例如,它可以通過網(wǎng)絡(luò)下載或上傳文件,當(dāng)操作完成后,服務(wù)應(yīng)該自行終止。如果組件通過調(diào)用startService啟動了服務(wù),那么服務(wù)將一直保持運行,直至自行用stopSelf方法終止或由其它組件調(diào)用stopService方法來終止它。

      當(dāng)系統(tǒng)資源減少,為了保障擁有用戶焦點的應(yīng)用程序正常運行,Android系統(tǒng)會強行終止一個服務(wù)。如果服務(wù)被擁有用戶焦點的Activity綁定著,則它一般不會被強行終止。如果服務(wù)聲明為“在前臺運行服務(wù)”,則它幾乎不會被終止。否則,如果服務(wù)已被啟動并且已運行了很長時間,那么系統(tǒng)將會隨著時間的推移而降低它在后臺任務(wù)列表中的級別,此類服務(wù)將很有可能會被強行終止。如果系統(tǒng)終止了服務(wù),只要資源再度夠用,系統(tǒng)就會再次啟動服務(wù)(當(dāng)然這還取決于onStartCommand方法的返回值)。

      個性化服務(wù)軟件是一個系統(tǒng)級的服務(wù)軟件,可以直接運行軟件啟動服務(wù),也可以利用上一節(jié)的BootCompleteReceiver廣播接收器在手機開機后自動啟動服務(wù),從而對手機進行各種監(jiān)測。為了避免本軟件被Android內(nèi)存管理系統(tǒng)銷毀,可以在啟動的服務(wù)中構(gòu)建一個通知欄圖標Notification的對象notify。PendingIntent對象pi指向主窗體,通過調(diào)用notify的setContentIntent方法并傳入該pi對象,即可通過點擊通知圖標打開主窗體;方法setOngoing中傳入true,表示有正在執(zhí)行的后臺任務(wù);方法setPriority中傳入?yún)?shù)Notification.PRIORITY_ MAX,使得該圖標被置于最前列。在服務(wù)的onCreate方法中調(diào)用startForeground方法將服務(wù)放到前臺執(zhí)行。

      7 ?軟件測試

      軟件測試圍繞主窗體和邏輯框架進行,首先在主窗體中測試來電顯示、回撥電話、接收短信和發(fā)送短信功能,然后測試將電話號碼加入系統(tǒng)通訊簿、白名單或黑名單中,也可直接嘗試刪除[5]。從主窗體的菜單項進入時間表、白名單、黑名單及其種類窗體,查看數(shù)據(jù)項的添加與刪除,備份與恢復(fù)功能。最后結(jié)合參數(shù)設(shè)置進行綜合測試,查看來電及接收短信,能否在特定條件下被攔截或放行。關(guān)于白名單地理位置查詢功能,需要確保本機與目標手機都安裝百度地圖軟件,目標手機處于聯(lián)網(wǎng)狀態(tài),這樣才能獲取地理位置并以短信形式返回。圖4所示為查詢白名單所在地理位置的效果,經(jīng)緯度也一并顯示。

      8 ?教學(xué)應(yīng)用

      本文所研發(fā)的Android個性化服務(wù)軟件是一個系統(tǒng)級服務(wù)軟件,綜合應(yīng)用了前臺和后臺的主要技術(shù)。在教學(xué)應(yīng)用中,可以先讓學(xué)生安裝使用該軟件,使得手機處于正常模式,由于時間表的限制,上課可以自動攔截來電而不會有響鈴干擾。然后,將知識點進行分解,首先從簡單的菜單使用、多窗體及其參數(shù)傳遞開始入手,搭建一個最基本的框架;然后學(xué)習(xí)SQLite數(shù)據(jù)庫,為APP添加數(shù)據(jù)庫功能,在此基礎(chǔ)之上利用多線程技術(shù)導(dǎo)出數(shù)據(jù)庫中的數(shù)據(jù)至外部文本文件,或者從外部文本文件恢復(fù)數(shù)據(jù);第三,掌握系統(tǒng)廣播接收器的注冊與監(jiān)測技術(shù),及自定義廣播接收器的使用方法,逐個嘗試,深入理解;最后將以上技術(shù)進行整合,添加服務(wù)功能,使其成為一個綜合實用的技術(shù)載體[6]。

      9 ?結(jié)語

      本文所完成的Android個性化服務(wù)軟件,將聯(lián)系人分為系統(tǒng)通訊簿、白名單、黑名單、陌生人和匿名,結(jié)合時間表和多種參數(shù)設(shè)置,分別采用不同的控制策略,使得手機可以一直處于正常的情景模式,也不會影響日常工作、生活與學(xué)習(xí)。各種隱私數(shù)據(jù)可以備份到本地文本文件,也可以從本地文本文件恢復(fù),有效避免了隱私泄漏的可能??梢愿鶕?jù)設(shè)置的參數(shù)自動將情景模式從靜音模式切換到正常模式,自動打開Wi-Fi方便老年人使用智能手機,也可以查詢白名單聯(lián)系人的地理位置,并以2D地圖或者衛(wèi)星地圖進行顯示。最后對個性化服務(wù)軟件的技術(shù)細節(jié)和知識點進行分解,從前臺到后臺,從簡單到復(fù)雜剖析了學(xué)習(xí)和掌握相關(guān)技術(shù)的方法。

      參考文獻

      [1] 劉雍, 孫冰, 馬玉春. Android平臺下的通用SQLite模型的設(shè)計與實現(xiàn)[J]. 電腦編程技巧與維護, 2017, 4:41-42+59.

      [2] 劉雍, 汪文彬, 馬玉春. Android環(huán)境下的數(shù)據(jù)編碼與處理技術(shù)[J]. 電腦編程技巧與維護, 2018, 9:71-74+107.

      [3] 王小科, 寇長梅. Android入門經(jīng)典[M]. 北京: 機械工業(yè)出版社, 2013.

      [4] 陳佳, 李樹強. Android移動開發(fā)[M]. 北京: 人民郵電出版社, 2016.

      [5] 孫紅麗, 葉斌. 基于Android 的通訊錄系統(tǒng)的設(shè)計與實現(xiàn)[J]. 軟件, 2015, 36(5): 117-120.

      [6] 馬玉春, 劉雍, 汪文彬. Android平臺下的TCP客戶機教學(xué)設(shè)計[J]. 軟件, 2018, 39(10):14-17.

      [7] 王志國, 楊維. 基于Android 平臺酒店人員定位系統(tǒng)的設(shè)計與實現(xiàn)[J]. 軟件, 2015, 36(10): 65-67.

      [8] 張二江, 遲瀟瀟, 肖亞鐵. 基于Android 平臺的實時隱秘報警系統(tǒng)設(shè)計與實現(xiàn)[J]. 軟件, 2015, 36(4): 28-32.

      [9] 張曉諾. 基于Android 的智能家居環(huán)境監(jiān)測系統(tǒng)APP 設(shè)計與實現(xiàn)[J]. 軟件, 2015, 36(2): 77-79.

      [10] 李淑民. Android 手機隱私泄露研究[J]. 軟件, 2015, 36(2): 69-72.

      猜你喜歡
      情景模式聯(lián)系人
      教你將手機聯(lián)系人導(dǎo)出到Excel
      移動終端的情景模式切換方法專利技術(shù)研究
      政和县| 广东省| 理塘县| 鲁山县| 工布江达县| 乌恰县| 南宁市| 逊克县| 吉木萨尔县| 芒康县| 汝阳县| 辽阳市| 班玛县| 武义县| 陕西省| 德令哈市| 青阳县| 盐津县| 昌黎县| 永泰县| 蒲城县| 青冈县| 揭阳市| 凤阳县| 平江县| 新龙县| 成武县| 馆陶县| 沁水县| 桃园市| 云梦县| 湘阴县| 紫云| 红安县| 高雄县| 托克逊县| 措美县| 蒙山县| 正宁县| 博罗县| 宁德市|