Category Archives: Android

leJOS 的Eclipse plugin 安裝教學

在 leJOS 0.8.5 的年代, Eclipse plugin是不能用的. 到了 leJOS 0.9 發布之後, 才又能在 Eclipse 中來編寫 leJOS 的NXT or PC專案. 不然只能用txt 或是例如 PsPad 或是 Notepad++ 這種泛用型編輯程式. 有點不方便呢!

在Eclipse中當然就可以享受各種自動完成, 錯誤提示以及自動載入相關套件的好處囉!

下周就是新一期的淡江機器人Java 課程開學, 有興趣的朋友歡迎和我們一同學習 –> 2011 Java機器人學習網

簡單來說您需要:

1. 安裝JDK

2. 下載Eclipse, 各個版本都可以

3. 在Eclipse中安裝 leJOS Eclipse plugin.

完整的中文安裝手冊請由 D.I.V.E團隊處下載, http://diveduino.blogspot.tw/2011/09/eclipse-37-lejos-09.html

機器人結合手機的重要拼圖: Android + openCV達成視覺辨識

CAVE於去年出版的[Android / NXT 機器人大戰:智慧型手機控制機器人]內容在討論Android手機上的各樣硬體如何與機器人結合, 包括觸控螢幕, 感測器控制等。 類似的功能也能透過簡易版的Android開發環境, 也就是App Inventor來達成。

我們也有專文[Google Map 路徑追蹤機器人]來討論如何讓機器人根據Google Map的路徑分析結果來移動, 雖然精度受限於手機的GPS晶片, 但已經有基本的雛形。歡迎來信索取source code。

Google Play上也上架了四隻程式, 有興趣的朋友可以下載來玩玩看。當然, 也歡迎來信索取source code。

當時尚未討論到的是如何利用手機進行視覺辨識, 讓機器人得以利用手機上優秀的相機鏡頭來進行各種動作。 我們初步的構想是讓機器人透過手機來跟著手電筒光源跑移動。由於相機所擷取到的資訊對於機器人而言太多也太雜, 所以希望將資訊單純化。所以需要借重openCV這個專門的視覺處理函式庫, 將它轉到Android平台上執行。 這需要做一些步驟, 包含下載openCV的Android SDK, 下載cygwin以及Android NDK等等。因此我們將另外以專文來介紹如何順利在您的Android手機上build up openCV環境。

對於物體追蹤來說, 很重要的一個步驟就是邊界偵測(Edge detection)來說, 我們假設一個像素的周圍8個點顏色都是相近的, 如果周圍像素的顏色出現大幅度變化, 代表這裡很有可能是邊緣。 下圖是擷取網路的示範效果。

各位可以從下圖CAVE老師手中的相機畫面看到, 我們已經順利將手機相機擷取畫面二值化並可擷取物體(畫面中亮部)的坐標與XY分量。 如此就能根據手電筒光源位於畫面的左/右側來控制機器人左右修正, 試圖保持光源位於畫面中央。另外也可透過光源所占像素面積來判斷遠近。

Processing 初體驗 – 結合Android手機

Processing 互動程式初體驗 –

1. 手指頭接觸點會有一個白色小圓圈, 畫面中的正方形會隨著手指頭移動而旋轉。
boxRotation += (float)(pmouseX – mouseX)/100;
rotate(boxRotation);
rect(0, 0, 150, 150);

2. 觸碰點與畫面中心連線, line(width/2, height/2, mouseX, mouseY);

3.背景顏色也會隨著坐標而改變 background(mouseX * (255.0/800), mouseY * (255.0/280), 0);

要轉換到Android上執行只要切換到Android mode就好了, 電腦上必須要有Android SDK, 並裝好您Android手機的driver就可以了。 相當輕鬆。


================================================================

float boxRotation = 0;

void setup(){
size(480, 800);
smooth();
stroke(255);
fill(255);
rectMode(CENTER);

};

void draw(){
background(mouseX * (255.0/800), mouseY * (255.0/280), 0);
boxRotation += (float)(pmouseX – mouseX)/100;

line(width/2, height/2, mouseX, mouseY);
ellipse(mouseX, mouseY, 40, 40);
pushMatrix();
translate(width/2, height/2);
rotate(boxRotation);
rect(0, 0, 150, 150);
popMatrix();
};

Android 4.1 Jelly Bean來了!!

