Thursday, March 25, 2010

自由軟體授權

自由軟體授權方式一直是讓許多工程師很困擾的事,OSSF 有提供 License Wizard(授權精靈)這個網頁工具,可以很直觀的查看大家所關心的項目,例如再次散布程式時是否必須提供原始碼等。

另外有一個類似的是創用CC(Creative Commons)也提供了相似的創用CC授權精靈,在發表文章/圖片/影音到網路上時可以使用。

Tuesday, March 09, 2010

自動偵測螢幕大小和解析度

在 Android 機器上,螢幕的解析度可以用「螢幕大小」和「螢幕點距」兩個參數來表示。

一般的方法

在 Android 1.6 版以後,可以使用 config.screenLayout 語句來判斷螢幕大小

Configuration config = getResources().getConfiguration();
if((config.screenLayout&Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL){
}

UPDATE 2010/4/14: sam 說 「config = new Configuration()」只會回傳預設的Configuration, 而非當前的Configuration. 找了一下最好是使用 getResources().getConfiguration()

支援的參數與代碼如下
  • Configuration.SCREENLAYOUT_SIZE_UNDEFINED 0
  • Configuration.SCREENLAYOUT_SIZE_SMALL 1
  • Configuration.SCREENLAYOUT_SIZE_NORMAL 2
  • Configuration.SCREENLAYOUT_SIZE_LARGE 3

要檢查點距,可以使用 DisplayMetrics 語句來判斷螢幕點距

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm);
if((dm.densityDpi == dm.DENSITY_HIGH)){
}
支援的參數與代碼如下

  • DENSITY_HIGH 240 (dpi)
  • DENSITY_MEDIUM 160
  • DENSITY_LOW 120
  • DENSITY_DEFAULT 160

相容 1.5 以下機型

根據Android 版本使用圖表,2010年1月時 Android 1.5 市佔率還是接近 1/3,但是這1/3的機器上並無法使用上面的API。



在 1.5 版上,其實仍然可以用 density 語句來判斷螢幕點距比率

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm);
if((dm.density >= 1.5)){
}

density 的值 1 代表一般點距,1.5 代表高點距,0.75代表低點距。要偵測市面上所有的機器是否是高解析度機型,只要運用以上方法,就可以自動偵測出螢幕大小和點距囉。

Tuesday, March 02, 2010

Android 免費+廣告營利模式

一篇經驗分享文章,分享 Android 上使用 AdMob 廣告營利的經驗與注意事項
2010世界杯,我的Android之旅 蠻不錯的

另一篇移动应用排名与开发者的机会亦有可觀