Category: Android

Froyo 源碼釋出

By cwhuang, 2010 年 06 月 24 日

Android 開發者 Deva 今天下午在 android-platform 討論區上,宣佈 Android 2.2 Froyo 的源碼已經釋出的好消息。

各位開發者,開始動工吧!

修正 Eclair 的藍牙音效支援

By cwhuang, 2010 年 06 月 21 日

先前在開發 eclair-x86 時,曾注意到藍牙支援的一個問題,就是藍牙耳機的聲音是出不來的。藍牙的連線正常,也沒有任何錯誤訊息,但聲音還是從原本的喇叭出來,而沒有送至藍牙耳機。

原本以為是 x86 的問題。但最近在做 arm 版本的移植,也發現這個現象。因此仔細研究了一下,特別和 Nexus One 的 logcat 訊息比對。發覺問題出在 hardware/alsa_sound。因為它沒有 enable WITH_A2DP 這個 flag。

review.source.android.com 提交了這個 patch。今天下午收到通知,已經被 approved 並加到 master branch 了。

值得一提的是,只有用 alsa 介面的 Android 系統才會受此 bug 的影響。很多 Android 手機都並非透過 alsa 介面來控制音效,因此沒這個問題。也難怪這個 bug 一直沒被注意?

Android 2.2 Froyo 釋出?

By cwhuang, 2010 年 05 月 23 日

Android 的官網上,已經貼出 Android 2.2 版(代號 Froyo)釋出的消息。新的 Android SDK 也可以下載。看起來 Android 2.2 版有著許多令人欣喜的改進:

  • 新的 Dalvik JIT compiler,較 2.1 版的效能高出 2 至 5 倍。這是遲來的更新,其實從 2.0 版開始 AOSP 的 Dalvik 就有 JIT compiler,只是一直未打開。這次終於預設開啟,想必已經成熟穩定。
  • 瀏覽器加入 V8 Javascript 引擎,使得 Javascript 的效能比 2.1 版高出 2 至 3 倍。
  • Android Market 的改進,加入錯誤回報機制。開發者可以從用戶那邊,取得程式當掉或卡住的回報。另外可以設定自動更新,以後就不用一個一個的下載程式更新了。
  • 內建無線網路 / USB 共享功能(Tethering & Protable Hotspot)。
  • 支援 Adobe flash,可以從 Android Market 下載。
  • 可將應用程式安裝至 SD 卡。

當然還有更多細部的更新。但光是這幾項,就足夠讓人興奮,非升級不可! 不過,對我們系統開發者來說,最關心的,還是何時可以拿到 2.2 版的 source code?

還有,到底什麼是 Froyo 呢? 字典裡還查不到這個字哩。稍微 Google 一下,似乎是 Frozen Yogurt (冷凍乳酪)的縮寫。

如何在 Android-x86 使用 TTS?

By cwhuang, 2010 年 05 月 19 日

今天在 Android-x86 論壇上,看到有一位視障朋友說他在用 Android-x86 1.6-r2,讓我很驚訝也很高興。由於看不見,他很需要文字轉語音(Text To Speech, TTS)這樣的功能。

TTS 是 Android 內建的功能之一。不過我個人對這個領域並無研究,也從未測試過 Android 的 TTS 功能。不過我同辦公室的同事剛好就有做 TTS 和 ASR 的,他也測過我們 Android-x86 上的 TTS。向他詢問確認,TTS 的確可以在 Android-x86 上使用。只不過要先手動安裝 voice data。

首先,Android-x86 上必須掛載了 sdcard (在 1.6-r2 上,直接插入 sdcard 或 USB 碟就會自動掛載)。接著,到 eyes-free 這個計劃的下載頁面,點選並安裝 com.svox.langpack.installer_1.0.1.apk 這個 apk。它會安裝 Pico TTS data files 到 sdcard 上。只要安裝 apk 就好,它會自動下載 voice data 到 sdcard 上。不用開啟它,若開啟的話它會當掉。不過這不要緊,因為這個 apk 並沒有 activity。其實在 Android 手機上,它會自動從 Market 下載並安裝這個 apk。只不過 Android-x86 無法使用 Market,因此必須手動安裝。