三更半夜不睡覺在看 Google I/O 2012 線上直播, 重點有兩個

1. Android 4.1 Jelly Bean。

2. NEXUS 7平板來了, 由ASUS代工, ASUS施崇棠先生也在現場。 規格如下:

1. 1280×800, 213dpi
2. Jelly bean 4.1
3. 4核心, 51MHz-1.3GHz
4. NFC, GPS, Gyroscope, Light, Compass, Accelerometer sensors
5. 前置鏡頭
6. 支援 USB host and accessory modes


(圖片引用癮科技 http://www.engadget.com/2012/06/27/nexus-7-tablet-hands-on/)

還有 ADK 2.0 要發布, 在Day 2(6/28) 會介紹新的ADK周邊開發套件2.0。CAVE最期待的就是這個, 讓Android手機透過ADK開發板進行更多有趣的電子電路專題。

快打開Eclipse來更新吧!!

[Android ADK + Arduino] Lesson2 控制LED漸明漸暗

[Android ADK + Arduino] Lesson1 控制LED亮滅

本範例是[Beginning Android ADK with Arduino]一書中的Project 2. 透過Android畫面上的SeekBar滑桿 來控制Arduino板上的LED燈漸明漸暗。

您需要的硬體有:

1. Arduino MEGA ADK or 其他相容ADK板

2. Android手機或平板(2.3.3 or 3.1以上).

3. LED(5V). 電阻(220歐姆) x1, 線材一批.

  
Android端程式(部分)

Android端程式的關鍵在於使用SeekBar物件的狀態監聽事件來 呼叫sendLedIntensityCommand()方法, 對TARGET_PIN_2 (LED正極腳位)寫入 params[0]). 我們將SeekBar分成256個等級來控制LED的明暗, 和上個範例是不一樣的效果唷.

OnSeekBarChangeListener ledIntensityChangeListener = new OnSeekBarChangeListener() {

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
ledIntensityTextView.setText(“LED intensity: ” + ledIntensitySeekBar.getProgress());
new AsyncTask () {

@Override
protected Void doInBackground(Byte… params) {
sendLedIntensityCommand(TARGET_PIN_2, params[0]);
return null;
}
}.execute((byte) progress);
}
//…其它省略

};

sendLedIntensityCommand()方法中則是使用mOutputStream.write()來控制LED漸明漸暗 .

public void sendLedIntensityCommand(byte target, byte value) {
byte[] buffer = new byte[3];
buffer[0] = COMMAND_LED;
buffer[1] = target;
buffer[2] = value;
if (mOutputStream != null) {
try {
mOutputStream.write(buffer);
} catch (IOException e) {
Log.e(TAG, “write failed”, e);
}
}
}

Arduino端程式 部分, 省略main 與Acc物件定義.

Arduino端程式與上一個範例 差別在於使用analogWrite方法來控制LED, 而非digitalWrite. 請注意您所使用的PIN腳位必須支援PWM才可以唷.

void loop() {
if (acc.isConnected()) {
//read the received data into the byte array
int len = acc.read(rcvmsg, sizeof(rcvmsg), 1);
if (len > 0) {
if (rcvmsg[0] == COMMAND_LED) {
if (rcvmsg[1] == TARGET_PIN_2){
//get the analog value
byte value = rcvmsg[2];
//set output pin to according analog value
          analogWrite(PIN, value);
}
}
}
}
}

[Android ADK + Arduino] Lesson1 控制LED亮滅

本範例是[Beginning Android ADK with Arduino]一書中的Project 1. 透過Android畫面上的toggle button 來控制Arduino板上的LED燈亮滅.

您需要的硬體有:

1. Arduino MEGA ADK or 其他相容ADK板

2. Android手機或平板(2.3.3 or 3.1以上).

3. LED. 電阻x1, 線材一批.

   

Android端程式(部分)

Android端程式的關鍵在於在toggleButton狀態改變時, 呼叫sendLedSwitchCommand()方法, 對TARGET_PIN_2 (LED正極腳位)寫入 params[0]). 使用togglebutton而非一般button的用意在於其機械性質的差異, button需持續壓按才算為pressed, togglebutton則是在點擊之後就會改變狀態, 直到下一次點擊為止, 不需要一直壓著.

