發表文章

目前顯示的是 10月, 2008的文章

在 Android 平台上取得裝置資訊

圖片
最近作的東西必須要取得裝置上的一些資訊,但如果直接拿的話,一定會遇到錯誤訊息,大概會像下面這樣: 查了一下才知道,這是 Android 平台的安全機制作祟:任何會影響到其他程式、作業系統、或使用者操作的行為,都會被系統所管制,例如:讀取使用者自己的資料 (電話部或簡訊)、使用其他程式所建立的檔案、或執行網路的存取等。除非在安裝程式時有得到使用者的「許可」(permission) 才能操作;而這個所謂「得到使用者的許可」,就是要 在程式的 AndroidManifest.xml 檔案中加入 uses-permission 的子元素 ,以說明這個程式在未來會用到哪些特殊的功能;如果使用者要安裝使用此程式的話,就必須同意程式未來的存取動作。而這些動作一但設定好,並安裝進手機上就不會再有所變動。 想知道有哪些動作是必須先經過設定 uses-permission 才能使用的,可以參照此網頁: android.Manifest.permission 其中每一行都是原本我們不能使用,但可以改變其設定的操作,例如: " android.permission.ACCESS_COARSE_LOCATION " - 能允許我們取得手機目前連線的ap位置, " android.permission.READ_PHONE_STATE " - 可以讀取手機目前的狀態, " android.permission.READ_SMS " - 可以讀取簡訊內容, " android.permission.WRITE_CONTACTS " - 可以寫入電話簿內容,但無法讀取。 (注意!上述最後兩項設定都只有設定「讀取」與「寫入」動作而已,若你的程式對這些資料同時有「讀」和「寫」的需求時,就必須個別設定!) 以下是讀取一些手機資訊的範例: public class InfoRetriever extends Activity {   private TextView locationText;   private TextView numberText;   private TextView simText;   @Override   public void onCreate(Bundle savedInstanceS...

在文章中顯示程式碼

為了在文章中顯示好看的程式碼,我曾經尋尋覓覓了好幾種 blog,最後還是回頭來用 Blogspot;雖然它在一般編譯器中並沒有特別的功能可以呈現程式碼的格式,但我們可以用 CSS template 的設定來達成這個功能! 這個方法主要是參考以下幾篇文章: 【Blog】文章中引用程式碼的作法 by 想要旅行的念頭停不住... [筆記]在文章裡顯示優質的程式碼區 by 良人的大秘寶 首先,將以下程式碼複製到你 blog 設定 CSS template 的地方: code {  display: block;   //表示在code標籤內的內容會被當成一個浮動方塊來顯示  font-family: 'Courier New';   //字型設定  background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y;   //設定顯示程式碼的方塊的圖形,並讓圖形是從左上方 (left top) 畫下來,如果遇到程式碼太長,使得方塊也太大時,讓圖形往下重複出現 (repeated-y)  overflow: auto;   //如果剩下的內容無法顯示,"auto"表示請瀏覽器用捲動軸 (scrollbar) 來顯示其他的內容  border: 1px solid #ccc;   //方塊的邊線該畫多寬,以及顏色的設定    padding: 1px 10px 10px 21px;   //方塊與顯示內容間的留白大小,四個數字分別設定的是:上方、右邊、下方、左邊  max-height: 1200px;   //這個方塊最大的顯示高度,注意有些瀏覽器不支援此屬性  line-height: 1.2em;   //設定每一行的行高  letter-spacing: 0px;   //字元間距  margin: 5px 5px 0 15px;   //方塊以外內容該與方塊之間留的間隙,四個數字分別設定的是:上方、右邊、下方、左邊 } 在你想在文章中顯示為程式碼的段落前後加上<code>、</code>標籤,如:   <code>  public class Test{    public s...

Hello, Android!

建立使用者介面 以下的這隻程式可以簡單的在 Android 系統上秀出你想要的字樣: import android.widget.TextView; public class HelloAndroid extends Activity {   /** Called when the activity is first created. */   @Override   public void onCreate(Bundle icicle) {     super.onCreate(icicle);     TextView tv = new TextView(this);     tv.setText("Hello, Android");     setContentView(tv);   } } 看到這段把文字秀在螢幕上的code可以明顯感受到跟Java處理 GUI 的方式是很像的:使用者介面是由多個不同類別的實體依照某種階層組合起來。 XxxxView 之類的類別是某種可繪物件(drawable object);例如各式按鈕、一小段動畫、或像這邊的一段文字。 在此例中,由於螢幕上只放了一個 TextView ,因此它便是這個畫面中層級最高的物件,當我們在建立一個層級最高的Android 介面元件時,必須給它一個 Android Context 的實體作為參數。 Context 是幫助我們存取手機各項資源的工具,諸如螢幕解析度、資料庫存取等,因為 Activity 類別本身就是 Context 的子類別,所以在此我們可以直接把 this 給丟入 TextView 的建構子中。 我們在建立了 TextView 實體後,便可以 .setText() 方法設定要顯示的文字。最後,我們必須呼叫 Activity.setContextView() 方法來告訴這個Activity要顯示哪個UI元件;如果沒有呼叫它,那麼無論我們之前做了多少事,Activity也不知道該把哪個東西放上來,也就什麼也看不到了。 改以 XML 建立使用者介面 我們除了可以使用以上「程式化」的方法建立使用者介面外,Android 還提供了我們另一個更為系統化、更清楚易懂的介面建立方式:XML-based layout files。以下是一個與上面程式功能完全相同的...

手動建立並執行 Android 專案

設定 Android 環境 首先請確定你的作業系統 Android 皆有支援: Windows XP 或 Vista Mac OS X 10.4.8 或之後版本 (x86 架構) Linux (官方於 Ubuntu 6.10 Dapper Drake 上測試) 並根據你所習慣的開發環境來下載並安裝下列開發 Android 程式所必要的工具: Eclipse IDE Eclipse 3.3 以上版本 JDK 5 或 JDK 6 (只有安裝 JRE 是不夠的) Android Development Tools plugin (optional) 如果使用的是其他環境或 IDE JDK 5 or JDK 6 Apache Ant 1.6.5 for Linux 及 Mac,1.7 或以上 for Windows 手動建立 Android 專案 執行 activityCreator 並建立新專案: 先切到 Android SDK 的 tools/ 目錄下,並建立欲存放專案的目錄(e.g., tools/MyAndroidProject/ )。 執行 activityCreator ,並指定欲建立專案中的 Activity 名稱。此處的 Activity 名稱必須以 fully-qualified 的類別名稱來指定,例如: tw.edu.splin.NewActivity ,類似 Java 中包含了套件名稱的類別名;如果是要建立新專案,那麼 activityCreator 將會在新專案中建立一個以此為名的新類別;如果是要以既有的程式碼來建立專案時,這個名稱則必須要與其中一個類別的 fully-qualified 名稱相同。我們也可以以 --out 選項指定存放即將建立目錄和檔案的位置。 例: ~/android_linux_sdk/tools $ ./activityCreator.py --out myproject your.package.name.ActivityName package: your.package.name out_dir: myproject activity_name: ActivityName ~/android_linux_sdk/tools $ 此時我們就可以把這個目錄幫到任何你想要的地方了。但要注意一點,無論這個目錄在何處,他都需...

教學文章志願

現在工作變得比較輕鬆了些,所以我未來會在這個部落格中寫些程式語言或者一些熱門工具的教學,例如:Android、Yahoo Widget、YUI、GWT等;以及一些Java的新東西和資訊相關的訊息。 對於各種語言及工具來說,編寫的內容與深度大概以下列幾大部分為主,不會太過於深入: 工具開發目標以及適用環境。 開發環境設置以及”Hello World!”(字串顯示)的執行。 資料操作、運算方式。 使用者介面建立方式。加以範例。 使用者介面互動實做。當然也要有範例。 資料傳輸與擷取探討。 補充二到三個範例,而這些範例應該會是各種形式的應用;例如:數獨遊戲、月曆、備忘錄、網拍監視程式等等,並加以相關演算法的解說。 希望我能在未來把以上這些工具的相關教學盡快完成,好讓有更多的使用者能輕鬆的踏入這些工具的殿堂!