Skip to main content

87 posts tagged with "android"

View All Tags

· One min read

透過一些生活自動化工具,可以讓你的日常生活更便利。 例如在 Youtube 畫面中看到略過廣告按鈕時,可以透過 Automate App 協助自動點選按鈕。

以下是安裝與使用方式

  1. 安裝 AutomateAutomate Network Permissions

Imgur

  1. 點選左側選單,進入Community(社群),下載社群創作的樣板

Imgur

  1. 搜尋中文 youtube,可以找到中文版的 Youtube 略過廣告樣板 (這是我根據Ng Wei Ming這個版本修改,支援正體中文版的 Youtube)

Imgur

  1. 點選 DOWNLOAD 按鈕,下載此樣板

Imgur

  1. 回到 Automate App 主頁,選擇Youtube Skip Ad (中文)項目,按下畫面中的 START 按鈕,啟動自動點選略過廣告。

Imgur

· 2 min read

隨著 Firefox OS1,黑莓 BlackBerry 102,與 Windows Phone3三種行動裝置 OS 都陸續傳出退出消費市場或停產的消息,表明現在行動裝置 OS 已大勢底定,由 Android 與 iOS 二分天下。

最近甚囂塵上的傳言4是 Google 將在下周發表 Android 與 Chrome OS 合併的作業系統 Andromeda (英文中是 "仙女座" 的意思。有人跟我一樣感覺這唸起來尾音頗像韓國話嗎?)。這讓我想起 2008 年的時候,我寫過一篇Androbian?短評關於 Android 與 Symbian 將合併的傳言。裡面引用了一段話:

How they will merge two platforms that have so many things different about them is beyond us. One is chocolate, the other is peanut butter. Two completely different things. However, we know how good they taste together!

一邊是巧克力,另一邊是花生醬,兩者是完全不同的東西。但是,我們都知道巧克力花生醬嚐起來是多麼地美味!

這樣相對樂觀的期待,仍然可以套用在新的傳言上。

· 6 min read

物質設計 (Material Design)

「物質設計」有人翻作材質設計,但我很容易把「材質」聯想到 3D 遊戲的材質貼圖去,這跟 Material Design 所想要表達的意涵差了十萬八千里。而從相關的英文詞彙聯想,「Material Girl」或譯為拜金女孩或物質女孩,那種對於追求「摸的到的實際東西」有所迷戀的意涵,似乎與 「Material Design」的內在涵義更為貼近,所以我更願意稱之為「物質設計」。

註:官方後來定名為「實感設計」。

物質設計(Material Design)是什麼?

簡而言之,Material Design(物質設計)是 Google 公佈的一套同時適用於 Android、iOS、Web 等各種平台,同時能適用於手機、平板、電視、電腦螢幕等不同裝置的跨平台 / 裝置的設計規則(仍需為各裝置設計,但鼓勵共用更多相同元素)。

讀者也可以透過觀看 Google I/O 2014 - Keynote(從 14:18 分開始,由 Matias Duarte 介紹 Material Design)https://www.youtube.com/watch?v=wtLJPvx7-ys  可以得到對於 Material Design 最精巧的介紹。

我不是設計師,僅從開發者角度分享一些個人想法,如果還有興趣請繼續看下去。

從擬物化、扁平化、到物質化的 App 設計

自從 2007 年 iOS 重新發明手機之後,「擬物」化(Skeuomorphism)一直是 iOS App 的設計原則。「擬物」化的設計,讓新接觸「智慧手機」、「智慧平板」的使用者得以沿用過去實物的使用經驗,愉悅地使用新的數位化工具。

但是這幾年智慧手機 / 平板實在太成功,軟體 App 漸漸吞噬了實體世界的各種工具,造成原本「擬物」所參照的物品已紛紛變成老古董,要年輕人畫出電話的形狀,可能畫的卻是手機的模樣... 總而言之,許多擬物的參照物已經漸漸被時間淘汰了。

微軟的設計師們很早看出這個趨勢,在 2010 年推出的 Window Phone 中使用了極端「扁平」化(Flat)的設計風格。 經過幾年來的大膽嘗試,最後也由市占極高的 iOS/Android 定調了使用者界面「扁平」化的發展潮流。「扁平」化的設計,讓使用者得以減少在使用 App 過程中,辨識「擬物」化界面所產生的認知疲勞。

不管是「擬物」化或者「扁平」化,在每個平台的設計指南中,都明確指出設計的 App 要提供最佳的使用者經驗,必須要符合該平台的風格。iOS 還分別為手機與平板提供不同的設計指南,並指出手機與平板是不同的設備,App 設計必須要符合該設備的使用情境。

其實平台們的意思很簡單:現在開發者必需要對應每個平台,針對平台不同的風格提出相符的設計。對於同平台的不同裝置,也請分開處理。

於是現在開發者(或提出 Material Design 的 Google,別忘了他們得支援多少種平台與裝置)要面對的,是針對不同裝置、多重平台開發設計 App 時所需面對的各種問題。

「物質設計」(Material Design)就是 Google 整理出的新跨平台、跨裝置適用 (For every screen, and for all devices) 的設計指南。並將首先套用到 Android 的最新版本「L」上。

物質化的 App 設計

「物質設計」是以「扁平」化的 App 設計為基礎,加上紙質分層的概念(即以「Google Now」為代表的卡片式設計),整理出字體、色彩、圖標等設計模式,並加入佈局(Layout)、圖像,與動畫效果(effect)等設計模式。紙質分層與「動畫效果」產生出的設計模式,就我所知,是在之前的各種介面設計中所未特別強調的。

想進一步了解 Material Design 上的動畫效果,可由 Google I/O 2014 - Keynote(從 18.25 分開始,由 Matias Duarte 介紹 Material Design Animation)https://www.youtube.com/watch?v=wtLJPvx7-ys  查看。

物質設計(Material Design)工具

看完這些大片的色彩、轉場、動畫效果,不知道身為開發者的你臉綠不綠,反正我綠了。 這樣該如何應用於 app 開發哩?整個開發成本還了得?

還好 Google 還提供了一些配套工具 (但卻不是出現在 Android L)。(未完待續)

參考資料

· One min read

Android Wear 不是作業系統,基本上是拿來開發 Android 周邊所使用的協定。它是把原本需要拿出手機查訊息,變成透過 Notification API 傳給手錶。透過 Google Now 手錶可以收到推播來的相關訊息或透過語音辨識來控制手機應用做事情。

因為 Android Wear + Google Now 帶來的便利性,Google 可以再進一步加強圍繞著 Play Service/Google Now 的生態圈。

· 2 min read

原來就預期今年會有很多 OS 出現,但沒想到有那麼多。 來簡單整理一下列個表。如果有漏掉的,請路過的讀者幫忙提醒吧。

後面括號 (Mod) 表示是 Android 的衍生版本。月份是大概印象,與實際日期可能有出入。

這些 OS 其中當然有些只是拿來賺眼球,還沒有實際出貨計劃的 OS。 不過廠商群雄並起逐鹿的感覺,當可確認現在已進入後 PC 時代無疑。

3 月

OUYA (Mod) 遊戲機與自有市集

Smartisn OS (錘子 OS, Mod)

BlackBerry 10 OS 已出兩隻手機

5 月

Android 4.3 + Google Services 各種跨版本可用的 Google 服務,扁平化與卡片式設計 現有設備升級,n 台新機

Chrome OS Pixel 筆電與 Chrome box

7 月

FirefoxOS 1.0.1 ZTE open, TCL One touch Fire

Ubuntu Phone 相似的概念性界面還有 for Tablet, for Android, for TV...

9 月 CyanogenMod (Mod) 宣布公司化

Sailfish OS

iOS7 iOS 五年來最大的改版

現有設備升級,iPhone 5s, 5c

SteamOS 客廳與遊戲用 OS

10 月

FirefoxOS 1.1

Ali OS (阿里 OS) 可定製手機

11 月

Tizen 平板

 

Android 4.4 KitKat

· 3 min read

'repo' is a good tool to manage project with multiple git repositories. Its developed to serve the need to manage Android Open Source Project (AOSP), which counts on bunch of open source projects. Then the 'repo' tool is used for chromium and chromium OS (known as open source version of Chrome browser and Chrome OS). Now Mozilla Boot-to-Gecko (B2G, known as Firefox OS) also adpot the 'repo' tool to manage multiple git repositories.

For a short time of experiment, I find its pretty simple to setup your own 'repo' that can help you manage multiple git repositories. Here is my findings.

To install 'repo' command, you can refer to Installing repo.

Make your own repo

All you have to do is:

1. setup an accessible git repository 2. Put a 'default.xml' file in it 3. Use 'repo init' command to access this  git repository.

Done!

Here is the default.xml sample, there are three main tags:

<div class="highlight">> <span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
> <span class="nt">&lt;manifest&gt;</span>
> <span class="c">&lt;!-- define hosts --&gt;</span>
> <span class="nt">&lt;**remote**</span> <span class="na">name=</span><span class="s">"b2g"</span> <span class="na">fetch=</span><span class="s">"https://github.com/mozilla-b2g/"</span><span class="nt">/&gt;</span>
> <span class="c">&lt;!-- default settings --&gt;</span>
> <span class="nt">&lt;**default**</span> <span class="na">sync-j=</span><span class="s">"4"</span><span class="nt">/&gt;</span> <span class="c"><!-- projects -->**project** remote="b2g" revision="refs/heads/master" name="gaia" path="."</manifest>Look at the 'project' tag. It describes that we'd like to sync the 'gaia' repository's 'master' branch from remote 'b2g' host.

Explaination

<?xml version="1.0" encoding="UTF-8">
<manifest>
...
</manifest>

The 'default.xml' syntax is wrapped by 'manifest' tag. It contains three parts of definition:

Hosts

<remote name="b2g" fetch="https://github.com/mozilla-b2g/"/>

remote' tag is used to define the hosts that we'd like to use in projects. Note that it's not the actual git URL, but where the git hosted on.We can specify the actual git URL in 'project' tag.

Projects

<project 
remote="b2g"
revision="refs/heads/master"
name="gaia"
path="."/>

