Skip to main content

87 posts tagged with "android"

View All Tags

· 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