Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Wear計時器開發

Android Wear計時器開發

編輯:關於Android編程

記得在2013年12月的時候,有系列文章是介紹怎麼開發一個智能手表的App,讓用戶可以在足球比賽中記錄停表時間。隨著Android Wear的問世,在可穿戴設備中開發一款這樣的App確實是個很不錯的想法,但是按照目前對於Android Wear的架構了解來說,似乎有些困難。所以本系列文章我們就重寫這個應用,帶領大家進入Android Wear的世界。

本文不會長篇大論地講解我們要開發的這款App的用途,因為我們在之前的系列文章已經深入了解過了。這麼說吧,這是一個計時類應用,在比賽開始的時候開始執行,在比賽的過程中可以暫停(停表),然後45分鐘過去後會有震動提醒,然後比賽進行45分鐘後也會有提醒。

在開始之前,很有必要先看看我們為什麼要重寫這個App而不是直接上代碼。智能手表使用的是一個修改版的Android1.6的系統,所以它的架構很像一個運行Android1.6的手機,所以我們的App基於一個Activity,我們所有的工作都運行在這個Activity上。在開始學習智能手表開發之前,我們必須很清楚地知道,我們之前的設計在Android Wear上並不適用,盡管它也是支持Activity,但是在Android Wear上工作方式是不同的。在手機或者平板上,如果一個Activity從sleep狀態回到喚醒狀態,Activity會被重新喚醒,但是在Wear上卻不是這樣。一段時間過去後Wear設備會進入sleep,但是在設備喚醒後,處於sleep狀態的Activity卻不會再被喚醒了。

首先這個問題使我非常驚訝,我一直很想知道Activity有了這個限制後,還能開發實用的App嗎?後來才發現這個問題完全是多慮的,我漸漸地發現,要開發一個實用的App也很簡單——我們只需要轉變我們的軟件設計模式,使它更符合Android Wear的體系結構,而不是當做一個手機來看。

這裡我們需要考慮的最基本的問題是,這個計時應用程序需要基於一個一直運行的服務來記錄時間。但是基於長運行的服務不是一個好的方案,因為它會耗電。這裡我們提到的記錄時間這個關鍵詞,也就是說,我們並不需要真的實現一個長運行的服務,只要在用戶需要看的時候我們可以更新消息顯示就行。在大部分的時間裡,其實用戶只需要了解大概過去了多長時間,只有在比賽暫停或者中場快結束的時候才需要顯示更詳細的信息。所以在大部分的時間裡,我們只需要顯示精確到分鐘即可,然後在用戶需要的時候才精確到秒。

我們要實現這個方法的基本方法就是使用AlarmManager每分鐘觸發一次更新通知事件,去更新分鐘顯示。這個通知事件還包括顯示精確到秒的Activity,但是只有在用戶滑動屏幕的時候才會顯示整個通知。通過這種方式我們可以在必須顯示的時候才去更新消息,所以對大部分設備來說,每分鐘更新一次消息顯示比一直運行一個服務更加省電。

下圖顯示充分證明了這點,首先我們需要打開通知,這樣就可以得到精確到秒的顯示了。

matchtimer

然而,在有信息顯示或者設備休眠的時候,我們只需要顯示精確到分鐘就可以了。

matchtimer_notification

matchtimer_sleep

有一件事情需要說明一下,就是這個App的名字已經改變了。之前在在I'm Watch的版本上叫做“Footy Timer”,現在改為“Match Timer”。因為在使用語音啟動App的時候,Google的聲音識別對“Footy”這個詞很不敏感,我們用“ok Google,start Footy Timer”這個命令不能啟動應用,而使用“ok Google,start Match Timer”就可以使用。

最後,很抱歉這篇文章沒有代碼,但是本系列文章會稍微有些變動。以前本人會在每篇文章末尾附上文章相關的代碼段,這個請放心,之後的文章還是會這樣的,因為這個是一個功能完善的App,而不是系列技術文章,所以在接下來的文章會包含一些代碼示例和注釋,在本系列文章完結的時候會附上整個項目的源碼。

Match Timer 可以在Google Play上找到:https://play.google.com/store/apps/details?id=com.stylingandroid.matchtimer