發表文章

目前顯示的是 八月, 2016的文章

[Android] 新版 Firebase 函式庫

圖片
今年五月,Google 推出新版 Firebase 函式庫,這是 Firebase 合併到 Google 之後最大的改版,新版 Firebase 函式庫最大的特色是,以既有的雲端平台來蒐集 APP 的分析資料,進而增進 Admob 廣告收益。Firebase 被 Google 定位為 Mobile App 的專屬平台,除了原有的儲存和即時資料庫之外,還增加了分析、廣告、推送(Cloud Message / Notifications)、認證、當機報告、Remote Config、Invites / Dynamic Links、App Indexing 等功能。最重要的是,分析紀錄的儲存無上限,而且只要加入分析函式庫,不用改程式,就能自動收集預設的事件。 細節可參考下面的投影片。 此次的改版證明了 Google 會持續強化 Firebase 的服務,不必擔心 Firebase 會跟隨同樣是 PaaS 的 Parse.com 停止服務。

最近測試了新版的 Firebase Analytics、Crash Reporting、AdMob 這三個函式庫,以下依順序介紹。
前置作業 要安裝新版  Firebase 函式庫,要將 Google Play Services 升級到版本 30 以上,並將 Google Repository 升級到版本 26 以上。

另外,在 Android Studio 的  Project Structure 可導入 Firebase Android Client API,勾選後會自動增加 INTERNET 權限,並新增 firebase-client-android 函式庫,此函式庫為雲端儲存之用,若無此需求,可不需導入。
新增 Firebase 專案 接著到 Firebase 網站,新增一個新的 Android 專案。新增的過程中,需要輸入 Android 的 Package Name,至於 SHA-1 可不填,系統會自動產生。

Firebase 會根據 Package Name 自動生成一個檔名是 google-services.json 的設定檔,這是一個內有 Firebase 帳號和 API 資訊的設定檔,請將這個檔案複製到Android Studio 專案資料夾的  app 目錄下。

最後將指定的套件名稱新增到專案層級和 app …

Android Arsenal - Android 第三方函式庫網站

圖片
隨著 Android 市占率的增加,以及開發工具 Android Studio 的改版,並變得越來越好用,越來越多開發者投入 Android 的開發,因此自然有越來越多 Android 函式庫被開發出來,以加速 Android 的開發。

Android Arsenal 這個網站蒐集了眾多的 Android 函式庫,讓開發者知道大家都用了哪些熱門函式庫,開發者也可以從這個網站,快速找到市面上的某個函式庫來解決某個需求。


可以依照「分類」搜尋函式庫,然後網站會依照 Rating 排名顯示每個分類下的函式庫

這個網站對於函式庫的評分(Rating),是依照每個函式庫贊 GitHub 和 Android Arsenal 網站的活動為依據去給分。

Android Arsenal 網站上的函式庫資料,基本上都是從 GitHub 取得,包括基本資料、Star 數、Fork 數等等,甚至也包括  README.md 的資料。


Android Arsenal 也有做全部函式庫的排名,不過前兩名居然是 Fond Awesome 和 Material Design Icons,這兩個函式庫根本只是美工圖庫。





[Android] 如何讓應用程式保持喚醒

如果要讓應用程式在運行中,不因為裝置休眠而導致螢幕關閉,可使用 FLAG_KEEP_SCRENE_ON ,此方法不需額外權限,範例如下:

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); }
也可以定義在 Layout 中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true">
如果需要讓 CPU 持續保持運行,不因為裝置休眠而終止,則要使用 PowerManager 的 WakeLock 來控制應用程式。
要先增加 WAKE_LOCK 權限
<uses-permission android:name="android.permission.WAKE_LOCK" /> 程式碼範例如下
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag"); wakeLock.acquire();
參考資料:Android 官網的文件 Keeping the Device Awake




在 Mac 上使用 Visual Studio Code

圖片
微軟推出 Visual Studio Code(以下簡稱 VS Code)已經一年多。VS Code 是使用 Electron(Chromium 的開源架構) 和 TypeScript 開發的,因此可以跨平台在 Windows、Linux 和 Mac 上執行。不同於 Windows 上的 Visual Studio IDE, VS Code 是類似 Sublime、Atom,Notepad++ 一樣,當作純文字編輯器來寫 JavaScript、Python 和 GoLang。

VS Code 是 Eric Gamma 主導開發,此人來頭不小,是經典書籍「設計模式」四人幫作者之一。而微軟換了執行長後擁抱開源, VS Code 也不例外,直接將程式碼開源到 Github


