顯示具有 android 標籤的文章。 顯示所有文章
顯示具有 android 標籤的文章。 顯示所有文章

2016年4月18日 星期一

當防毒軟體說你的 app 有病毒時

當 app 開發者真的很辛苦,app store 會用下架來嚇你,廣告平台會用倒閉來陰你,連防毒軟體都會說你的 app 有病毒來搞你。

別笑、我真的被防毒軟體搞過好幾次,store 上滿是 "Fxxx 有病毒別下載" 的留言,透過 email 來罵你的信,更是如雪片般飛來,當下心想如果這些信都是訂單該有多好。

如果你將來和我一樣遇到這無妄之災,第一時間先叫你的使用者給那個防毒軟體一顆星(誤),再來透過底下這個網頁內提供的各家防毒軟體 false positive (false alarm) 回報系統回報。

http://www.techsupportalert.com/content/how-report-malware-or-false-positives-multiple-antivirus-vendors.htm

希望你不會用到。


繼續閱讀全文...

2016年4月17日 星期日

千萬不要用加速 apps

最近看到 HTC Boost+ app 強調可以透過清除背景程式的方式,來達到加強手機效能的目的。 其實市面上這類加速 apps 不僅是做白工,啟動程式變得更慢,最糟的是讓手機更耗電。

我剛簡單做個實驗,用他的加速功能清除記憶體 (我的手機是Nexus 6),清除後號稱清出 700 MB。 十分鐘後再打開加速功能,你會發現原先號稱清除的記憶體空間幾乎都長回來了。

為什會這樣?

原來這些佔用記憶體的背景程式有分三種類型︰
1. 常駐程式 (如 facebook)
2. 會自我啟動的程式 (如 gmail)
3. 不用的程式 (按 BACK 或 HOME 跳離)。

如果你手動用這類加速 apps 殺掉這些背景程式,幾分鐘內系統會自動重啟 1, 2 類的程式,只有第三類背景程式才真正可被清除,這解釋我先前的實驗結果。 所以如果你頻繁地用加速 apps,導致殺掉又重啟程式的不斷循環,不僅是做白工,還會讓手機更加耗電。

你可能會說他還是有殺掉第三類背景程式啊。 要回答這個問題,要先知道系統為什麼要保留第三類背景程式。

原因是,當記憶體空間還充足時,系統保留第三類背景程式,就是為了讓你再次執行該程式時,不需重啟程式。 這是系統內建的加速啟動機制,結果反而被這些所謂的加速 apps 變得慢速。

其實當記憶體空間不夠時,系統會自動依照 3, 2, 1 的順序逐一殺掉背景程式騰出空間。 所以,你根本不需要這些加速 apps。

這些 Android 記憶體空間管理機制,做手機的 HTC 比誰都懂。

HTC 今天推出這樣的 app,我實在很失望。

更多討論也可以看我 Facebook 上的文章


繼續閱讀全文...

2008年7月3日 星期四

Android Emulator 功能鍵

Android emulator function keys list

列出 Android Emulator 的功能鍵。

底下是 v0.9 beta 及之後的。

HomeHOME
Menu (left softkey)F2 or Page-up button
Star (right softkey)Shift-F2 or Page Down
BackESC
Call/dial buttonF3
Hangup/end call buttonF4
SearchF5
Power buttonF7
Audio volume up buttonKEYPAD_PLUS, Ctrl-5
Audio volume down buttonKEYPAD_MINUS, Ctrl-F6
Camera buttonCtrl-KEYPAD_5, Ctrl-F3
Switch to previous layout orientation (for example, portrait, landscape)KEYPAD_7, F11
Switch to next layout orientation (for example, portrait, landscape)KEYPAD_9, F12
Toggle cell networking on/offF8
Toggle code profilingF9 (only with -trace startup option)
Toggle fullscreen modeAlt-Enter
Toggle trackball modeCtrl-T
DPad left/up/right/downKEYPAD_4/8/6/2
DPad center clickEYPAD_5
Onion alpha increase/decreaseKEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)

底下是 m5-rc15 之前的。

Home Home key
ESC Back Key
F1/PgUp Menu key
F2/PgDown Star key
F3 Call key
F4 End Call key
F7 Power button
F8 Disable/Enable all networking
F9     Start tracing (only with -trace)
F10 Stop tracing (only with -trace)
Keypad 2468 Dpad arrows
Keypad 5 Dpad center
Keypad 79 Rotate device skin
Keypad + Volume Up key
Keypad - Volume Down key
Keypad / Decrease onion alpha
Keypad * Increase onion alpha
Ctrl-K Switch between 'unicode' and 'raw' keyboard modes