OnCheckedChangeListener toggleButtonCheckedListener = new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (buttonView.getId() == R.id.led_toggle_button) {
                new AsyncTask () {

                    @Override
                    protected Void doInBackground(Boolean… params) {
                        sendLedSwitchCommand(TARGET_PIN_2, params[0]);
                        return null;
                    }   
                }.execute(isChecked);
            }
        }
    };

在sendLedSwitchCommand()方法中則是使用mOutputStream.write()來控制LED的高低電位, 也就是亮滅.

public void sendLedSwitchCommand(byte target, boolean isSwitchedOn) {
        byte[] buffer = new byte[3];
        buffer[0] = COMMAND_LED;
        buffer[1] = target;
        if (isSwitchedOn) {
            buffer[2] = VALUE_ON;
        } else {
            buffer[2] = VALUE_OFF;
        }
        if (mOutputStream != null) {
            try {
                mOutputStream.write(buffer);
            } catch (IOException e) {
                Log.e(TAG, "write failed", e);
            }
        }
    }

Arduino端程式 部分, 省略main 與Acc物件定義.

Arduino端則是在loop()端終判斷接收到的value為何, 如果是VALUE_ON, 則digitalWrite(PIN, HIGH)來點亮LED. 反之則關閉.

#define COMMAND_LED 0x2
#define TARGET_PIN_2 0x2
#define VALUE_ON 0x1
#define VALUE_OFF 0x0

#define PIN 2

void loop() {
  if (acc.isConnected()) {
    //read the received data into the byte array
    int len = acc.read(rcvmsg, sizeof(rcvmsg), 1);
    if (len > 0) {
      if (rcvmsg[0] == COMMAND_LED) {
        if (rcvmsg[1] == TARGET_PIN_2){
          //get the switch state
      byte value = rcvmsg[2];
          //set output pin to according state
          if(value == VALUE_ON) {
            digitalWrite(PIN, HIGH);
          } else if(value == VALUE_OFF) {
            digitalWrite(PIN, LOW);
          }
        }
      }
    }
  }
}

Android Facebook API實作列車 #1 – 申請Facebook App

有興趣使用Android 裝置上開發 Dacebook 應用的朋友們, CAVE將編寫一系列專文教您快快樂樂學會Android Facebook API。

預計內容如下:

1. 申請Facebook App

2. Graph API explorer

3. 第一支程式:

OpenSSL產生Android Key Hash
include android Facebook SDKsdk
載入Facebook畫面

5. 塗鴉牆發文

6. 上傳照片

7. 打卡

8. FQL (Facebook查詢語言).

本篇為第一篇: 申請Facebook App.

有時候我們會看到自己或是友人的Facebook訊息下方有 “來自XXX” 的副標題, 這個XXX就是一個Facebook app。 由於Facebook代表是一個人在虛擬世界中的動態, 可不能隨隨便便就讓一些不知名的程式透過您的帳號來發文。 (雖然有時候還是會有大洗板的狀況發生就是了…)。 下圖的 “來自cavedu” 就是阿吉老師自己寫的一個假的打卡Facebook App, 我6/13並沒有去新竹市立演藝廳呢!! 之後我們都會用這個app 來進行各種Facebook操作。

1. 請到Facebook 開發者網站 : https://developers.facebook.com/ 登入帳號就是您的帳號, 無須另外申請, 點選最上面的 “應用程式”。

2. 首次進入時, 本畫面是空白的, 因為您尚未建立任何Facebook app。 請點選 “建立新的應用程式”。 依序完成即可, 過程中您需要輸入您的行動電話號碼, 收到系統傳來的認證碼之後才能申請完成。

3. 申請完成之後如下圖,  一些東西我遮起來了, 這不會影響到您之後寫程式。 請注意圖中間有一個Android Key Hash欄位, 我們必須使用OpenSSL 這個工具在您用來開發的電腦上產生一組Android Key Hash, 填入這個欄位之後, 才能讓我們的Android app 順利透過現在這個 Facebook app 來進行各種動作。

請注意: 如果您會在一台以上的電腦進行開發的話, 就要每一台電腦都產生一組Android Key Hash才行。

這樣就完成第一步囉!!

Android Facebook API 小小心得整理

由於教課的需要, 最近把Android Facebook API 簡單摸過一遍, 我會在近日把Android Facebook API 的功能整理出來, 帶領大家一步步開發出Facebook常見的功能, 例如po文, 上傳照片以及打卡等等。