VS Code 主要功能包括:
IntellisenseTheme 的部分延續了 VS 一貫的黑紫色系風格支援 Git支援 Markdown 語法編輯與預覽Debug 模式,支援大部分語言的除錯通過 市集可以安裝各種套件 主要嚇到我的是開大檔案的速度,一個 30 MB 的文字檔,Sublime 要五分鐘,Atom 會當掉,VS Code 大概只要一秒就開了,太神了!





[Android] Backup API

當用戶因故換手機或重置手機時,通常,原先安裝在 App 裡頭的資料無法跟著回復。事實上,Android 有提供 Backup API,能讓 App 端先將資料備份到雲端,待 App 重新安裝後,自動 Restore 資料。

首先,要到這個網站註冊 Android Backup Service
完成註冊後,會取得一個 API Key

然後將 API Key 連同備份代理程式名稱(這裡是 TheBackupAgent)加到 AndroidManifest.xml <application android:label="MyApp" android:backupAgent="TheBackupAgent"> ... <meta-data android:name="com.google.android.backup.api_key" android:value="ABcDe1FGHij2KlmN3oPQRs4TUvW5xYZ" /> ... </application>
接著開始寫備份代理程式(Backup Agent)

Backup API 可以備份檔案(亦可備份 SQLite 資料庫的 db 檔)以及 SharedPreference 資料,

下面是 SQLite db 檔和SharedPreference 資料的備份範例
原則上,當資料變動時,會執行自動備份。可以使用下面的程式手動執行備份。
BackupManager bm = new BackupManager(this); bm.dataChanged();
可以透過 adb 來測試,指令如下:
adb shell bmgr backup packagename # 等於dataChanged adb shell bmgr run # 立即去trigger backup job adb uninstall packagename # 先移除App
最後再重新安裝 App,資料應該都在才對。

這種備份方式,備份檔只會有一份,保留最近更新的,而且是跟著 Google 帳號,因此兩台…

Google Play 收到新評論的通知

圖片
以往,使用者在 Google Play 上寫完 App 的評論後,開發者並不會被通知,往往要隔好一陣子,開發者主動去看評論時,才會發現。為了解決這個問題,前陣子有人寫出了取名為 JonSnow 的程式,以定期爬網頁的方式,當發現有新的評論,就發送訊息到 Slack 通知開發者。

終於,Google Play Developer Console 可以設定收到新評論的通知了。到「設定」>「電子郵件通知」,勾選新評論,還可以選擇幾顆星才收到通知。


當用戶新增評論之後,就會收到一封由 no-reply-play-developer-console 發出的信件


另外,Google 也推出了「Google Play Developer Console」App,將這個 App 裝在手機上,就能隨時查詢上架的應用程式的評論與相關統計。在這個 App 也能設定當使用者更改評論後,開發者會收到通知。


Google 在每次的開發者大會或財報公布之後,常常會低調地釋出產品的新功能,多多留意 Google 相關產品的部落格,往往會有意外的發現。





[Android] 夜間模式

圖片
以往要實作 Android App 的夜間模式,得要自行製作不同的 Style Theme 切換。然而從 Android Support Library 23.2 版本開始,增加了 AppCompat DayNight Theme 功能,事先設置好 白天 和 夜晚 主題。需注意這裡的 DayNight Theme 只支援 Android 4.0(API 14)以上的版本。

使用方式如下:
首先將 styles.xml 的 Theme 改為 DayNight 主題
styles.xml
<style name="AppTheme.DayNight.NoActionBar"> ..... </style>
DayNight 主題有四種模式:
MODE_NIGHT_NO:使用白天(白色)主題MODE_NIGHT_YES:使用夜間(暗黑)主題MODE_NIGHT_AUTO:根據一天當中的時間自動切換MODE_NIGHT_FOLLOW_SYSTEM:遵循系統的設置,基本上是以 MODE_NIGHT_NO 為主 然後,在程式中可以透過 AppCompatDelegate.setDefaultNightMode 以及 getDelegate().setLocalNightMode() 來改變 AppCompatDelegate.setDefaultNightMode 是對整個 App 中主題為 DayNight Theme 有效getDelegate().setLocalNightMode() 只對於設定的地方生效,用於重新設定預設值 最後,用 recurate() 來通知頁面更新
if (Config.Day) { //白天 AppCompatDelegate.setDefaultNightMode( AppCompatDelegate.MODE_NIGHT_NO); } else { //夜間 AppCompatDelegate.setDefaultNightMode( AppCompatDelegate.MODE_NIGHT_YES); } recreate(); 要注意的是,因為 Toolbar 有自己的 Theme,而 WebView…