發表文章

目前顯示的是有「Android」標籤的文章

[Android] 使用GOOGLE MAP-發生 Couldn't get connection factory client 錯誤

圖片
ERROR/MapActivity(258): Couldn't get connection factory client 這個問題會發生在使用Google所提供的MapView,問題發生的原因很簡單,就是此Application所使用的Map API Key無法辨別,因此發生這樣的問題時,可以依照下面的順序來檢查是否有哪個環節出錯了: (1)如果是在AVD或Device上開發&測試程式,請透過Keytool產生Debug private key的MD5指紋辨識碼(key的路徑請到Eclipse→Window→Preferences→Androi下的Build,會有個名稱為"Default debug keystore的欄位),將MD5丟到GOOGLE產生MAP API KEY的網頁, 確保目前所用來簽署的key與API的一致性。 (2)如果是Release版的App發生問題,確認API Key是由 簽署Release App的key所產生的。 (3)如果上述都確認無誤,請確認AndroidManifest.xml裡是否有宣告 use-permission android:name="android.permission.INTERNET" ,如果少了這個宣告可能導致App無法透過網路來進行Map API Key的驗證。

[Android] @android:id/與@+id/, @id/的差別(以TabActiviry說明)

在Android XML設計Layout時,id是元件要被程式動態控制的必須設定屬性,一般常見有下列三種id型式: @+id/名稱 表示這是個全新的resource id,必須被加到R.java @id/名稱 表示引用已存在的資源 @android:id 則表示引用Android framework所提供的資源

[Android] 如何發送包含File data的POST Request(以Image Upload為例)

圖片
(How to build a multipart POST request) Multipart POST是一種可傳送包含binary data的POST method,網頁中最常見的例子就是帶有附加檔案的Form,以下範例將說明在Android中如何透過HttpClient發送一個含有Image與字串的multipart POST。

[Android] 開機後(Boot up)自動啟動Service

圖片
(How to start a service on boot) 某些情況我們需要在系統開機完成後啟動程式(通常是Service)執行特定任務,例如:下載/更新檔案、向後端查詢資訊…等。

[Android] 取得Device目前電池電量

圖片
(How to get current battery level) Android系統會在電池狀態發生變化時,發出System broadcast intent,會附帶電池狀態、電量、溫度等內容,APP要取得電池電量就必須註冊BroadcastReceiver來接收此intent。

[Android] Android APP下載次數爆炸成長背後的祕密

圖片
Source from  http://developer.android.com 對於Android而言,2011絕對是爆發性成長的一年,前陣子官方公佈Android Market下載次數突破100億,一整年從原本只有20幾億足足成長了近80億,相當嚇人。

[Android] 偵測目前網路連線狀態

圖片
(Get the state of network connectivity) 某些情況下APP必須取得目前網路連線狀態,例如:執行需要從遠端進行下載的更新動作,上傳檔案…等等,只要取得目前連線狀態,就可以避免使用者在無網路狀態下去執行必然會產生例外的功能,系統也會讓人感覺比較友善。

[Android] Activity之間如何透過Intent傳遞複雜結構的data

圖片
(How to add complex data to the intent object) Application是由許多Activities所組成,不同Activity之間是藉由Intent物件來進行啟動/關閉,Intent物件可以帶入data傳遞給它所喚起的Activity,它可能是上個Activity執行後的結果。

[Android] 如何呼叫Android Browser Activity開啟URL

圖片
Activity之間是透過Intent物件進行activate與傳遞訊息,包括相同App內的Explicit Intent以及不同App間的Implicit Intent,也因為這個機制,App可以呼叫系統或是其它第三方所提供的Activity的服務,例如:播話介面、相機…等等,僅需要透過Intent物件設定欲執行的動作、資料與類型,system launcher會列出符合相關條件的Activity,如果有多個就會列表供User選擇。

[Android] 透過HTTP Request進行後端資料存取(以PHP為例)

圖片
在開發提供網路服務的App的首要目標,就是必須瞭解Android如何藉由HTTP Request向後端存取資料,Android提供兩種呼叫HTTP服務的類別:(1) Apache HttpClient (2) HttpUrlConnection。

[Android] GridView的基本使用教學