我是從入門者的角度來切入, 所以如果您是自己看Facebook範例就能一路過關斬將的朋友, 就不用看這裡啦~

希望可以幫到有興趣開發Android Facebook app的朋友們。 預計內容如下:

申請facebook app

Graph API explorer

在Eclipse中匯入Android Facebook sdk

專題1 載入Facebook畫面

   什麼是SSO (Single Sign-on 與 Access token)

   facebook.authorize 權限說明

專題2 po文塗鴉牆

專題3 上傳照片

專題4 打卡功能

專題5 FQL

[LabVIEW for Arduino] LED Blink by LabVIEW

首先我們必須要先放個Ini.vi,並且設定VISA跟板子型號,接著在程式執行一開始使用Set Digital Pin Mode.vi來設定此Pin腳是要輸出還是輸入,拉出一個for loop設定程式要回圈幾次,並且使用shift register來記錄high/low及time delay設定閃燈週期,獎high/low輸入至digital write pin,並且設定其pin 腳,最後再放個close.vi釋放控制權。

我們可以在fornt panel 放一個燈泡,來對照arduino pin13旁的LED與front panel的燈泡是否同步。

[Android ADK + Arduino] 姿態感測器控制Arduino/NXT機器人

使用Android手機透過USB線來控制Arduino MEGA ADK. 本專案是透過NXShield-M讓Android手機得以控制樂高NXT周邊。由於NXShield為 MindSensors公司系列產品,所以在函式庫中也完整支援了MindSensors產品。

我們之後會陸續發表更多Android ADK + Arduino的教學影片,也請大家看看 豐原高中郭老師的專業部落格

包好Android ADK的Arduino 1.0環境請按我下載

Arduino程式與Android範例程式請到 CAVE實驗室 下載

請看以下影片,聲音是阿吉老師的聲音啦(很沙啞)  歡迎分享~

