2012年4月24日 星期二

第一支Android Fragment程式--HelloFragment


最近手機升級到Android 4.0.3版,想說來試試看寫個有 Fragment 程式,整理了一下學習心得。
隨著平板電腦及多螢幕系統的出現, Fragment 的設計是為了讓大尺寸的螢幕有更動態更彈性的UI設計。

下圖是官網中Design Philosophy所提供的一個範例,用這張圖舉個例子,如果要設計動態新聞資訊時,在手機平台 Activity 1 設計使用 Fragment 1 (新聞列表) ,Fragment 2 (新聞內容);在平板則設計左邊為 Fragment 1 (新聞列表) ,右邊畫面為 Fragment 2 (新聞內容) 。

2012年4月19日 星期四

Java Native Interface (JNI) Android C呼叫Java (底層呼叫上層)間傳遞篇--以靜態或動態類型為例


在"Java Native Interface (JNI)入門 -- 觀念篇"這篇文章中實作二C呼叫JAVA部份說明當 C 呼叫 Java 需要建立一個  JVM 通道,然後透過Get----MethodID 搭配 Call----MethodID獲取JAVA中的指定參數。
本篇學習重點在於如何在Android NDK中由C呼叫Java。

 C呼叫Java會遇到的機會通常在於Java程式比C好寫清況或是將舊有C程式的移植時發生。
執行情況大致下列兩種:
 1.Java 進入C後,C再回到Java 呼叫函數。
 2.Java 進入C; C產生thread然後由這個thread回到Java 呼叫函數。

2012年4月18日 星期三

Build Android Gingerbread with GCC 4.6

如果,將 Ubuntu 升級到 10.10 或更新的版本後,特別是將 GCC 升級為 4.6 以後的版本,那麼編譯 Android 2.3 的原始碼多半會遇到如下的錯誤訊息:

host C++: libutils <= frameworks/base/libs/utils/RefBase.cpp
frameworks/base/libs/utils/RefBase.cpp: In member function ‘void android::RefBase::weakref_type::trackMe(bool, bool)’:
frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive]
host C++: libutils <= frameworks/base/libs/utils/ResourceTypes.cpp
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1
make: *** Waiting for unfinished jobs....
frameworks/base/libs/utils/ResourceTypes.cpp: In member function ‘void android::ResTable::print(bool) const’:
frameworks/base/libs/utils/ResourceTypes.cpp:4369:84: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
frameworks/base/libs/utils/ResourceTypes.cpp:4375:43: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

這是因 GCC 4.6 而引起的問題,修正方法如下:

diff -Naur old/frameworks/base/libs/utils/Android.mk new/frameworks/base/libs/utils/Android.mk
--- old/frameworks/base/libs/utils/Android.mk 2011-05-05 09:42:48.000000000 +0000
+++ new/frameworks/base/libs/utils/Android.mk 2012-04-07 15:45:40.738996228 +0000
@@ -57,7 +57,7 @@
 
 LOCAL_MODULE:= libutils
 
-LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
+LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
 LOCAL_C_INCLUDES += external/zlib
 
 ifeq ($(HOST_OS),windows)

2012年4月17日 星期二

TI MSP430 LaunchPad 開發版 -- 第一支程式 HelloLaunchPad


上周四上課時,從大俠手上入手一組 TI  MSP430 LaunchPad,這應該是所有開發版最便宜的一塊吧!!官方網站售價(含運)只要US$4.3算一算比到電子街買一顆8051來組電路還便宜很多。

在入手同時有答應大俠在部落格做個"開箱",順便推廣一下只要兩個便當費用就可以擁有的開發版,而且聽說還可以上官網跟TI要MSP430 sample。

2012年4月13日 星期五

[分享好書]輕鬆搞定Google 雲端技術

最近在書局看到一書「輕鬆搞定Google 雲端技術」書中內容包括地圖應用到手機開發、GAE雲端平台、電子商務等很適合一般入門,尤其是內容中有詳述如何取的中油加油站的座標,有類似需求的同學(類似7-11、全家之類)可以參考運用看看ㄡ......

PS:重點是該老師有提供原始碼.....

2012年4月9日 星期一

[ Facebook ] 如何在網站中加入社群的最新活動

1. 首先進入http://developers.facebook.com/docs/reference/plugins/activity/
2. 請入Domain欄位中輸入nkut.edu.tw。


3. 按下"Get Code"按鈕,並切到IFRAME。




4. 將程式碼儲存在test.html,並在加上一些標籤,如, , 等。並在//www.facebook.com前面加上http://www.facebook.com。


5. 測試結果。




2012年4月7日 星期六

[ Facebook ] 在網站上加入"按讚"的按鈕

假如您想要在您的網站上加入"按讚"的按鈕,如上圖,可以增加下列程式碼到您的網站上。


2012年4月1日 星期日

Android SDK r17 模擬器測試

三月底的時候,Google發佈了Android SDK Revision 17版本,主要是大幅提升Emulator的速度,除了支援一些硬體加速功能外,
其中一個比較有意思功能就是 Android x86 system images 的 Emulator支援虛擬主機,詳見下列網址說明:
http://developer.android.com/sdk/tools-notes.html
今天就稍微的來測試一下 Emulator支援虛擬主機到底快多少?