圖片
GridView是一種網格狀的二維視覺元件,將item依照順序放置於網格中顯示,它繼承了AbsListView這個類別,因此不難想像它的使用方式與ListView一樣,都是透過setAdapter的方式將data與View呈現在GridView中。

[Android] Local file的時效性管理

開發App時常會需要將一些暫存性的資料儲存在local端,例如:使用者的偏好設定、圖片的cache等等…,這些檔案將會一直存在,除非應用程式被移除,如果程式沒有針對local file的有效性進行管理,那儲存在local端的資料就有可能無限制的增長,相信這對於儲存資源較為有限的手機來說是個大問題。 程式碼說明 本文將以Internal storage的檔案儲存為對象,將每個File設定其有效的時限並根據file的最後修改時間與目前系統時間來計算其有效性,只要系統發現有檔案已超出有效期限,就會自動將其刪除,藉此達成local file的時效性管理。 //File validation(ms) private final long FILE_AGE=3600000; private void checkValidation(String name, long age){ //get file validated time long vTime = getFileStreamPath(name).lastModified()+age; //check file expiration if(vTime< System.currentTimeMillis()){ //如果失效 //刪除檔案 getFileStreamPath(fileName).delete(); } }

[Android] 代號:Ice Cream Sandwich - Android 4.0 發佈!

圖片
Android 4.0 隨著新一代Google官方機「Galaxy Nexus」在今天公佈了,平台代號為: Ice Cream Sandwich (這個版本的圖看起來好可口...)。對於App開發者而言,Ice Cream Sandwich十分受到關注,因為Google在此次版本更新,將以往針對不同device類型分開的平台版本(2.x for phone and 3.x for tablet)合而為一了,也就是說從4.0開始,開發者可以用統一的平台版本進行開發,而且App將不會被裝置類型所限制,新的framework會依照不同裝置(手機、平板電腦、電視...等)提供良好的使用者體驗。

[Android] Disable ListView Item

圖片
ListView常用來顯示大量同性質的資訊,但有時候會遇到需要將List中的某些item disable的情況,例如:作為分隔資料的Divider或是因為特定條件取消某個item click事件。Android將ListView的所有item預設為enabled,如果要disable特定item必須自行繼承BaseAdapter,接下來將針對如何disable listview 的特定item進行說明。

[Android] 可多選的ListView (multi choice)

圖片
ListView除了用來呈現同性質的資料之外,也提供了選取模式(choice mode),讓使用者可以從List中勾選一個或多個row,本文將針對如何建立可多選的ListView與該如何取得選擇的資料進行說明。

[Android] layout_weight的妙用-讓View的大小以百分比率顯示(proportionate size)

圖片
Android所有的視覺物件(View)都是透過指定其layout_width、layout_height屬性來改變顯示大小,除了指定明確的數值外,另外還有特殊參數可以在特定需求下使用,例如,match_parent即填滿其父容器、wrap_content則根據其內容大小進行動態調整。 layout_width, layout_height並不支援百分比數值 有很多程式語言都可指定長寬一個百分比數值,讓其長寬以特定比例顯示,很遺憾Android的長寬屬性並無法透過指定百分比數值使其以特定比例顯示,但我相信對於需要開發適用於各種螢幕大小Application的程式設計者來說,長寬以百分比顯示這個功能是非常重要的。

[Android] Maven2 安裝教學

圖片
Maven是一套Software Project Management Tool,它透過POM(project object model)描述整個整案的結構,使得Project building統一化,相較於以往Java開發者常使用的Ant,Maven讓Project build更為便捷且專案間的lib(JAR)共用更為容易。

[Android] 如何加入Compatibility Package

圖片
什麼是Compatibility Package? Compatibility Package顧名思義就是Android官方針對 舊平台版本(e.g. 1.6)所不支援的API 或是 Android Framework沒有提供的函式庫 ,將其打包成Library,讓開發者可以使用非此平台版本所提供的API。

[Android] 如何讓不同Activity共用相同的Menu

在 Activity加入Menu 一文中簡單介紹了如何建立選單,但是在開發Android Application常常遇到一個情況:一個Menu被多個Activity所共用,意思是指這些Activity在執行時,User按下Menu鍵時,都會顯示同一個選單。

[Android] 在Activity中加入選單(Menu)

圖片
Menu是Android Application特有的功能,當User按下Menu Button後,它會出現在程式的正下方,以提供其它額外系統動作。