The file describes that we'll like to sync the 'gaia' repository's 'master' branch from remote 'b2g' host.

The 'revision' path is defined within the original .git folder. To switch to branch like "v1.0.1", we could change  "refs/heads/master" to "refs/heads/v1.0.1".

It's almost the same as we have to do with git command.

By the way, default.xml itself is in a git repository, so you can specify versions by branch or whatever you like.

Defaults <default sync-j="4" />

In default tag we can specify the default values in project tag. ex: revisions, default repositories..., etc. 'sync-j' means with this setting, 'repo' command will download 4 resources at the same time.

The usage

Create a folder, switch in it, and run the following command:

> $ repo init -u https://&lt;your own git URL&gt;.gitThen, fetch the resources with command

> $ repo syncTo fetch a branch, run command
> $ repo init -u https://&lt;your own git URL&gt;.git **-b** &lt;branch&gt;

Read Git and repo cheatsheet for more details about how git and repo tool work together.  

Sample

Here is a working sample that able you to sync Mozilla Gaia repositorie, and automatically put vendor customization folder into its 'distribution/' sub-folder to ease the customization work.

https://github.com/gasolin/gaia-custom-repo

Update at 7/29:

A workable process elaboration in slide format http://gasolin.github.io/gaia-repo/

· 2 min read

離上一版 Android 書的更新已經過一年多了,終於在最近改版的工作告一段落。 再過一陣子,就可以看到新版本上市了。

這次的所有範例改放到 Github 上。可以前往 https://github.com/gasolin/androidbmi5th/ 下載。

Github 使用 git 作為版本控制系統,並提供很方便使用的網頁介面。

例如我使用分支 (branch) 來管理不同章節的範例程式碼。要在 github 上查看不同章節的程式碼,只要點選 Github 左上角的分枝選單,選取對應的章節,即可查看範例程式碼。

選取對應的章節,查看範例程式碼

此外,也可以透過左上角的「zip」按鈕,下載對應的章節範例程式碼。

若想透過 git 命令下載,可以使用如

git clone https://github.com/gasolin/androidbmi5th.git -b CH36 CH36 命令來取得對應章節的範例程式碼。

本書提供的範例無授權問題,可自由用於各種場合。 若對範例有疑問,可以直接在 github 專案的 Issues 中提問。

從更新的範例中可以看到,第五版本終於做到全書只有「一個」 BMI 範例(包含配對的測試範例)。圍繞著設計 BMI 應用程式的過程,介紹各種 Android 系統的運作與常用功能。我覺得新的改版對第一次入門的讀者來說,學習的過程應該更有樂趣。

· 3 min read

幾周前在 GTUG Taipei 活動,聽了 David Wu 分享的 "A Deep Dive into Android Open Source Project" 演講,回來後對 Slide Menu 效果很感興趣,也在gPaper 改版時使用到這個技巧。

後來我選擇使用的是 Simple Side Drawer 這個 Library https://github.com/adamrocker/simple-side-drawer

Simple Side Drawer 的好處是只要把它提供的 jar 檔放到專案中,就可以搭配如ActionBarSherlock等函式庫一起使用。

使用 Simple Side Drawer

使用時首先是下載 jar 檔放進專案的 lib 目錄中並匯入。

接著需要在 onCreate 中初始化:

> protected void onCreate (Bundle data) {
> &nbsp;&nbsp; ....
>
> mSlidingMenu = new SimpleSideDrawer(this);
> mSlidingMenu.setBehindContentView(R.layout.behind_menu);`</pre><pre>`&nbsp;`</pre><pre>`}`</pre><pre>`之後在程式裡的任何地方,都可以透過呼叫:`</pre><pre>`&nbsp;`</pre>> <pre>`<code>mSlidingMenu.toggleDrawer();`&nbsp;</code></pre><pre>`

來控制側邊欄的開關。下面以常見的點選 App 圖示來控制側邊滑動選單做例子,來介紹側邊滑動選單可以如何整合到 App 中。

透過點選App圖示控制側邊滑動選單

將 Side Menu Drawer 設定好之後,並不會有按了 App 圖示就開啟側邊選單的效果,需要一些程式碼來控制。

在程式中的 onCreate 或 onResume 裡加入控制碼,強制顯示 App 圖示旁的小箭頭,作為側邊滑動選單的視覺參照,讓使用者注意到 App 圖示點選了還有功能:

ActionBar actionBar = this.getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true);

在 onOptionsItemSelected 的判斷裡,加入點選 App 圖示時的動作:

case android.R.id.home:     mSlidingMenu.toggleDrawer();     return true;

這樣點選 App 圖示後,就會出現開關側邊滑動選單的效果。

· One min read

前年為了慶祝小朋友出生,寫了gPaper (原名 gTracingPaper) 這個描圖 App。

gPaper的特色是除了基本的白板、黑板或任意顏色的畫板可供塗鴉之外,還可以匯入圖片或照片當作底圖來照著描繪。

畫好後的圖片可以單獨儲存,或是將底圖一同輸出 (如上圖效果)。

這次改版將諸多原本在子選單裡的功能都放到如同 G+、FB 的側邊滑動功能選單裡,主界面變得清爽多了,操作時也減少了一次點選步驟。

gpaper App 可以直接從 Play Store 下載。

Get it on Google Play

· 3 min read

取得台灣當季蔬果 App

最近老婆為了讓家裡的小朋友吃得更健康,從圖書館借了一本叫做「吃當季盛產,最好!」的書。有天,她請我幫忙掃描書後面的當季食材列表出來,以便去市場買蔬菜水果時可以隨時參考。

掃描時我一邊看著就來了興趣。不少人都可以隨口講出幾件台灣產的蔬菜水果,但是再進一步討論甚麼時候是 "當時"、"當令" 蔬果,可能連老一輩人也不一定答得出來。

於是搜尋了一些網路資料,發現農糧署有提供一些資料,但頗為凌亂,於是寫了些腳本,將台灣產的蔬菜水果分月份整理出來,貼上 Facebook 與朋友分享。

在整理之前,是我太少去買蔬果吧,我不曉得台灣產的水果中,其實只有「香蕉」才是一年四季皆有出產的水果。而平常聽到的「空心菜」、「火龍果」等蔬果,在官方資料中是叫做「蕹菜」、「仙蜜果」這類聞所未聞的名字。

最後我將這些不常見的叫法替換成慣用的蔬果名稱,補上一些來自維基百科的圖片,用 Cordova + JQuery Mobile 將整理好的結果包成了 Android APP,放到 Play Store 上讓大家方便參考。開啟 App 的時候會自動列出當月的食材,除了可以按月查詢之外,也可以查詢四季皆出產的蔬果。

台灣當季蔬果 App 可以直接從 Play Store 下載。 Get it on Google Play

· 7 min read

2013/1/10 早上收到 Play Store 來信,台北捷運地圖App 被下架了,原因是 Alleged copyright infringement(也就是侵權)。對這結果就法律而言我沒甚麼好抗議的,畢竟這個 App 確實利用了捷運公司所提供的地圖。

但即使這個 App 是在政府意識到 App 對民眾的價值前,為方便民眾查詢,提供純公益性質 (有清楚標示版權與來源,無廣告,純便民) 的 App,也會因依法行事被台北捷運局舉報。不分善意惡意直接一棒下去,實在是會讓想在政府動起來前先做些什麼的人心灰意冷。

我一直為自己利用業餘時間,能用自己的技術做公益 (Open Source、App),並從中得到樂趣與技術的精進感到自豪。

這些年,這 App 累積了 26 萬人次下載,12 萬實裝次數,也至少有為社會做了點貢獻。

PS: 做台北捷運地圖時,我也順手做了一個高捷版的,現在因為北捷運局的好心督促,我決定幡然悔悟,用更高的道德和法律標準做事情,先自我審查下架了。

Update 2013/1/12: 今天有點時間,我想還是再多聲明一下

1. 使用到版權物就是侵權 2. 公益不是侵權的正當理由 3. 這個 App 已經達到它的階段使命,在沒有好工具的時候得自己做一個,而現在 Market 上已經有不少可用的地圖 App,不差這個了。我不會多花時間重做地圖再上架,或作其他處理。

就我粗淺的想法來看,如果有人拿我出版的紙書轉成 PDF 讓人四處免費下載,想必我不會舒服。但是我卻很歡迎大家把電子書版網址分享出去(電子書版網址上有加創用 CC,聲明不歡迎商業使用或轉載,只歡迎連結分享。),因為可以幫到一些人入門 Android。而等他們有能力時,可能還會去買一本書,或把這個有用的資源分享給別人。

當初會做這個捷運 App,一方面是方便自己,方便別人;另一方面對捷運公司而言,如果有人免費印刷捷運地圖送給旅人,讓大眾可以隨時查找附近捷運站與目的地站點,提昇搭乘率,可以讓公司賺更多錢又省下推廣成本。

如果人家對此不稀罕,那也不用貼人家的冷屁股。

Update 2013/1/11: 因為網站也下架了,來為這 App 做一下回顧好了

下載

 26 萬人次下載,12 萬實裝次數

評價

五星評價 383 四星評價 471 三星評價 76 三星評價 20 一星評價 32

評論

看評論非常有趣,一些人覺得沒價值的東西,在另一堆人眼中卻十分實用。

五星評論

2012 11/23 非常實用 沒有廣告,沒有其他複雜的功能,打開快速不會造成手機的負擔,其實 app 像這樣簡單就很好用 10/26 以後出門忘記捷運坐到哪一站,有了這程式都不怕! 10/23 超簡潔 很簡單明瞭,很小巧不到 1Mb,完全不必特殊受權。好! 10/2 為了新的捷運路線下載 只要能正常使用就好了。沒有任何權限真是好! 1/12 把其他複雜的下拉選站名,路線規劃的 app 刪掉了,其實我只要這樣一張捷運圖就好.  1/6 非常實用 簡單的東西有時候是最好用的東西 2011 10/14 好用 對不是住台北的民眾是非常方便明瞭的  8/16 很方便 一張地圖正是我的需求~ 單點放大也很好用 1/31 正好符合我需求,一張圖就好,簡簡單單 2010 10/10 好方便啊!簡單又直覺的設計!