安裝完成後,到 Settings -> Speech synthesis,可以看到 Listen to an example 項目已經可以使用(未安裝 voice data 前它是 disabled 的)。點下去就可以聽見語音合成的範例了。不過只有英文而已。此外,安裝完 voice data 後,也可以試試 Android SDK 的 ApiDemo 裡的 TextToSpeech 範例

Reverse USB tethering

By cwhuang, 2010 年 05 月 18 日

Tethering 是一種讓手機之類的行動裝置分享上網功能的技術。PC、筆電或其它裝置,可透過 wifi、藍牙或 USB 線,連接到手機,再透過手機的 3G 或 wifi 上網。這是十分方便的一種行動上網技術。可惜的是,Android 系統目前並未內建 tethering 功能(據說,下一版的 Android 2.2 Froyo 將會內建)。所幸,可以安裝第三方軟體,如 android wifi tether 來提供 tethering 的功能。或是改刷 Cyanogenmod ROM,也內建了 USB tethering 的功能。不過,這些動作都需要先取得 root 權限才能進行(也意味著失去保固)。

不過,這篇文章要談的不是如何在 Android 上使用 tethering。網路上已經可以找到許多教學文章了。我要做的是相反的事,也就是讓手機透過 PC 或筆電上網。如果你像我一樣,僅使用 2G sim 卡(因此沒有 3G 上網),剛好又在沒有 wifi 的環境,這時 reverse tethering 便派得上用場了!

基本上 tethering 的原理很簡單,就是利用 NAT 的功能,其中一端做為 NAT router 負責轉送封包,另一端當 client 將封包送給 router 來達到上網目地。普通的 tethering 是由手機端當 NAT router,PC 端當 client。而本文介紹的 reverse tethering 剛好反過來,由 PC 端當 NAT router,手機做為 client。現代的 Linux 都已內建 NAT 功能,Android 的 kernel 也是 Linux,因此要支援 NAT 並不困難。

我測試的環境如下:Android 手機是 Nexus One,已經改刷 Cyanogenmod 5.0.6-N1。因為這個版本已內建 USB tethering 功能,方便多了。其它的 Android 只要是跑 Cyanogenmod ROM 的應該都可以用。否則的話,可能就要自己重編 kernel,打開 netfilter,並安裝 iptables 等工具程式。

PC 端我跑的是 Fedora Linux 12。基本上任何的 Linux 發行版本應該都可以,但步驟可能略有不同。用 Windows 的話理論上也可以,但我不熟,抱歉啦!

測試方法如下: Read more »

OESF Android Steps Ahead 2010/Tokyo

By cwhuang, 2010 年 04 月 23 日

OESF 在日本東京舉行的 Android Steps Ahead 研討會已順利結束。Android-x86 在 technical track 分享了我們的開發經驗和成果,獲得不少回響。還意外見到了 Android-x86 在日本的一位開發者 Kinneko,他曾貢獻自動掃瞄硬體裝置並載入驅動程式的功能給 Android-x86 。能夠親眼見到各位業界先進,以及各種基於 Android 而開發的產品,更感到 Android 的潛力無限。這是此行的最大收獲。

在此特別感謝邀請 Android-x86 與會的 OESF 台灣辦公室 Tad 先生,以及在演講會場負責日文口譯的 Mika 川口美香小姐。藉由他們的幫助,使得 Android-x86 計劃能夠在國際發聲,並使當地聽眾更了解 Android-x86。

這裡有一個短片,是由 OESF future system working group 所製作,勾畫出將來 Android 系統可能深入我們的家庭和生活。

以下是一些照片的分享: Read more »

Android-x86 向前走:OESF 演講

By cwhuang, 2010 年 04 月 20 日

