2010年11月30日 星期二

Android 開發筆記 - 1

        最近開始真正的踏入 Android App 的開發行列,並且付費成為 Marktet 發行商。

        第一支發行的程式從開發到上架,一路上踩到不少洞,受困不少地方,這一路走來不算輕鬆,很值得記錄這整個過程作為日後的參考。

        第一支程式的主題是「砸爛我手機」,模擬手機螢幕被戳破的效果,單純就是好玩。整的點子的起源跟最近發生的亞運跆拳道楊淑君事件有關。當時正值反韓風潮鼎盛之際,身上帶著三星電子產品者走在路上人人自危,周圍每個人都高喊拒買韓貨砸爛韓貨,身為 SAMSUNG i9000 的用戶我,不禁想到保命之道,就是寫支模擬砸破手機特效的程式,讓我也可以大大方方地加入反韓隊伍,當眾表演砸毀手機的戲碼,事後卻仍可以船過水無痕地繼續使用我的愛機 i9000。






        在撰寫此程式之時,學習到的相關技巧紀錄如下:
  1. 動態在目前的 Layout 上新增 View control:由於繼承 Activity 之後,如果當初是經由 setContentView(R.Layout.Main) 之類的方式產生 ContentView,在子類別中無法再存取。剛開始誤導我而讓我一直以 addContentView 的方式想把新的 ImageView 擺上去,卻踩到無論如何設定 LayoutParams 的座標參數都無法擺到正確位置陷阱。
    解決辦法:一開始自行宣告一個 Layout object 當作這個 Activity 的 data member,然後透過這個 object 來自行 setContentView 和 addView,缺點是無法仰賴 res\layout 使用事先定義好的 layout resource。

  2. 設定全螢幕畫面:語法-
    requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

  3. 掛入 AdMob 廣告的方法:依照官方網站上的 Wiki 說明照做,但是官網忘了記載最重要的一個步驟,就是要在 AndroidManifest.xml 中註冊 AdMob 的 Activity-
    <activity android:name="com.admob.android.ads.AdMobActivity"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
            android:configChanges="orientation|keyboard|keyboardHidden" />

    少了這個步驟,困了我兩天都不知道廣告出不來的問題在哪,一直到學會看 LogCat 才從 Error log 發現異常,然後從官方的範例 LaunchLander 找到關鍵。
    然後是 ADMOB_PUBLISHER_ID 也讓我找了好久。
    AdMob 的廣告是隨機出現,若你的 App 太冷或是投報率太差,經常是沒有廣告的。這會讓人搞不清楚到底設定是否正確無誤,又要花很多時間測試。

  4. 發佈到 Market:有許多細節須要注意,網路上的教學資料又少得可憐,我摸索了也是快兩天才搞定。從產生自己的簽章憑證、包裝發行 apk ,到正確填妥 publish form 真是一步一腳印。
        正式踏入行動開發領域,真是有種來自成長和克服萬難的興奮體驗,而且成品比預期中的好,希望能趕緊真正導入接下來的計畫。

Google+ Badge