一星評論 2013 1/8 只是一張圖 好歹也整合一下出口及票價吧,只是張圖的話自己下載不就好了,說好用的人要求會不會太低了? 2012 12/15 就一張圖? 4/23 根本不用做成程式 只要放張圖就好了。 2011 2/10 無聊的東西,只是張照片 1/29 一張捷運路線圖罷了 2010 10/31 縮放功能很不方便,只有一張地圖要幹嘛

被檢舉資訊(隱去人名)

AutoDetectedBrowser: Google Chrome
AutoDetectedOS: Windows XP
IIILanguage: zh-Hant
IssueType: lr_dmca
Language: zh-Hant
agree1: checked
agree: checked
android_app_developer_1: gasolin
android_app_name_1: 台北捷運地圖 Taipei Metro Map
android_app_url_1:[https://play.google.com/store/apps/details?id=com.gasolin.droid.metrotaipei&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5nYXNvbGluLmFuZHJvaWQubWV0cm8udGFpcGVpIl0](https://play.google.com/store/apps/details?id=com.gasolin.android.metro.taipei&amp;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5nYXNvbGluLmFuZHJvaWQubWV0cm8udGFpcGVpIl0)
companyname: 台北大眾捷運股份有限公司
country_residence: TW
description_of_copyrighted_work: 「台北捷運地圖 Taipei Metro Map」未經本公司授權許可,逕自使用本公司之路線圖。
location_of_copyrighted_work: 「台北捷運地圖 Taipei Metro Map」這支APP內容直接使用本公司之路線圖。
represented_copyright_holder: 楊xx
signature: 許xx&nbsp;
signature_date_day: 14
signature_date_month: 12
signature_date_year: 2012

· 3 min read

前陣子(10 月初)托台北捷運東門站開通的福,我將過去寫的台北捷運地圖App 更新上東門站後,在一週時間內,使用者就成長了數萬人,也因此上了Play Store 首頁熱門應用區,就排在 Rivio 的 Bad Piggies 旁邊。

台北捷運地圖App 功能單純到不行。一進入 App,就給你一張每次做捷運時牆上都會貼的捷運路線圖。你可以在地圖上用兩隻指頭,或用一隻指頭長按即可縮放觀看地圖。放大後可以繼續用指頭拖拉至想查詢的位置。

這個 App 在前幾次的更新中已經使用了 Android 4.0 版的介面,相容手機與平板。

其實這次的改版中,就程式本身而言,並沒有做什麼調整,因此能進首頁熱門推薦的原因,可以排除與功能面更新的關連。

我總結了這次更新能上熱門應用區最大的原因,應該是與 Play Store 的機制有關。

主題圖片、宣傳圖片之必要

要上(台灣)熱門推薦的元素如下

  • 日均下載超過 1500~3000 次
  • 提供 180*120 宣傳圖片
  • 提供 1024*500 主題圖片
  • 提供 512*512 高解析度應用程式圖示

第一點其實我也很驚訝,原來熱門下載的門檻並不算太高,只要單日數千人次下載就有成為熱門應用的可能。

後面幾點則是許多個人開發者沒特別留意的。注意到了嗎?在首頁上的圖示和實際程式圖示並不相同。首頁上顯示的是另外上傳的高解析度應用程式圖示。

過去 Android Market 還不是那麼規範的時候,開發完程式丟上去就是了。現在 Android Market 上的程式已經超過 70 萬支,要讓使用者找到你的程式,只有多花一些心力,提供消費者更多易於辨識的資訊囉。

除了台北捷運地圖App 之外,也請試試看我的其他 App

推薦大家試試 gPaper 隨手畫或條碼盤點機,都已經更新至 Android 4.0 介面。

· 2 min read

Dropbox 提供用一般資料夾的方式存取資料,資料夾會自動同步到雲端

現在微軟,Google 都將原有的 SkyDrive, Google Docs 升級,支援類似 Dropbox 這功能

使用微軟,Google 的雲端硬碟比起Dropbox 來有以下好處:

  • Windows Live 帳號登入,降低了雲端硬碟的入門門檻
  • 微軟,Google 的雲端硬碟仍支援線上版的 Word, Powerpoint, Excel 等原有功能. Google Docs 甚至支援上傳圖檔 / PDF 的文字辨識
  • 可預期兩家的雲端硬碟將會像 Mac, iPhone 預載 iCloud 一樣整合進 Windows/Windows Phone 或 Android 下一代系統中

在這兩家進入了雲端硬碟服務領域後,已經拉高雲端硬碟服務的競爭門檻。開發者可以開始考慮,該如何應用他們提供的服務,來開發更便利使用者的應用.

參考資料

· 3 min read

自從 Android 3.x 發佈後,Android 虛擬機器由於要完整模擬硬體指令,因此在電腦上跑得極慢,慢到去年 Google 舉辦的 Taiwan Android Developer Lab 會場上,講者拿「模擬器慢」這理由當作送平板的梗來用。

最近隨著 Android SDK Tools r17 的發佈,「Android SDK Manager」裡面多了一個 Intel 貢獻的「Intel Hardware Accelerated Execution Manager」套件,下載這個套件後,可以自動讓使用 Intel CPU 的機種用全速跑 Android 4.x 虛擬機器。安裝前後虛擬機器執行時的速度,確實有極大的差異(從不堪用變成可用)。

於是有人開始認真使用 ICS(Android 4.x)虛擬機器了,一試才發現一些問題:怎麼跑 BMI 範例時,書上說會彈出軟體鍵盤,但我在 ICS 虛擬機器上跑,卻沒有彈出來?

原因是 ICS 虛擬機器的預設設定改變了。因為只有當系統不提供硬體鍵盤時,畫面上才會彈出軟體鍵盤。而目前版本的 ICS 虛擬機器的預設設定為「有硬體鍵盤」。由於系統認定你的虛擬機器已經配有硬體鍵盤可用,因此在按下對應欄位時,畫面上當然不會再彈出軟體鍵盤。

要在虛擬機器中顯示軟體鍵盤,只要在設定虛擬機器時,在「Hardware」欄位加入「Keyboard Support」,並將值設為「no」即可(代表建立的虛擬機器不含硬體鍵盤)。

啟動後再開啟 BMI 範例程式,點選欄位時就會看到軟體鍵盤了。

· One min read

用 ant 來編譯 Android 專案的開發者,在 2011/10 月中升到 r14 之後版本的開發工具之後,ant 檔案的格式又被修改了。

要升級到新版的 build.xml,記得先把原來的 build.xml 檔案備份,

$ mv build.xml oldbuild.xml

再跑一下命令行

$ android update project --path .

以更新相關檔案。

若有參考到相關的 library project 的話,在各 library project 中執行

$ android update lib-project --path .

開啟新的 build.xml 並加入自用的相關設定後,最後再執行

$ ant clean release

看看有沒有問題。如果沒有問題的話,就恭喜你順利升級囉。

· 2 min read

官方的 Dropbox app 可以讓使用者將 Dropbox 中的檔案存到手機 sd 卡的 dropbox 資料夾中,但如果想要將書放到 sd 卡的 books 資料夾、音樂放到 music 資料夾... 對於這樣的需求, 使用官方 Dropbox app 就沒辦法辦到了。

gFolder 可以將 SD 卡中任一目錄下的任一檔案放到 Dropbox 上的任一目錄下, 也可以將 Dropbox 任一目錄下的任一檔案放到 SD 卡的任一目錄下。

主要介面類似 FTP 程式,只要點選檔案,即可將檔案傳送到 Dropbox 或 sd 卡中。 當有網路的時候,使用 gFolder 起來,就像是在手機上直接插上了一個外接硬碟一樣。

當使用者跳出程式,下一次再啟動時,gFolder 也會記錄上一次 sd 卡和 Dropbox 的所在目錄, 可以隨時回到上次的操作狀態。

gFolder 同時支援平板和手機,並先使用 Android 4.0 的統一使用者介面,在手機上也有和平板一樣的使用者介面。

下載網址: https://market.android.com/details?id=tw.idv.gasolin.android.gfolder QRCode:

· 3 min read

Android 4.0 (IceCream Sandwich) 如期推出了 這次的改進比較多是在軟體層面,套用 Apple 的 OSX Lion 廣告詞:

ICS 擁有超過 250 種全新功能, 包括臉部解鎖、連續語音辨識、全景照片與影像特效、5 倍瀏覽器速度、流量監測... ICS 把 Android 推向下一個紀元

Android 4.0 比較重要的新功能已列在 http://developer.android.com/sdk/android-4.0-highlights.html

對一般 App 開發者來說,OS 部分的改進如 Holo Theme 系統佈景主題、Fragment API 等都是 3.x 已經有的,現在套用到手機上。新的連續語音辨識、影像處理 API 等軟體功能,和 Android Beam、Wi-Fi Direct 等通訊技術可以玩出一些新花樣。

開發工具部分則是開始支援 WebCam(Windows/Linux only)、新的初次使用設定精靈(Welcome Wizard)、比較好用的 Layout 編輯器、還有整合了Android Asset Studio製作圖示(Icon)的功能。

整體來看這次推出的功能雖然很多,但在系統整體架構上並沒有多做改變,開發工具也做了些改進,讓開發者更容易使用。比較糟糕的一點是模擬器延續了 Android 3.x 版的不良傳統,為了完全模擬 ARM 的指令,而使得模擬器執行相當龜速。要測試 Android 3.x 版以上的系統時,還是得買實機來跑才比較準。

順便公告一下:因為基本的東西都沒有改變,大家可以放心使用「Google! Android 手機應用程式設計入門」來學習開發相容各種 Android 版本的應用程式,本書不會因 Android 4.0 再改版。

· One min read

這是上週在Coscup 2011活動中演講的主題與投影片。 

介紹:

Jenkins (http://jenkins-ci.org/) 是個廣為使用的持續集成(Continue Integration)框架,可以協助軟體工程師統合處理各種圍繞著「寫程式」之外的程式開發工作(如版本控制、環境設定、編譯、測試、發佈)。 

在這個議程中將和大家分享實際使用 Jenkins 持續集成與發佈 Android App,讓管理多應用程式變得更容易的經驗。

Android + jenkins

View more presentations from gasolin

· 4 min read

AppInventor 是 GoogleLab 中一個有趣的工具,可以讓一般人簡單地透過像堆積木的方式寫出一個 Android App。(剛好Make 雜誌也出了 AppInventor 報導

這週三 Taipei GTUG 舉辦了AppInventor Bootcamp, 由我先簡單介紹如何安裝與使用 AppInventor 後, 再將時間交給大家,創作具備台灣特色,或能展現台灣特色與風格的 App。 首先當然是拿大家熟悉的 BMI,重現在 AppInventor 上

接著則是介紹程式積木部分,程式積木部分做到了原 BMI 程式大部分的功能。 可以看到用拖拉積木的方式寫一個轉換數值程式,是蠻厚工的一件事。 (剛剛要截圖才發現這部份原始碼被覆蓋掉了 Orz,等影片轉出來再把錄到的畫面嵌在這) 接著活動就進入 Hacking 模式。今天不少人都在問:用 AppInventor 寫好的 App 要怎麼轉換成程式碼?答案是目前沒有這樣的功能,也許年底AppInventor Open Source了之後,會有好心人寫出來吧... 昨晚 Hack 的成果,是「台客舞 App」。 台客舞 App 簡介: 看過 jolin 的愛無赦 MV嗎?

裡面的電音舞曲和掌心燈是不是很搶眼而讓人一見難忘呢?

這個 AppInventor 作品結合了電音舞曲播放和掌心燈的功能, 只要你擁有 Android 手機,就可以隨時跳一首台客舞曲~ 夠台味吧 XD 這個程式很簡單,主體是兩個按鈕和一個聲音檔案。

聲音檔案的部份,AppInventor 目前只接受小於 2MB 的檔案,因此先用Audacity工具裁減了一小段轉成 MP3 檔,然後加入這個專案中。 另外兩個按鈕,一個「播放」(Play)按鈕放在最上頭,按了之後即開始播放音樂。再按一次後就停止。 另一個按鈕則是佔用大部分的螢幕,並將底色改為和背景同樣的黑色, 在按下後會變換成白色,以模擬掌心燈的開、關狀態。

有興趣看現場 DEMO 的人,可以參加(Coscup BoF) Appinventor Hack &amp; Show 活動(希望有人願意拿著現場秀一段台客舞 XD)。 程式可以到http://showinventor.appspot.com/main/gallery下載,供大家娛樂一下。 (Android Market 就算了吧)

· 6 min read

因為有一些人對 Android 3 與手機的關聯無法搭上線,在這邊記錄一些 FAQ:

1. 手機應該和 android 3 無關吧!小弟還特別到官網讀了正式文件,確認 android 3 是給平板電腦用的,android 2 才是給手機用的,後續或許會整合,但那是以後的事了不是嗎? Android 3 是 Android 最新版號,而且向下相容多數 API。用 Android 3.2 SDK 來開發 2.x 版本(手機)的應用程式完全沒有問題。

第四版主要使用 3.x 的 SDK,只有要使用手機的虛擬機器時,才使用 2.x SDK 提供的虛擬機器(因為 3.x SDK 中只附了平板虛擬機器,沒有附手機版的虛擬機器)。採用本書寫法的話,程式在平板和手機上都能正常運行。您可以拿您手邊現有的任一開發中 App 來測、或等拿到書的時候照著試試,看看是不是確實能在 3.x SDK 上開發手機應用程式。

2. 本書既然叫 Android 3,卻沒有講平板用的 fragment API?首先,這是一本入門書。這本書內容和其他同類書籍不同,關注的是跨版本的基礎知識(所以書名叫「入門」)。封面說明的部份有寫,想傳達的是用這本入門,就算是更新的版本拿來一樣適用。在寫現在版本時想的是善用開發工具、與市面上主流版本相容,而非關注新功能。

而現在平板在 Android 系統中的市佔率 1.2%,要撐起書市還不到時機(個人意見)。一般入門的開發者(本書的預設讀者群)會專為了 1.2% 的使用者而開發?我認為不會。

有些開發基礎,而又看過我的書的人,應該知道我一貫建議去官方網站查這些進階的 API,而不是苦苦等中文書。

平板的 fragment API(將畫面分隔的 API)有兩種版本,一種是向後相容版,可以跑在 Android 2.x 機種上。另一種是原生版,只能跑在 3.x Tablet 上。根據我個人的評估,這兩種 API 還會有某種程度的改動,除非是專為了平板而開發,不然學習 fragment API 還不是時候(也許等到 Ice Cream Sandwich?)

3. 看第四版的目錄好像沒有講到 Android 3 的特性?

其實各種新東西講了不少,但都已經整合在各個章節中,融入了整個學習過程裡。

在主要開發手機應用程式的情況下, 2.x 和 3.x 還有什麼差別哩?3.x 版為了平板做很多事情,若是還繼續用 2.x SDK 開發,程式放到 Tablet 上會有些 "不太 Native" 的感覺,如選單會出現在平板的下方,而不是如其他內建應用程式顯示 Action Bar 在上方。

比起專為平板設計一份程式碼,在 Android 上要解決這些問題較容易。本入門書第四版的目標是「寫一次,就能在手機、平板、Google TV 等設備上執行」。

因此我是以這樣的想法,以手機為主,在維持本書架構的開發過程中,加入更多實際經驗與技巧,來協助 Android 應用程式開發的入門者或剛接觸平板等機種的開發者。第四版除了圖片重新擷取之外,內容大概有 30~40% 的改動。新版加入了一些新章節,介紹了選單、關連選單、App Widget(桌面小工具)與平板相容設定。還加上了 AsyncTask、Admob 等章節,在主要使用者為手機的情形下,也能讓平板的使用者得到不錯的使用經驗。

「雖然平板等機種的數量少,但如果不麻煩的話,還是盡可能支援吧?」如果您贊同這樣的想法,那看這本書可以得到您想要的。

不必懷疑,這是我的誠意之作

PS: 本書歷版以來都追求和市面其他書籍不同,不求全,只追求初學者透過本書能確實理解 Android 應用程式開發,並能投入實用。我一直以支持入門者的想法來改版或寫作。除非是 spam,不然大可不必揣測我會隨意砍誰的回覆。

· One min read

(不知道為什麼系統沒直接提供這功能)

昨晚上花了幾個鐘頭做了一版出來。功能非常單一:主要就是從檔案列表裡選擇任一檔案,而所有檔案左側都會有一個迴紋針符號, 只要點選項目,就可以把檔案當做 Email 附件,這樣以後 SD 卡就不用拔來拔去了。

大家有需要可以到 Android Market 搜尋 AttachEmail 下載。

Update 2011/7/10:

新版本的AttachEmail (>1.5.2) 除了可以選擇任意附檔之外,還可以從 GMail 儲存任意附檔到 SD 卡中。 AttachEmail Pro版本還支援直接從 GMail 附加檔案,同時可以設定在 AttachEmail 中預設顯示的目錄,讓「處理 Email 附檔」這件事變得更方便。

· 5 min read

圖片來源

今天 Google Android Market 關掉台灣付費 App 下載的新聞動靜不小,也有一些相關的討論出來。但不管法規合不合理,明顯政府短期內都不太可能修法。

影響的 App 類型

在談這個事件的影響之前,我們可以先界定「退費」(refund)機制的影響範圍。在允許 48 小時,24 小時,15 分鐘,或是 7 天無條件退費的爭議上,有最大影響的是那些「用過即丟」的 App(如早期 iPhone 上的 iFart 模擬放屁聲程式)和遊戲、內容 App。

對於高品質的應用程式等原本就用不太到退費機制的 App 來說,影響不大。但這次 Google 關掉了台灣使用者付費機制,對這些原本用不到退費機制的 App 也造成了影響。

「用過即丟」的 App 價格很便宜,一杯珍奶的價格($0.99,接近 30 元台幣)可以讓下載的使用者開心幾分鐘。有數天無條件鑑賞期存在的話,大多數的使用者肯定會在這期間退掉。這確實可以減少使用者覺得「被詐騙」的感覺。因此在這樣的法律下,這類 App 將沒有生存空間。

遊戲 App 方面,大多數移動遊戲的遊玩時間都不長,模式也較簡單。在不耐玩的情況下,允許的退貨時間長短,對這類 App 的盈利結果也會有很大的影響。

這幾年內容 App(如 App 電子書)的消費方式都跟著數位音樂走,但數位內容和數位音樂的消費方式還是有些不同。我們會重複地聽音樂,但很少會重複地看同樣的內容。對這類 App 來說,退貨規則是 48 小時,24 小時,15 分鐘,或是 7 天,就成為很關鍵的問題了。

影響

我們了解了受影響 App 的範圍,那麼在現行狀況下,我們可以觀察看看政府和 Google 兩方的舉措,會對台灣 Android 應用程式市場造成的影響。

消費者

1. Google 把 Android Market 台灣的付費關掉了,除了無法再看到付費 App 之外,消費者之前買過的 App 都無法下載,傷害了消費者對 Android Market 的信心。有一就有可能有二。之後就算再開啟 Market 付費功能,消費者在消費前也要再多想想,是不是哪天這種鳥事又再來一次。

update: 已購買過的程式還是可以透過 Web 版的 Android Market 再下載。

其他市集業者

2. 在 Apple、Google 都得照辦的新聞出來,面對大無畏的政府,中華、遠傳等電信商自有的市集是否也得儘快跟進,否則政府也會將鐵腕轉向這些大電信商,用同樣的標準來要求,用 100 萬連續開罰?

開發者

3. 市場是否還存在?開發者是否還願意開發付費版的台灣專用 App?

4. 若 Android Market 再開放,但要在台灣販售得遵守台灣 7 天鑑賞期的法規,國外開發者是否願意勾選在台灣開賣他的付費應用程式?

政府

5. 台灣政府的反應,為什麼是台北市出面要求和罰金?

update: 消保官是行政院指派,隸屬地方政府管轄。因為 Google 公司登記在台北市,所以由台北市管轄。

相關連結

· 2 min read

今年的 Google IO議程中有太多好東西,但是每個議程都是一個鐘頭,對大多數人來說也是個負擔。

上週六在癮科技主辦的非手機 Android 聚會上分享了「Google IO 2011 回顧」(Android) 投影片。從 Google IO 2011 活動中找出一些我已經看過的有趣內容,在 30 分鐘之內分享給大家。

同時也在會場公開了接下來會在Taipei-GTUG舉辦的「Google IO 2011 演講分享讀書會(系列)」活動。

讀書會的目的是希望發起由參加者認領一至數個 Google IO 中的演講,再用 5~1­0 分鐘和大家分享精華,讓參與的人可以用更短的時間綜合了解 Goo­gle IO 的內容。

歡迎有興趣一起學習的人報名參與喔 :)

Io2011 recap 20110528

View more presentations from gasolin.

· 3 min read

看完這次的Android I/O Keynote(咦,好像名字不是這個), Android Market 平台除了已推出的應用程式(App)、書籍(Book)之外,現在將提供使用者影片租賃(Movie Rental)、音樂 (Music)這兩種線上服務。

同時 Google TV 也將接入 Android Market。這些努力將對手尚未在 iOS 平台上開通的服務一次補足,同時 Android 開發者也首次有了可以向 iOS 開發者說嘴的優勢(可以開發 App for TV)。

更重要的宣告是Android 3.1Android 2.3.4的推出,全力支援 iOS 碰都不碰的USB 相關技術

首先是支援USB Host,讓數位相機可以直接接到平板上,把照片傳進平板。

再來是支援USB Accesories API,讓周邊設備可以直接透過 USB 與 Android 設備連線,與 Android 設備中的應用程式互動。當 Android 設備透過 USB 接上周邊時,會自動列出支援的 App 或是 App 的下載連結。

接著 [email protected] Framework 則是在 USB、網路等周邊的基礎上切入智慧家電領域。

Google 的三螢一雲已經成形,而 Google 的三螢一雲不僅只侷限在手機、PC、電視、Web 上而已,Google 的三螢一雲具備著更通用的涵義:移動、定點、家庭、雲端

對開發者而言,可以用同個系統開發 App for Mobile(手機、行動裝置)、App for Tablet(平板)、App for TV(電視)、App for Accesory(周邊)、App for Home(家庭),學習 Android 系統的吸引力無疑大大地增加。

看到這次 Android 3.1 的發佈,我第一次有 Android OS 開始追上了 iOS 的感覺。面對這樣的正面迎擊,其他廠商該要擁抱它呢?還是也不落人後地端出什麼好料呢?Google I/O 才剛開始,後續值得期待。

· 2 min read

Android 平板快出了,Google 在許多不同場合宣告了這個消息。

Android 3.0 (HoneyComb) 引入了部件 (Fragment) 的概念,讓同一個畫面中可以顯示多個區塊 (在同一個 Activity 中包含多個 mini-Activity)。區塊與區塊之間可以做各式互動。要達成直、橫顯示時不同的平版配置方式,只需巧妙地搭配從 Android 1.6 版引入的多重 Layout 和 Android 3.0 版引入的 Fragment 功能。Google Blog 上的文章介紹了實際使用的方法。

同時 Android 3.0 平板的「桌面」功能更強大了,各式新型桌面 Widget 開發也將成為另一個新的亮點。

製造商們面對 iPad 龐大的壓力,勢必對 Android 平板趨之若騖。現在要問的是,開發者們準備好隨之起舞了嗎?

· 2 min read

當某人發明一套神奇的新程式產生工具,聲稱可以大幅提昇效率。這時有人就會出來說:「應該要先學會如何手動進行,然後才用這個神奇的工具來節省時間。」

程式產生工具假裝將某些東西抽象化,這和其他所有抽象機制一樣都有漏洞,而唯一能適當處理漏洞的方法,就是弄懂該抽像原理以及所隱藏的東西。所以抽象機制雖然替我們節省了工作的時間,不過,學習的時間是無法省的。 -- 約耳趣談軟體 Google 提出的 Android 拖拉放程式設計工具 App Inventor 已經開放使用了。目前版本還有諸多限制,例如做出來的 Apk 無法上傳到 Android Market、無法直接用模擬器而非實機測試等,但已可以作為簡單的程式教學工具。

Android 2.3 版發佈之後,開發工具裡的使用者介面設計工具已經有所進展(但還是很陽春),參照 App Inventor 的開發經驗,明年再來看官方開發工具的時後,也許可以再提昇一些水準。

· 2 min read

Android 2.3 除了這些系統層面的改進外,Google 出的應用程式也多有修改,而且都已經放上 Android Market 供舊版本也能直接使用。這次各種應用程式的更新目標都是更貼近桌面端的使用經驗。幸好 Google 有「Release Early, Release Often」的哲學,我們才不必等到手機商出了新 Firmware 後才能享受到這些應用程式更新的好處。

1. Android Market 更新了,能查看版本更新、查看相關的應用程式、支援平板,並修改了一些使用條款,現在退款時限從 48 小時退化到只剩 15 分鐘。當然,還有台灣的 使用者可以買 App,開發者可以賣 App。

2. YouTube 更新了

3. Gmail 更新了,加入 Priority Box 支援

4. Google Maps 更新了,可以為地點打分數。還有斜角 3D 顯示。

5. Google Docs 更新了,支援手機線上編輯

· 3 min read

上週 Google 釋出了 Android 2.3 版 SDK 與開發工具,2.3 版新增了 SIP 協定以支援網路語音通訊;支援更多種感測器 (sensor),並支援了 "xlarge"(7 吋 +) 大小的螢幕,讓 Android 系統適用於更多種類的設備。

開發工具的部分也做了許多更新,在 AVD Manager 的畫面裡,各種函式庫又區分地更細了,而且第一次加入除了 Google 之外的 Third Party API (Samsung Galaxy)。對用的到的開發者來說這是一個進步,也顯示了 Android OS 確實不只是 Google 一家在玩而已,而是背後有OHA聯盟廠商的支援。從工程師的角度來看這個安裝工具也越來越正規化(與版本不直接相關的功能都可以拆成不同安裝包)了。但對新手來說卻是越來越不清楚第一次安裝時應該選些什麼來裝。 相信如果 ADT 的開發哲學沒有改變的話,這個安裝開發工具過程變得越來越複雜的趨勢會一直持續下去。

大部分開發工具的修改對使用 Eclipse+ADT 的開發者來講沒什麼明顯差別,影響比較大的卻是使用命令行來編譯程式的開發者。原本在 tools 資料夾下的命令都轉到 platform-tools 資料夾下,而且編譯 release 版本時預設會使用 proguard 來預做程式碼混淆的動作,省下開發者不少功夫。對原本就在使用命令行工具來編譯程式的開發者來說,需要一些修改才能順利編譯。

· One min read

「提問的智慧 (How To Ask Questions The Smart Way)」是由知名黑客 Eric S. Raymond 所撰寫,被廣泛轉錄,可以很容易地透過 Google 搜尋到。

花了一整天把 Eric S. Raymond 的 ' 提問的智慧 ' 中文版修訂到和原文一樣的 3.6 版 (上一版正體中文是 2001 年 D.H.Grand 翻譯的),翻譯的過程中也參考了簡體中文版的翻譯。

先做成 Android App, 等有空再來弄個網站放內文以供連結吧... 網站版文件也已放到 GoogleCode

Market 連結

QRCode

· 3 min read

Android 2.2 中新增了應用程式直接安裝到 SD 卡執行 (不少人稱這個功能作 App2SD), 要使用這個功能只要在目前程式中做幾個設定:

1. 專案的 Project Build Target 版本設定為 2.2 (API 8) 2. 修改 AndroidManifest 清單

設定 Project Build Target 版本

在 Eclipse 專案列表中按右鍵,選取 properties 選項,會彈出設定視窗。 在上面選擇左側的 Android 標籤,在右側 Build 欄位勾選「Android 2.2」選項(沒有這選項的請參考 管理 SDK 來升級 SDK),如此一來編譯時才能認得我們接下來在 AndroidManifest 清單中所做的設定。

修改 AndroidManifest 清單

在 manifest 標籤中加入一個「android:installLocation」屬性,實際程式碼如下

<manifest xmlns:android="http://schemas.android.com/apk/res/android"> package="com.demo.org" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal" > .... 說明

android:installLocation="preferExternal" 清單中加入以上宣告後,編譯好的程式仍然可以適用於較低版本的機器,只有在程式安裝到 Android 2.2 版之後的系統上,系統才會自動將這個程式安裝到 SD 卡中。

安裝到 SD 卡中時程式會預作一次加密,讓只有安裝本程式的機器能存取這個程式,避免了程式可能會輕易被盜拷的疑慮。

沒有用到 Service、桌面小工具(Widget)、或動態桌布(Live Wallpaper)功能的程式比較適合儲存到 SD 卡,例如遊戲或 BMI 等小程式。

因為當機器使用 USB 和電腦連線,將 SD 卡掛載成磁碟機時,這些儲存在 SD 卡中執行的程式將會被中斷。

其他提示請參考 Android 官方文件

· 2 min read

現在在 Google I/O 2010 會場看現場發表會。Froyo 真的是非常高完成度的版本,除了機器 OS 本身之外,還支援了許多對開發者、對使用者都有利的特性:

開發者:

  • 新版開發工具支援 Library Project,意思是同時開發試用版 / 正式版時,終於可以共用多數程式碼和資源檔,而不用完全開兩個專案出來

  • 支援 Data Backup API,表示任何應用程式都可以使用 Android Cloud 將程式中的資料記錄到雲端上,換到任何其他台手機上都可以備份回來。

  • 允許遠端控制機器

  • 多種模式的 Mobile AdSense

  • 應用程式可以直接安裝到 SD 卡,得以在 Android 上實現大型遊戲等應用

  • Google TV 上也能裝 Android 應用程式。這表示什麼?表示開發 Android 平台遊戲就能打進電視遊戲市場!使用者

  • 應用程式 / 網頁都有 2~3 倍以上的執行速度

  • 應用程式能從 SD 卡中執行

  • 在網頁版 Market 上點選安裝,在機器上即能自動下載

  • 語音辨識功能、桌面搜尋功能更強大

  • 有新版本應用程式可以自動從 Market 更新

  • 搭載 Froyo 的設備能直接變成行動 AP (tethering) 開發者們又很有事情可以做了 :)

· 2 min read

在 Android 機器上,螢幕的解析度可以用「螢幕大小」和「螢幕點距」兩個參數來表示。

一般的方法

在 Android 1.6 版以後,可以使用 config.screenLayout 語句來判斷螢幕大小

> Configuration config = getResources().getConfiguration();
> if((config.screenLayout&amp;Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL){
> }
>

UPDATE 2010/4/14: sam 說 「config = new Configuration ()」只會回傳預設的 Configuration, 而非當前的 Configuration. 找了一下最好是使用 getResources ().getConfiguration ()

支援的參數與代碼如下

  • Configuration.SCREENLAYOUT_SIZE_UNDEFINED 0
  • Configuration.SCREENLAYOUT_SIZE_SMALL 1
  • Configuration.SCREENLAYOUT_SIZE_NORMAL 2
  • Configuration.SCREENLAYOUT_SIZE_LARGE 3 要檢查點距,可以使用 DisplayMetrics 語句來判斷螢幕點距
> DisplayMetrics dm = new DisplayMetrics();&nbsp;
> getWindowManager().getDefaultDisplay().getMetrics(dm);
> if((dm.densityDpi == dm.DENSITY_HIGH)){
> }
> 支援的參數與代碼如下
  • DENSITY_HIGH 240 (dpi)
  • DENSITY_MEDIUM 160
  • DENSITY_LOW 120
  • DENSITY_DEFAULT 160 相容 1.5 以下機型

根據Android 版本使用圖表,2010 年 1 月時 Android 1.5 市佔率還是接近 1/3,但是這 1/3 的機器上並無法使用上面的 API。

在 1.5 版上,其實仍然可以用 density 語句來判斷螢幕點距比率

> DisplayMetrics dm = new DisplayMetrics();&nbsp;
> getWindowManager().getDefaultDisplay().getMetrics(dm);
> if((dm.density &gt;= 1.5)){
> }
>

density 的值 1 代表一般點距,1.5 代表高點距,0.75 代表低點距。要偵測市面上所有的機器是否是高解析度機型,只要運用以上方法,就可以自動偵測出螢幕大小和點距囉。

· One min read

Situation:

I have to demo my Android Phone screen but I don't have a device projector.

Solution:

Prerequisite:

Download DroidEx.jar

Do:

1. Connect Phone to your PC/MAC 2. Open Eclipse 3. Enter your android_sdk/tool folder, and type the following command:

$ java -cp DroidEx.jar:lib/ddmlib.jar com.commonsware.droidex.DroidEx

Done!

Ref:

· 2 min read

蛋糕賣完賣焦糖布丁,書一年改了三版,真是太瘋狂啦!

當初寫作這本書的目標,就是成為學習 Android 基礎的第一本入門書,我想我有做到最好。對我來說,每個讀者當下拿到書可能只會看一遍。如果看到的內容與新版 Android 有所差距,雖然可以很容易歸因於 Android 改版太快,但我覺得作者也應該負上責任。

Android 自 1.6 版後,引入了新的 SDK 工具架構,讓整個版本升級更容易。同時因為升級容易,Android 的改版也變得更快速(現在幾乎是一個月出一個新版本),這讓寫作入門書的挑戰變得更大。這次針對 Android 1.6、2.0 之後所引進開發工具新架構的大改版,讓新讀者入門時更順暢、也讓舊讀者能順利熟悉新版 Android 環境,並有足夠知識去使用各種 2.x 版的後續版本更新。

這個版本加入 SDK 開發工具介紹,說明 Android 各版本與開發工具之間的關係;解釋了多種解析度機種的區別與開發 / 測試方式。同時因為書籍範例的完成度很高了,也將各章的範例操作完全獨立開來,每章都附有可直接對照進度的程式碼,更易於新手入門時對照學習。

期望在新的一年裡,可以騰出手來,好好研究一些進階的技術,繼續與大家分享。

· 5 min read

是什麼 Market 並不太重要。使用者在哪裡,開發者就在哪裡。 談到 Android Market,非北美 / 西歐的開發者都有很多意見,主要焦點都集中在能不能放付費軟體上。這點對各 Android 集市皆然。前陣子開始整理了一個已公開的各家 Market 一覽表。開發者把應用軟體寫出來了,該選擇放在哪些 Market 上頭呢?

寫應用軟體的目的

開發者開發免費應用程式無非是為了以下幾種目的:

  1. 自己要使用

  2. 增加經驗值 (練功)

  3. 提高名聲 / 打知名度

  4. 靠廣告賺錢

  5. 靠付費版賺錢

在此暫時不分析付費軟體的部份,因為目前還沒有任何一家提供。

這篇只就免費軟體來談。免費軟體該發佈到哪些 Market 上頭呢?

殘酷的答案

老實說寫了免費軟體,經過思考之後,我只會丟到 Android Market。

理由如下:

以前面寫應用軟體的目的來分析:

  • 自己要使用目前手邊還沒有不預裝 Android Market 的機子。對其他 Market 的需求並不大。

  • 增加經驗值 (練功) 放到哪個 Market 上一樣都是練功。Android Market 背後有 G 社備援,提供網頁管理介面、使用者評論等等,雖然不完美,但至少可以和使用者取得互動。目前大部分其他的 Market 並無提供同級的網頁管理介面。有的 Market 還得自己四處申請、填寫一堆文件、截圖,各 Market 審核後還有可能會退你件,弄得跟到奴隸銀行求職一樣。寫免費軟體的開發者難道是為了得到這樣的經驗值?

  • 提高名聲 / 打知名度

發佈到各家 Market 的下載量,可能還沒有 Android Market 上的 1/100(這是經過美化 n 倍後的數據,請原諒我就是這麼直)

  • 靠廣告賺錢參考上一點,發到各論壇去,下載數可能也會比在一些 Market 上高。要勤勞到處貼我建議去貼論壇或 PTT。

以上四點都是 False Impact 的,各 Market 集市的擁有者們看了可能會很沮喪。但其實你們只剩下一個吸引開發者將程式放到自己 Market 的方式:

  • 靠付費版賺錢各家集市算盤打的精,想拿免費軟體開路,吸引使用者造訪的司馬昭之心再明顯不過。除了電信商推的 Market 之外,其他的 Market 要取得開發者 / 開發商青睞,自動奉上免費軟體更難。開發者不可能永遠靠佛心來支撐,沒飯吃還是會餓死的。國內哪個 Market 先能收費,對是否能帶動免費軟體進來,衝高軟體數量還是很關鍵的。

至於國內最後哪些個 Market 會繼續存活,其實只要比較兩件事:

1. 人潮 2. 哪個 Market 能放付費軟體

我相信沒有回報,只有付出的關係是無法長久的。

只要誰先推出拆帳合理的付費機制,相信開發者還是會趨之若騖。

眾家 Market:加油,好嗎?

· 2 min read

本來市面上 Android 相關機種一律都是 480320 解析度, 在 Android 1.6 發佈後,也正式發售支援了其他使用不同解析度的機種,例如 QVGA (320240) 或 WVGA (800*480)。

當然在不同的解析度下,畫面顯示上多少有些不同。 為了避免使用者裝到不適合解析度的程式而引發使用上的混亂,Android 1.6 在 AndroidManifest 清單中引入了「supports-screens」宣告。

一般來說要支援各種解析度,可以在編譯前先將編譯 Target 選為 1.6(專案名 > 右鍵 > Properties>Android>Android 1.6),並在 AndroidManifest 清單中加入如下設定:

 [supports-screens 
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="false"/]

「normalScreens」代表的是一般解析度(如 G1, Hero),「smallScreens」代表的是較低解析度(如 Tatoo)。

現在將程式發佈到 Android Market 時若沒做以上設定,你寫的程式將不會顯示在 QVGA/WVGA 機器的 Market 中。

那麼其他使用奇怪解析度的設備哩?(例如最近發表的某台 WQVGA 機器...)反正上面也沒有 Android Market, 就留給打算支援這些設備的開發者多傷一份腦筋啦.

PS: 將 Target 設為 1.6 跟在 AndroidManifest 清單中設定 minSdkVersion 最低相容版本並不衝突,只要 minSdkVersion 維持不變,低於 1.6 版的機器還是可以使用你的程式。

update: 事實上「smallScreens」代表的是小螢幕,「normalScreens」是一般螢幕,「largeScreens」當然是大螢幕。一般三者的分界點大概在 3 吋跟 4 吋。所以 Tattoo (2.8") 被歸在「smallScreens」範疇。

· One min read

More about Google Android 开发入门指南

終於簡體版也出版了。

對應的是繁體的第二版(Android 1.5)。定價 45 RMB,換算回來還不到 200 NT,真是便宜呀。

希望大陸的朋友們也會喜歡囉 :)

· One min read

想不到才過了一個月,Android 2.0 這麼快就出來了。 對開發者來說,主要的變化是開放了原本的一些 internal API,包含 Bluetooth、多點(至多 3 點)觸控 (MotionEvent)、AccountManager、Sync Adapter、Dock(底座)、並強化相機 API、瀏覽器支援 HTML5、支援更多種解析度機器... 等。

除了大家期待已久的藍芽與多點觸控,開放 AccountManager、Sync Adapter、Dock 這些 API 表示 Android 系統已經準備好讓開發者們能創造與 Google 以外的網路服務、與其他設備更加緊密結合的應用程式。真是很期待開發者們能怎麼運用這個強大的系統 :)

· One min read

Donut (Android 1.6) 發佈了,補完了 Android 1.x 應該有的功能,支援更多的機器。

隨著 Eclipse 3.5、Android 1.6 跟 ADT 0.9.3 推出,到底值不值得再次改版我寫的入門書呢?

如我在第二版序中所言的,Android 改版相當快,所有進階的內容很有可能變動,唯有基本入門所需的知識並沒有改變太多。 因此沒有意外的話,應該會等到 Android 2.0 之後才考慮再改版。

1.6 新版本相關的新內容將先加在電子書版中。

· One min read

新版的 Market 介面改了不少,看起來是有往好的方向走

· 2 min read

看到第二版書的封面,就知這是筆者轉職成為麵包師父後的第一作(誤)

「Google!Android 手機應用程式設計入門 2ed」 這本書主要是為了因為想開發 Android 而學 Java 的人寫的。 最適合的讀者是有其他語言開發經驗,但對 Java 還不太熟悉的讀者。

本書第二版上市時間跟前一版只差了 5 個月,主要是因應 Android 1.5 版釋出, 加上 Android 開發工具 ADT 大改版到 0.9 而大量改寫, 修正許多前一版的 Bug 跟範例程式碼,把整個學習流程弄的更順暢, 並加入新章節、新圖例 (超過 60 張)、實用小技巧。 (當然出版社肯讓我這麼短時間就改版,也是因為賣得還算不錯啦)

買過本書第一版的您不見得需要買第二版,但是本書第二版當然更適合拿來介紹給其他想入門 Android 的朋友。

用杯子蛋糕(CupCake)當封面是我的惡趣味,以配合 Android 目前版本的代號,希望能在賞玩本書時帶來樂趣。

博客來連結

· One min read

Local Reality Browser 是一個擴增實境的應用。透過相機鏡頭,同時展示現實景色與相應的數位資訊。同時像瀏覽器一樣,讓開發者可以在 Android 手機上面自行加入自己的擴增實境網頁(這個軟體稱這些頁面為「圖層」Layer)。

微軟的擴增實境

SONY 的擴增實境

也可參考 操縱介面的改變

· 2 min read

Android Scripting Environment (ASE) is the scripting language (BeanShell, Python, Lua, Ruby) environment for Android Operating System.

This article is about how to compile python for ASE.

The following instructions are according to the discussion from ASE group.

Compile python for host To compile python for ASE, you need a Linux machine, then here goes:

Download proper python source distribution (according to the python version in ase/python/src) from http://www.python.org/

Extract the source and run the following command:

$ cd Python-2.6.2 $ ./configure $ make Then you have a clean python compiled for your PC (called host system).

Compile python for target Now we can go to compile python for your Android device (called target system).

Copy the python executable file and the pgen file into ase/python/src folder

$ cd ~ $ cp Python-2.6.2/python ase/python/src/hostpython $ cp Python-2.6.2/Parser/pgen ase/python/src/Parser/hostpgen Then we should prepare the compile tools.

First checkout the android source from http://source.android.com/ (name as mydroid), we'll use the cross compile gcc in it's "prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin" folder. Another tool is located in "ase/tools/agcc".

Edit .bashrc , add a line to include those compile tools:

export PATH=${PATH}:~/mydroid/prebuilt/linux -x86/toolchain/arm-eabi-4.2.1/bin:~/ase/tools/agcc Then start compile python for ASE.

$ cd ase/python $ ./build.py

Done!

· 2 min read

Android Scripting Environment (ASE) is the scripting language (BeanShell, Python, Lua, Ruby) environment for Android Operating System.

The following instructions are according to the discussion from ASE group.

Prerequisites **To compile ASE, you need a Linux machine, then here goes:

1. Get Android source (read http://source.android.com/download to fetch the source) and name the folder as 'mydroid'(or else you prefer). In the following instructions I assume all the folders are in user's home folder(~) .

2. Get Android SDK (download from http://developer.android.com/) and extract it as "android_sdk"(or else you prefer).

3. Get Android Scripting Environment source (hg clone from http://code.google.com/p/android-scripting/source/) as "ase"(or else you prefer).

4. Enter ase/tools folder and execute "fix_android_sdk.py" to patch the "android_sdk".

$ cd ase/tools $ python fix_android_sdk.py ~/mydroid ~/android_sdk Copying source from .....mydroid to .....android_sdk/platforms/android-[verison]/sources Adding android.os.Exec to android.jar Compiling android.os.Exec to.... Done!

In addition to modifying the SDK by adding android.os.Exec, the script will also copy the source files into the SDK so that they can be browsed in Eclipse.

Import Project into Eclipse

After executing the script, follow the instructions for developing in Eclipse in the Android developer guide to setup a workable Android development environment.

Change the project build path and specify the BeanShell path to (project path)/beanshell/bsh-[version].jar Compile it, done!

PS: Python and Lua are precompiled and already put in res/raw folder. You don't need to setup the cross compile environment unless you want to also compile Lua and Python yourself.

· One min read

基於 Android 平台擴充,支援 MPEG-4 外接 FullHD 顯示器播放的手持設備(不是手機

· 3 min read

中國移動基於 Android 自行訂製的 OPhone 系統終於釋出了 SDK。OPhone 的 SDK 相容於 Android 1.0 API ,使用 ADT 0.8 版開發工具(不支援 Android 1.1、1.5 和 ADT 0.9.x 以上版本的開發工具),並需要安裝它提供的 OPhone SDK 還有 WDT (桌面小程式開發工具 Widget Development Toolkit)這個 Eclipse Plugin。

無獨有偶的,OPhone 弄出了一個跟 Opera Unite 相似的「客戶端即伺服器」架構,叫做「Mobileyou」手機網頁伺服器。我乾脆把這類架構稱為「網頁 P2P」,或「pWeb」(Personal Web、Peer-2-Peer Web)。

這類「pWeb」服務架構的本質,簡單說來是在電腦或手機上裝個網頁伺服器,以提供各種以網頁為介面的服務,再結合個人電腦或手機上提供的個人資訊,提供異化的功能性網站。

中國移動或 Opera 這些服務提供者端,將使用某種動態 DNS 轉址機制(Dynamic DNS),以提供一個統一的網址,如「http:// 官方網址 / 個人暱稱 / 服務」這樣的連結,讓網路上所有的人都可以用這個網址連上 pWeb 網站,以解決使用者該透過哪個網址訪問的問題。

OPhone 提供的「Mobileyou」,跟 Android 上另一個「i-jetty」應用程式很類似。裝了之後都可以存取手機上的功能,透過網頁介面來管理個人通訊錄、查看簡訊等。

有了這樣的服務以後,女朋友要看男朋友有沒有偷吃,就不用再偷偷拿他的手機查看簡訊,只要到個人手機上的網站查看就行了(怎麼覺得舉的是個反例 :p)

· One min read

HTC 自製介面的影片流出了,與 Android 標準介面有些不同。

就像 Linux 發佈套件(Ubuntu, OpenSUSE, RedHat)一樣,當 OS 都免費取得時,要與其他廠商作區隔就得在使用介面(3D 效果)、易用性(各式工具,如 PDF Reader、HTC Mail)、特有功能(與 Extrange 整合)等方面來著墨。

· 2 min read

Android 系統改版相當快,使用者拿到的手機上往往也搭載著不同版本的 Android 系統。當我們用到新版本 SDK 所提供的功能時,也代表我們放棄了所有使用舊版本 OS 的使用者。為了讓最多的使用者能用上我們所寫的應用程式,我們應該盡可能地讓應用程式做到向下相容。

那麼我們最好向下相容到那個版本的 SDK 哩?簡單的答案是:

在 2010 年以前,以 SDK 1.1 為基礎來開發可以享受到最新版的開發工具的便利,同時也可以支援最多使用者。

若只要寫供中文版手機使用的應用程式,則可以直接基於 SDK 1.5 來開發,能使用 SDK 1.5 版的所有功能(因為第一支 Android 中文手機內建的版本就是 1.5 版)。

· 2 min read

Android SDK 1.5 發佈囉!

主要可查覺的變化有稍微美化的介面,模擬器的操作有些改動,還有期待已久的輸入法與桌面小工具(appWidget)功能。

1.5 SDK 中,叫起模擬器的方法也改變了。新版支援多個不同版本模擬器共存,各廠商可以提供不同的自製模擬器。 例如 Google Map 等 Google API 就被另外抽出來放到了(加入了) Google API 的模擬器上。

所幸前陣子使用 1.5 pre 測試時書中所提的範例都仍然可適用,在這段遷移往 1.5 平台的期間,請對照查看線上版的更新。

Update: 電子書版先支援 1.5 啦,主要的改動有

· 2 min read

AndAppStore 4/7 日起提供非官方的 Android SDK BT 種子下載(需要註冊),有 Windows、Mac、Linux 版本。

在目前非官方 SDK 1.5 上可以看到繁簡體中文支援了,只是目前這個版本 Image 還有些問題,像是不支援網路等功能。

使用這版本的 emulator 前,需要建立一個 avd 模擬器 image 檔案。這表示不像目前模擬器只能換面板,骨子裡是同一台模擬器。SDK 1.5 發佈後,開發時可以自訂現在要模擬的機器是否支援諸如相機、GPS 等特性。也就是新版本在支援模擬多種不同的手機上跨進了一步。

建立方法是在 SDK 的 tools 目錄下執行以下命令:

$ android create avd --target 1 --name cupcake-dev-vm

自訂完手機模擬器 image 檔案 avd 後,就可以啟動 emulator

emulator -avd cupcake-dev-vm

PS: 還好書裡面有先見之明,全使用 Eclipse 來操作,而不是用 terminal 來控制模擬器或編譯 Android 應用程式,不然馬上就包很大了 XD

· One min read

第二台 Android 手機,一樣的 HVGA,機身變薄、512 MB 記憶體、虛擬鍵盤(無實體鍵盤)。

mmm... 太普通了。

· One min read

在 Android 1.5 版發佈之後,我們就可以用官方文件中教的方法來定義不同語系的資源文件,並根據語言設定,在使用者螢幕上顯示出對應的語言。在此之前,我們可以在 onCreate 中加入下面的程式片段,來測試不同語系的介面:

 Resources res = getResources();
Configuration conf = res.getConfiguration();
conf.locale = Locale.TRADITIONAL_CHINESE;
DisplayMetrics dm = res.getDisplayMetrics();
res.updateConfiguration(conf, dm);

這段程式碼還可以搭配 Preference 設定,讓使用者在程式中自己選擇想要的語系。

update: 要針對不同語系做處理時,可以直接判斷

if (conf.locale == Locale.TRADITIONAL_CHINESE)

· One min read

Just got my Dev Phone 1 and tried to run Jythonroid on it.

The procedure is

1. download sourcecode

$ svn co -r 51 http://jythonroid.googlecode.com/svn/branches/Jythonroid

2. import project into eclipse

3. connect Dev Phone and computer with USB

4. setup eclipse debug setting to run jythonroid in real Dev Phone

Now I got jythonroid installed in Dev Phone. Here's how to play with jythonroid:

1. Install Terminal Emulator to use the shell

2. just follow the screenshot to say 'Hello Android!' :)

in java we import Toast widget with

import android.widget.Toast;In jython(roid), just type in interpreter:

from android.widget import ToastPython rocks!

· 2 min read

Android Market 本身尚未提供網頁版本,只能透過實機來查看應用程式的下載與評論狀況。這對於還沒有拿到實機的開發者來說相當不方便。

還好現在網路上已經出現了一些解決方法:

cyrket 提供了 Android Market 的網頁介面版本。可以透過 cyrket 來查看最近的使用者評論。

要得知最熱門應用程式,可以參考 aTrackDog 網站提供的排行榜。

想看各個應用程式的下載總數排行,則可以參考 Android Market Place Rankings (均不提供詳細下載數目)。

PS:下載數可以從側面顯示應用程式的普及率。但是應用程式的排行最理想的參考數值,則應該是使用者下載之後仍然保留在機器中繼續使用的數目(即 Active Install 數目)。

· One min read

From aTrackDog

第一次跑去癮科科發文,介紹我跟 Sam Lu 合作寫的追蹤 Android 軟體更新程式:aTrackDog。

這個程式的前身是 Palm 版的 TrackDog。不同之處在於 aTrackDog (Android)可以直接通過網路更新,而 TrackDog (Palm)更多是透過桌面 Sync 來更新,這也是明顯時代在進步之處呀......。

連結:http://bbs.cool3c.com/article/1795

· One min read

Qualcomm 做的名為「Neocore」的 3D Mark 程式,用來推他們公司的圖型晶片。原來 G1 的 3D 能力也很驚人呀。

· One min read

(圖片來自該網站)

http://tech.163.com/mobile/08/1127/10/4ROIG2RF0011179O.html

在 Android 平台公布原始碼後,對岸的手機廠短時間內就將介面自行簡體中文化,並加入簡單的中文輸入法功能(非官方),組合出一套可以販賣的產品。

Android 平台是完全免費的(對山寨機廠來說,WM 好像也是完全免費的 冏)。由於暫時還沒有 Google 授權,所以這台機器上沒有 Android Market、GMail 這些 Google 自有的應用程式。

· One min read

在寫 SQLite 與實做 CRUD 介面教學的初稿。為了講清楚整個觀念竟然花了 5 章,還不包含講 ContentProvider,估計 ContentProvider 也要再加 2、3 章才夠 XD

一個 NotePad 背後需要好多技術,為什麼其他人寫教學可以把 SQL+CRUD+Content Provider 合在一起一篇講完呀?Android 初學者每個都這麼強大嗎?Orz

還是大家都太著急,希望有捷徑可走?

要不是我這個人太笨,Java 技巧太虛了,就是其他教的人都太聰明吧。

· 2 min read

What is jythonroid

Jythonroid is a project for porting jython on Android platform. Created by ClassFoo.

Jythonroid is for console-only at this time. It means oneday Android has console/terminal app in device, you could use jython on real android phone. (or please point me if there's an exist console/terminal app for Android)

Jythondroid was worked on m5-build but outdated when 1.0 SDK comes out. Now Jythonroid (branch) works on 1.0 SDK & Android Emulator again. Since there's no GUI yet, you could checked out the code, run the emulator(install in emulator), and use adb shell on PC to try jythonroid.

Project Url

http://jythonroid.googlecode.com

Howto

1. check out the source

use svn to check out the project source

$ svn co http://jythonroid.googlecode.com/svn/branches/Jythonroid jythonroid

2. import project

In Eclipse, select "File > Import > Existing Projects into Workspace" in tool bar to import jythonroid project into your workspace.

3. setup emulator and run

setup debug settings and press "Debug/Run" button to install jythonroid into Emulator.

4. Run with adb shell

WARN: Since jythonroid is in its early phase, at this time it could only be evaluated on dalvik vm/emulator.

open adb shell, enter data/app folder, and run jythonroid

$ adb shell

cd data/app

dalvikvm -classpath org.classfoo.apk org.python.util.jython

Here's the screenshot:

· One min read

在學 Android 1.0 版的地圖應用方面碰到很多麻煩。

其一是 Android 1.0 版的地圖功能,在開發中就需要由金鑰申請 Map Key。 其二是各種版本 (M3、M5、0.9、1.0) 下來幾乎很難確認哪本書、哪段 Tutorial 到現在還是正確的。

SQLite 資料庫應用亦是有相同問題。

雖然遇到很多挫折,但看看 Android Map 的實際功能影片,會覺得不管怎樣,還是該學會這麼強悍的東西呀 :D

Update: 地圖部分已經搞定了。草稿也寫了些。接著來搞定 SQLite 資料庫吧 :D

· 3 min read

在「Android Market」開放給開發者上傳應用程式的第一天(美國時間 10/27),我就將「深入淺出 Android -- Google 手持設備應用程式設計」電子書中的兩個範例程式「aBMI」(英制)(還沒釋出的範例)、「gBMI」(公制)(基礎、中階的範例)「身高體重指數計算」程式上傳到「Android Market」上。考慮到當時使用者 (美國) 主要集中在使用英制的國家,因此我預期「aBMI」應用程式會得到比較好的評價。

果然,在第一天結束之後,截圖如下

「aBMI」(英制) 得到 732 次下載,目前「active installs」(仍安裝在機器上) 的人數為 452 人(比率 61%)。共有 25 個人平均給予 3 顆星的評價。就一個運作相當簡單的應用程式而言,比起其他書籍範例的完成度,3 顆星的評價還是算相當可接受的。至於「gBMI」(公制) 則因為不是針對目標使用者設計,得到 602 次下載,「active installs」的人數為 193 人 (比率 32%)。只有 11 個人平均給 2 顆星的評價。因此可以明顯看到,「gBMI」不論是下載的人數、安裝後繼續使用的比率,或是整體評價都要比「aBMI」差一個檔次。當 Android 手機在使用「公制」的國家開賣後,相信比例或評價會再次變化。

在設計兩個應用程式時,同樣需花上差不多的時間,但是卻得到有相當明顯差別的結果。由此可以看出,手機應用程式需針對使用者的特性來設計的重要性。

· One min read

前幾天 Android 平台 開放了原始碼,同時也提供了 RoadMap。裡面有很值得玩味的訊息。

在 Q1 2009,Android 平台將會加入以下支援:

1. Localization

French, Italian, es_es, zh_TW, Ja, NL, CZ

2. IMF & IME (輸入法框架、虛擬鍵盤)

如果照著 Android 系統之前隨機子釋出的慣例來看,2009 Q1 很可能會有繁體中文版的 Android 手機喔。

· One min read

How they will merge two platforms that have so many things different about them is beyond us. One is chocolate, the other is peanut butter. Two completely different things. However, we know how good they taste together!

一邊是巧克力,另一邊是花生醬,兩者是完全不同的東西。但是,我們都知道巧克力花生醬嚐起來是多麼地美味! 在 AndroidGuy 上看到一篇文章,提起 Android 與 Symbian 將合併的傳言。

傳言本身不太可信 (Android、symbian 底層架構完全不同),但是文章中所用到的比喻實在很精采。

· 4 min read

深入淺出 Android 手機應用程式設計 是我從 11/12 Android 剛發佈即開始著手準備的寫作計畫。

當 Android 剛發佈時我馬上下載來玩了幾天,發現這是個很有趣的平台:Android 既是手機作業系統,卻有跨多平台 (Windows、Mac、Linux) 的開發工具;既是 Linux 平台,卻有許多類似 Web 開發的感覺。獨特的行程 (Process) 管理方式,讓程式運作起來頗有 Palm 平台反應迅速的風範。完整的上網功能,搭配 Google 地圖、Gmail 等服務,讓我看到許多不一樣的可能性。手上 Palm Treo650 用了多年,看來下一隻應該就是 Android 手機了。

我本身有一些 Palm 程式開發經驗、也有一些 Web 開發經驗,從 Android 並不是那麼完整的文件裡,也得到了一些領會。 個人自覺程式才華沒有到賺那大獎賽千萬獎金的境界,而快速地理解並與其他人分享才是我的長處。因此,寫些快快樂樂學 Android 教學文件,讓台灣的朋友也能快速上手 Android ,讓大家更有把握去賺那 Android 大獎賽的 1000 萬也許是個好主意。於是有了要寫些什麼的概念後,找了同學 Crota 一起腦力激盪,就開始動鍵盤寫作了。

寫作的同時當然也有想出書的念頭。透過朋友 Tib 跟 Yu 聯繫過 D 出版社跟 F 出版社,兩個出版社紛紛反應現在書市慘澹。由於手機軟體開發並非一般程式員會接觸到的課題,所以出版社覺得在台灣的市場恐怕不大,暫時沒有出版的計畫。

我想,既然一時沒有出版的計畫,那麼就乾脆回到原本的初衷,抱著希望讓台灣的朋友也能快速上手 Android 而能去參與比賽的想法,就來公開目前寫好的章節吧 XD

本書的目標讀者是這些人,你是否也是其中之一呢?

  • Windows/Mac/Linux 各平台使用者
  • 想學寫 Android 手機應用程式的人
  • 想知道如何取得 Android 免費開發工具與資源的人
  • 懂英文能上網的人
  • 想知道怎麼查 Android 線上文件的人
  • 有點物件導向 (OO) 程式經驗的人
  • J2ME/Java 學習者 / 開發者目前已於 GoogleCode 上公開了一部份章節內容,剩下的將慢慢補上。有些部份還只是初步的草稿,請持續關注深入淺出 Android 手機應用程式設計 。並歡迎提供建議。

PS: androidbmi 專案中的程式碼,即來自於書中的範例。