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 主要功能包括:
  • Intellisense
  • Theme 的部分延續了 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 帳號的話,應該是無法還原兩台手機的資料。






分類:

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 不能使用 Theme,如果畫面上的 Toolbar 和 WebView 需要套用夜間模式,要另外加工處理,除此之外,其他元件都會自動套用日間/夜間主題。

以下是實作之效果
日間模式:

夜間模式:





分類:

[Android Studio] 如何安全的管理 API Key

當我們在開發 Android 時,遇到 API Key 或者密碼等機密資料,常見的作法是將這些資料用字串寫在程式裡,可是這些資料一旦隨著程式發佈到 Github ,就有可能會被有心人士拿去使用。

以下分享三種管理在實務上管理 API Key 的方法:

放在 Constant.java 檔案

public static final String API_KEY = "xxxxxx"; 
使用上只要這樣呼叫,就能取得資料
Constant.API_KEY
然後把 Constant.java 加入 .gitignore 不簽入 Git 版控系統,不過這樣作,日後有其他人使用這個專案,會造成專案完整性有問題。

放在 grade.properties 檔案

在 Android 專案根目錄下,找到 grade.propertie 檔案(這個檔案要加入 .gitignore 不簽入 Git 版控系統),把 API Key 加入其中。
MyKey = "xxxx"
在 build.gradle 檔案加上
apply plugin: 'com.android.application'

android {
    ...

    defaultConfig {
        ...
    }
    buildTypes {
        release {
            ...
        }
        buildTypes.each {
            it.buildConfigField 'String', 'API_KEY', MyKey
        }
    }
}
然後可以在程式中使用它
String KEY = BuildConfig.API_KEY;

放在系統環境變數(限定 Windows 作業系統使用)

將 API Key 加入 Windows 環境變數
然後在 build.gradle 加入
apply plugin: 'com.android.application'

android {
    ...

    defaultConfig {
        ...
    }
    buildTypes {
        release {
            ...
        }
        buildTypes.each {
            it.buildConfigField 'String', 'API_KEY', "$System.env.API_KEY"
        }
    }
}
然後可以在程式中使用它
String KEY = BuildConfig.API_KEY;

建議使用第二種方式,將 API Key 加入 grade.properties 檔案,然後不要簽入版控系統

分類: ,

Mac 安裝 GO 環境

要在 Mac 上安裝 GO 語言的環境,以往要自行用 xcode 編譯,現在官網已經推出 pkg 安裝檔,所以安裝上相對非常簡單。

首先到官網下載 Apple OS X 版本的安裝檔


下載之後執行 pkg 檔進行安裝


安裝成功之後,GO 的預設路徑會是 /usr/local/go,而 /usr/local/go/bin 應該會在安裝後自動加到  PATH 環境變數,因此可以用終端機執行 go 指令,來驗證環境是否正確安裝。


分類:

Copyright © Andy Cheng

Distributed By My Blogger Themes | Blogger Theme By NewBloggerThemes Up ↑