OESF 是在日本成立的一個非營利組織,以推廣和交流 Android 作業系統的應用為宗旨,特別是 Android 在非手機系統上的使用。成員除日本大公司外,也包含美國、台灣、韓國和中國大陸等地的公司或法人。例如負責驗證測試的工作小組(Working Group)就是由台灣的工研院所主導。

明天 OESF 將在日本東京舉行一場「Android 向前走」(Android Steps Ahead)的研討會。Android-x86 計劃應邀於 Technical Track 進行演講。比較特別的是,演講將以中文進行,現場並有日文同步口譯。

如果現場狀況許可,我將以 Android-x86 1.6-r2 做為簡報展示平台。演講所使用的簡報已公開在此:

Eclair-x86 更新

By cwhuang, 2010 年 04 月 18 日

最近 Yi 和我都比較忙碌,因此 Android-x86 計劃沒什麼大進展。不過為了 OESFAndroid Steps Ahead 會議演講,花了些時間,將 eclair-x86 重新 rebase 到 AOSP 的 eclair branch 最新版本(2.1-update1),並修正了已知的編譯問題。取得的方法先前一模一樣:

$ repo init -u git://git.android-x86.org/manifest.git -b eclair-x86
$ repo sync

也可以從 SourceForge mirror 下載:

$ repo init -u git://android-x86.git.sf.net/gitroot/android-x86/manifest.git -b eclair-x86
$ repo sync

值得一提的是,加入了 0xdroid 計劃對 frameworks/base 的效能修正,使得界面操作的流暢性增加許多,大概和 1.6 版差不多了吧。
Read more »

新版 Google Maps 4.1

By cwhuang, 2010 年 04 月 17 日

先前提到在 Android-x86 上能跑 Odroid 修改過的 Google maps。不過那版本還是 3.x 的,有點舊。最近在 XDA developers 論壇上,看到有高手放出修改過的 Google Maps 4.1。抓下來試試,果然在 Android-x86 上也能執行,連導航功能也可以使用。而且這個 apk 直接安裝就好,不用像 Odroid 的檔案那麼麻煩。

用 Android-x86 的瀏覽器直接去 XDA developers 論壇的文章下載就好,或者抓這裡的 mirror。附帶一提,要把 apk 放在 apache 上讓 Android 下載後就可安裝,必須將 apk 的 mime type 設為 application/vnd.android.package-archive 才行(資料來源)。

誰偷了 Android-x86?

By cwhuang, 2010 年 03 月 31 日

先前曾提到,有個山寨版的 Android-x86 網站,明明對 Android-x86 計劃沒有任何的貢獻,卻大剌剌的在首頁放了要大家捐款的圖示。想藉本計劃的名氣來吸金嗎? 只可惜本計劃人氣低落,至今為止只收到三筆,總共 20 元美金的捐款而已。他人想藉本計劃吸金發財的夢想可能要破滅了! 當然我想得到捐款來買一支 Android 手機的希望也幻滅了。(還是說我們捐款都被山寨版網站給吸走了?)

無獨有偶,現在又發生了疑似剽竊 Android-x86 的成果,改成自己的名字來發表的事。話從我們的 eclair 2.0 porting 開始說起。先前在 Android-x86 2.0 初體驗一文曾提到在 bionic linker 處理 weak symbols 上有瑕疵,導致在 x86 上出問題。Yi 首先做出修正,我經過整理後,已提交給 AOSPcode review,代號 12801。這已經是去年 12 月 8 號左右的事情了。

不料,Android team 一直沒有 review 這個修正(就像絕大多數修改一樣)。直到昨天,我才收到第一個 review 的結果,這位叫 David Turner 的 Android 開發工程師,希望我拿掉非必要的 debug 訊息修改後,再重新提交。我立刻依照要求做了修改,並重新提交為 14117 號修正。(其實不應該提交成新的 patch,應該取代掉舊的。但我不熟悉 repo upload,所以犯了錯誤。後來發現應該用 repo upload –replace 才對。)