[youtube=https://www.youtube.com/watch?feature=player_embedded&v=hHVM_5KmHdA]

[Android ADK + Arduino] USB姿態控制機器人

Google ADK 結合NXT機器人成果出爐!! 使用Android手機的姿態感測器來控制 樂高機器人。 請注意NXT主機已經換成 Arduino MEGA ADK。 並透過NXShield-M來連接 NXT 馬達。

下一個範例是透過Android手機來控制Arduino控制板上的servo, 敬請期待!

您需要的硬體是:

Android手機(2.3.4)以上 or Android平板 3.1以上。

Arduino MEGA ADK

NXShield-M  (專門用來連接樂高NXT周邊, 如果用不到的話就不需要這一片擴充板)

電源: 可用USB供電 or 9V (最大10.5V)直流電源

Android 端程式與Arduino端程式請都由 CAVE實驗室 下載

 

[Android 教學] Google 圖表工具

http://code.google.com/intl/zh-TW/apis/chart/

範例程式下載請按我

今天要介紹的是 Google Chart Tools 表格工具, 包含了長條圖, 雷達圖, 圓餅圖, 折線圖等等只要是圖表這邊都可以使用。可以在您的網站中嵌入或是Android app 中使用本項服務來得到各種精美的表格。

本範例修改自 [Google Android SDK開發範例大全|第3版] 範例0903, 會將輸入字串送給Google Chart Tools 之後回傳正確的QRCode。

問題來了, 這些參數說真的不是太好懂, 所以可以使用圖表精靈 Chart Wizard(http://code.google.com/intl/zh-TW/apis/chart/image/docs/chart_wizard.html), 它真的超好用的!  只要了解基本的參數設定, 人人都可以做出超精美的表格~

舉例來說, 我想要產生一張雷達圖, 我只要點選進入雷達圖選項之後, 調整參數, 然後把以下參數貼到Android程式中就可以了。事實上browser會自動辨識 < img >標籤把它變成一張圖, 所以我們刪除標籤只留下內文。

“http://chart.apis.google.com/chart?chxl=0:|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec&chxt=x,y&chs=300×300&cht=r&chco=FF0000&chd=t:63,64,67,73,77,81,85,86,85,81,74,67,63&chls=2,4,0&chm=B,FF000080,0,0,0”

以上比較重要的參數有 chxl 是分類項目名稱(Jan~Dec)。chs是圖表尺寸, chd是各分類項目值。所以Jan的值是63, Feb是64…  以此類推到Dec是63。

在Android中, 我們可以透過 WebView.loadData()方法來將回傳結果顯示在螢幕上。

範例程式下載請按我

請注意本範例只示範Android app 去載入不同的Google Chart Tools 參數, 所以範例程式中不論輸入什麼所載回來的圖型都是一樣的唷! 如果需要在app端自行輸入參數來調整的話, 您需要使用EditText.getText().toString() 來取得 輸入欄位中的資訊, 再指定到對應的 Google Chart Tools參數中。


[Android ADK] 環境建置說明 #2 Android裝置 ADK環境設定

[Android ADK] 環境建置說明 #2

Android裝置 ADK環境設定並執行DemoKit 範例程式

請先閱讀 [Android ADK] 環境建置說明 #1 Arduino 與相關函式庫

請注意執行時,ADK開發板需使用DC電源,不可使用AC電源,否則可能會抓不到裝置甚至損壞。

方才下載的ADK套件中的app資料夾是一個名為DemoKit的 Android程式,它可以讓您的Android裝置與ADK開發板互相溝通。ADK開發板可接收來自Android裝置的指令,例如點亮ADK開發板上 的LED燈;或是回送指令給Android裝置,例如ADK開發板上的搖桿狀態與溫度計讀數。

在Eclipse環境中安裝並執行DemoKit範例程式:

1.      您必須先依序安裝下列項目才能建置Android開發環境,詳細安裝步驟請參考:http://code.google.com/p/androidbmi/wiki/InstallAndroid . 大部分的時間都花在這…

A.    JDK

B.     Eclipse

C.     在Eclipse中下載Android開發套件

2.      確認已安裝了 Google APIs API Level 10 add-on 函式庫,裡頭包含了支援周邊模式(accessory mode)的Open Accessory函式庫,可支援Android手機2.3.4或Android平板3.1以上的裝置。如果您的設備都在3.1以上,您只需要使用API Level 12即可。更多有關API Level的使用資訊請參考the USB Accessory 說明頁面。(http://developer.android.com/guide/topics/usb /accessory.html#choosing)

3.      點選 File > New > Project…,然後點選Android > Android Project。

4.      在Project name: 欄位中輸入專案名稱:DemoKit。

5.      接著選擇Create project from existing source,點選 Browse,選擇剛剛的app 資料夾之後點選 Open,最後點選 Finish來關閉對話視窗。

6.      在Build Target中選擇「 Google APIs (Platform 2.3.3, API Level 10) 」。

注意:即便這裡只顯示 2.3.3,最新的Google API add-on 函式庫API level 10 已支援了USB Open Accessory API。

7.      正確載入如下圖,點選頁面下方的 Finish。

8.      將Demokit安裝在您的Android裝置上。手機設定請參考此頁:

http://www.appinventor.tw/phone

9.      將ADK開發板 (USB-A) 與您的Android裝置連接(micro-USB)。請確認ADK開發板的DC 電源已接上,或使用micro-USB 連接ADK開發板與電腦,這樣可以讓您監測(this also allows you to monitor the ADK開發板). 連接之後會跳出一個視窗,詢問您是否讓DemoKit程式與ADK開發版進行溝通。如果沒有出現prompt,請確認DC電源是否接上並重新連接ADK開 發板。

終於完成了!您可以在Android裝置上移動彩色LED或servo控制條來和ADK互動了(當然您得找個小伺服機),也可以按下螢幕上的relay按鈕。另一方面,您可以按下ADK開發板上的按鈕或轉動搖桿,看看Android裝置螢幕上所產生的效果。

        注意:Teemino與Arduino MEGA ADK這兩片板子並無LED與搖桿。

監測ADK開發板

The ADK 韌體檔案中包含了一些重要的資料,日後您如果需要開發專屬的周邊設備,您就需要好好了解它們。在firmware/arduino_libs /AndroidAccessory 資料夾下的檔案相當重要,因為它們負責偵測並連接那些已支援周邊模式的Android裝置。您可以自行對 arduino_libraries_directory /AndroidAccessory 資料夾下的相關程式碼,以及 firmware/demokit/demokit.pde 這個韌體檔中加上必要的 除錯指令(例如Arduino的 Serial.print() 指令),接著重新上傳到ADK開發板來看看韌體的實際運作方式。

您也可 以從Arduino Serial Monitor 來檢查相關訊息,請點選 Tools > Serial Monitor 並設定baud rate為 115200。如果您要進一步理解USB周邊是如何與Android裝置進行溝通的話,請參閱以下頁 面:http://developer.android.com/guide/topics/usb/adk.html#accessory- protocol。

[Android ADK] 環境建置說明 #1 Arduino 與相關函式庫

Android ADK安裝手冊  #1 Arduino 與相關函式庫

本文件說明如何安裝Arduino軟體,並接續安裝ADK開發板上的Android應用程式。開始安裝之前,請先下載以下檔案來設定開發環境:

注意:本文件是以Windows作業系統來說明,如果您使用MAC或是Linux,請自行參閱http://developer.android.com/guide/topics/usb/adk.html

注意:Android ADK要求Android版本為2.3.4(手機)或3.1(平板電腦)以上,所以請先確認您的Android裝置的版本符合此項需求。

懶人包:500MB製作中

您需要下載以下的東西:

1. Arduino軟體:包含了相關的函式庫以及開發環境,我們就是由此安裝ADK開發板的韌體。

2. CapSense 函式庫:包含了可感測體電容(human capacitance)的相關函式. ADK開發板上裝有這種電容按鈕。

3. ADK套件: 包含ADK開發板的韌體檔案,以及ADK開發板與Shield轉接板相關的硬體設計檔案。

安裝 Arduino軟體與相關函式庫

1.      由Arduino官方網站下載並安裝Arduino軟體。

2.      下載並解壓縮ADK套件,您會看到app、firmware以及hardware 這三個資料夾。

3.      下載並解壓縮CapSense

4.      安裝函式庫:

a.       將 firmware/arduino_libs/AndroidAccessory and firmware/arduino_libs /USB_Host_Shield 這兩個資料夾複製到 /libraries/ 資 料夾下,請注意要複製完整的資料夾,不能只複製底下的檔案。

b.      在  /libraries/ 資料夾下建立一個名為「CapSense」的資料夾。

c.       從剛剛解壓縮的CapSense 檔案中找到 CapSense.cpp and CapSense.h,將這兩個檔案複製到上一步所建立的CapSense 資料夾。

這時候您應該會在Arduino的libraries資料夾下看到以下三個資料夾: AndroidAccessory, USB_Host_Shield, and CapSense。

安裝ADK開發板的韌體:

1.      使用micro-USB埠將ADK開發板連接到您的電腦,這可讓電腦與開發板進行雙向通訊同時讓電腦對ADK開發板供電。

2.      啟動Arduino軟體。

3.      點選 Tools > Board > Arduino Mega 2560 來指定ADK開發板的種類。

注意:

4.      選擇正確的USB 埠:

點 選 Tools > Serial Port > COM# 來指定正確的通訊埠。COM埠會根據不同的電腦而有所不同,不一定都是同一組號碼。COM1 通常會被保留, ADK板一般來說會被指定為COM2或COM3, 依序延伸. 您可由下圖中看到ADK開發板被指定為COM14。


5.      點選 File > Open and 選擇 firmware/demokit/demokit.pde 來開啟檔案, 這是ADK開發板的韌體檔. 也可以直接將這個檔案拖拉至Arduino環境。

6.      點選 Sketch > Verify/Compile 來確保sketch可以順利編譯沒有錯誤。編譯成功會顯示Done Compiling, 如下圖。

7.      點選File > Upload to I/O Board。當Arduino畫面顯示「Done uploading.」,這時ADK開發板已經可以與您的Android裝置進行雙向溝通了。

請接續下篇 -> #2 Android裝置 ADK環境設定

Android 4.0 SDK 已經可以下載了!!

http://developer.android.com/index.html  Android 新版 SDK 主頁面

http://developer.android.com/sdk/android-4.0-highlights.html   Android 4.0有那些新功能?

大家看到下面可愛的冰淇淋三明治了嘛?   新版的Android 4.0 一統手機與平板的作業系統版號。 如同蘋果的iOS一樣, 在同一個環境下即可以開發給手機/平板電腦的應用程式。

現在CAVE的夥伴們正在開心地更新到新的作業環境, 之後會不定期分享有趣的範例出來。

請看 Samsung 的 Galaxy NEXUS 示範影片. 個人感覺UI真的有很大的進步呢!!