繼續閱讀全文...

2008年7月1日 星期二

如何以程式的方式,旋轉 Android 螢幕

How to rotate Android screen using SDK API?

v0.9 beta 版本已經廢掉原先的 undocument API 作法

目前的作法如下:

不要忘記,還要在 Manifest.xml 中加上底下的敘述。

底下是原先的 undocument API 作法。

據說第一隻 Android 手機,內建了動作感應器,會偵測手機的垂直或水平位置,自動幫你旋轉螢幕。有自動旋轉是不錯啦,萬一感應器不靈,或壞掉。這時候,有手動旋轉的功能,也是聊勝於無。

要怎樣才能以程式的方式,來旋轉 Android 螢幕?

翻遍了 Android 的手冊,都找不到有 API 可以旋轉螢幕。後來總算在網路上,找到了底下這段旋轉螢幕的程式片段。

這 android.view.IWindowManager 到底是什麼東東,手冊裡都沒提到過。難不成這是個 undocument API?既然是 undocumented,到時在真的手機上會不會 work,在 Android 手機還沒出之前,現在誰也不知道。不過在模擬器上,倒是可以正確執行。

這是螢幕轉了90度的結果。

我覺得當你在寫一個,要在垂直或橫幅螢幕都可跑的程式時,這個功能還特別好用。因為 Android 的模擬器,非常地佔記憶體,不可能同時跑兩個不同螢幕轉向的模擬器。而要啟動一個新的模擬器,光看那左右跑的紅色小球,就足夠我喝完一杯咖啡。有了這個小程式,嘿,我終於可以隨時旋轉 Android 的螢幕,而不用重新啟動一個新的模擬器。

喔,不過還有個新問題。這螢幕是轉了,可是模擬器沒跟著轉,總不能叫我,跟著頭也轉 90 度地,一直 debug 下去。翻了一下 emulator 的 readme 檔案。好在,這模擬器有提供旋轉的功能。要順時鐘旋轉模擬器,按下右邊數字鍵盤的 9 鍵,按 7 鍵,則是逆時鐘旋轉模擬器。

底下是選轉螢幕,再加旋轉模擬器後的結果。


繼續閱讀全文...

2008年6月30日 星期一

如何改變 Spinner 的大小?

How to change the height of drop down list for spinner?

為什麼要有個稱呼一致的名字都這麼地困難?就拿寫 GUI 程式時,一定要用到的 GUI Framework 來說,大概只有 button 這個控制元件,名稱還算一致。其他的,可就沒這麼幸運了,毎家都有他自己的叫法。

初時在讀 Android 的文件時,看到 Spinner 這個 widget,還真的丈二金剛摸不著頭緒,一下子還以為這是什麼神奇的元件。仔細一看,哦原來這就是 Windows 中的 DropDownList。在 Qt 的世界裡,這叫做 QComboBox,而 Java 的 AWT 又稱其為 Choice。

看吧!可不可以拜託你們,不要將創意用在這名稱上,真是辛苦了我們這些天生命苦的工程師。寫程式之餘,還要先玩個「對對樂」。

好啦,回歸正傳。在 Android 中,要寫個 Spinner,也不算麻煩,底下是個簡單的範例。

首先,在 layout xml 檔中,加上 Spinner 這個 widget。 程式中的第 12~16 行,告訴你如何將選項字串陣列,加到 Spinner 上。 好了,這執行結果像是這樣。

首先看到的問題,就看我之前寫的 親愛的,我把 AutoCompleteTextView 縮小了 一樣。這 Spinner 的長相,實在是太大了。不過,有看過這篇的你,大概已經猜到解法了。不過這 Spinner 有點特別,他有一個 android.R.layout.simple_spinner_item 外,還有一個 android.R.layout.simple_spinner_dropdown_item。

從名稱看來,simple_spinner_item 應該是用在 Spinner 本身,另一個 simple_spinner_dropdown_item 則是用在 Spinner 的下拉列表中。我們先來改變下拉列表的大小好了。

改法一樣,參考 simple_spinner_dropdown_item.xml 的內容,自己寫個 small_spinner_dropdown_item.xml。

原來的 simple_spinner_dropdown_item.xml 內容如下: 改好後的 small_spinner_dropdown_item.xml 像這樣。第 6,9 行,就是更改的部份。 再將原程式第 14 行中的 android.R.layout.simple_spinner_dropdown_item,換成 R.layout.small_spinner_dropdown_item。
adapter.setDropDownViewResource(R.layout.small_spinner_dropdown_item);
大功告成,這執行結果像是這樣。