今天 David 說已 approve 這個修改,但 merge 時有 conflict,希望我 merge 或 rebase 後重新提交。我抓了最新的 bionic 要 rebase 時,卻驚訝的發覺這個修改已經存在於 bionic master branch 中,只不過,作者被換了一個人,由 Yi Sun 變成了 Min-su Kim. (姓金? 韓國人?)

如果這位金先生是自己獨立發現相同的問題,並且跟我們做出了相同的修正,那也很好。英雄所見略同,這樣的例子在歷史上屢見不鮮。然而,仔細閱讀了他提交的 14063 號修正後,我的想法有了 180 度的轉變。很顯然的這是我去年就提交的 12801 號修正,只不過被改成了他的名字來發表,連 git log summary 也一模一樣,只是後面的補充說明被拿掉。

為什麼我能如此肯定? 請仔細看 12801 號修正,它其實只改了兩行。第一行才是真正的問題修正,第二行其實只是調整 debug 訊息的輸出,跟問題的修正無關。這部分也是 David Turner 在第一次的 review 意見中希望我拿掉的部分。但是金先生第一次提交的 14063 號修改卻和我們的 12801 號修正一模一樣,連 debug 訊息的修改也一樣。後來的修改才拿掉 debug 的部分。這難道只是巧合? 英雄所見略同? 我難以相信。

說實在的,這只是一個一行的小修正,似乎不值得大驚小怪。本來 Android-x86 就是開放源碼計劃,成果歡迎取用。然而,剽竊他人的成果來改成自己的名字,這是開放源碼界的大忌! 更何況這個小小的修正,也是我們開發者花費數天的時間,辛苦 debug 的成果。因此不能不據理力爭!

當然,我也要再度對 Google Android 團隊提出抱怨。你們 review 社群所提交修改的速度實在太慢了! 如果在去年我提交這個修改的時候,你們就已經 review 並 approve,怎麼會發生幾個月後,其他人又提交了相同的修改,而且還先被 approve 的事情? (14063 號修改是今年三月 25 號才被提交的)

我已經發英文信給 14063 號修正的所有 reviewers 和相關人員,包括金先生,仔細說明事情的前後始末,並要求一個合理的解釋。全文重貼於此:

Hi,
I wrote this email to you due to recent change in bionic
(commit id: 3cab22c8cf0dcf30718a1452ce9cbb637876cea3)
and you are the reviewer or related person.
The problem I'm going to argue is not about the patch itself,
but who did it.

Actually, the issue was first found by the Android-x86 project
(http://www.android-x86.org) when we tried to port eclair 2.0
to x86 platform. We fixed the issue and pushed to our git
server on Dec 2nd, 2009,
(http://git.android-x86.org/?p=platform/bionic.git;a=commitdiff;h=e4b007657165f74b23540af542d77f6a05118f26)
The original author is Yi Sun. Later, I think the issue is
a flaw of the bionic linker itself, so I decided to submit
the patch to AOSP. I cleaned up the patch and repo upload it
on Dec 8th, 2009. (http://review.source.android.com/12801)
However, the Android team didn't review it, until March 30th, 2010.
The reviewer, Davi Turner, asked me to remove unrelated debug change,
so I repo upload another patch immediately.
(http://review.source.android.com/14117,
sorry I failed to replace the old patch since I'm not so
familiar with repo upload)

Today David said he approved the patch, but it can't be merged
due to conflict. When I tried to rebase the patch,
I was surprised the patch is already in, but in a different
author name, Min-su Kim.

Mr. Kim, if you are an independent developer who found the same issue
and fixed it in the same way as us, that's totally fine.
However, after carefully read change 14063
(http://review.source.android.com/14063)
I really believe this is just the patch I uploaded on Dec 8th 2009,
except the log is simplified and the author is changed.
I feel unhappy since it seems our work was kidnapped.

Though this is just a small patch, I'm not so care about the credit.
But I really hope you can explain why it happened.

Regards,

OfficeFolders theme by Themocracy