等一下,這 Spinner 本身的大小,好像還沒改。

的確是,我原先以為一樣畫葫蘆,將 android.R.layout.simple_spinner_item 改掉,就可以了。可是事情好像沒有那麼地簡單,試了半天,都沒效。只好向高手求助一下,有誰知道答案的,請貢獻一下你的解法。


繼續閱讀全文...

2008年6月27日 星期五

親愛的,我把 AutoCompleteTextView 縮小了

Yes! I finally can change the size of AutoCompleteTextView.

Android SDK 中有個好用的 AutoCompleteTextView widget。寫起來簡單,不用幾行程式,就可以完成一個有具有自動完成的編輯器。 底下是原文件上的範例程式,和截圖。為了說明問題,我又多加了幾個國家名稱。

現在問題來了,這預設的 auto complete list 似乎太大了。一個螢幕列出兩個國家就滿了。手機螢幕大的話,問題不大。要是手機是小螢幕,這可就難用了。

要如何才能將這 list 的高度縮小,一次列出更多的國家呢?

研究了半天,發現問題出在 android.R.layout.simple_list_item_1

android.R.layout 告訴我,這是 Android 預附的 layout xml 檔。花了點時間,終於找到這個檔案,其內容如下:

原來這 auto complete list 中的 TextView,就是依照這個 xml 的定義來產生。要改變 TextView 的大小,可以加個 android:textSize="14sp"。底下就是我新增的 small_list_item_1.xml 檔。將他放在 layout 的目錄下。

並且將原程式中的第 5~6 行,改成: 這是改完後的結果,是不是好多了。

要修改 list 的大小,這是最簡單的方法。另一個方法是自己寫個 ArrayAdapter,然後在 getView() 中,產生個 TextView 給 AutoCompleteTextView。


繼續閱讀全文...

2008年6月23日 星期一

Android Shareware, Freeware 網站

列出一些收集 Android 的免費軟體 (Freeware) 或 Shareware 的網站:
  • Android Market 應該會是所有 Android 程式的大本營。不過你得要有 Android 手機,才看的到有那些軟體。
  • Android 開放程式內的免費軟體 嫌 Android 的軟體太少嗎?在這裡,可以找到上百個免費 Android 軟體。不過,大多數都只有原始碼,你要自己編譯成執行程式。嘿!天下可沒白吃的午餐。
  • Handango 老牌的手持線上軟體銷售商,從 Palm 的年代就開始了,現在也有 Android 軟體專區。
  • Only Android 線上軟體銷售商。目前這上面看起來有不少 Android 軟體,值得一看。
  • phoload 線上軟體銷售商。2008/11 中才剛開 Android 的專區。
  • AppVee Android Apps 主要以免費軟體為主,優點是每個軟體都有 review comments。

底下是待觀察區。看起來好像沒在更新了,再觀察一段時間,再決定是否移除。

  • SlideMe 看起來就像是一些幫軟體開發者賣軟體的網站,就像當年的 PalmGear 一樣。不曉得,為什麼首頁上,要畫個這麼複雜的圖。
  • TrackDroid 很像是我以前在 Palm 上寫的 TrackerDog ,有個裝在 Android 手機上的軟體,自動幫你追蹤是否有最新版本,網站上也有各式 Android 軟體。

繼續閱讀全文...

Android 程式開發相關連結

列一些和開發 Google Android 手機平台有關的資料。
  • Android 商業官網 這應該是 Android 的正式對外入口,從這可以指到程式開發官網,還有 Android Market 網。想賣 Android 程式的,一定不能錯過 Android Market。
  • Android Issue Tracking Android 裡有不少的 bugs,這裡是 Google Android 的 bugs (issues) tracking system。寫程式遇到奇怪的現象,可以來這找找看,說不定你遇到的就是隻大臭蟲。
  • anddev.org 這也是寫 Android 的,必造訪的網站之一。裡面有不少的 Tutorials,範例程式,秘訣,和問題討論。這裡 可下載 plusminus 寫的關於 Android Programming 的PDF
  • Android 開放程式區 嫌 Android 的範例程式太少嗎?在這裡,可以找到上百個開放程式,而且還有原始碼。
台灣地區中國地區
  • Android中文网 中國地區架設的 Android 討論站,有程式設計,及相關軟體討論。
  • Android 实验室 中國地區架設的 Android 討論站,主要以程式開發討論為主。

繼續閱讀全文...