Friday, June 17, 2011

你也被塑化了嗎?

這陣子的塑化劑風暴搞得狒狒洋洋,其實也知道以台灣的媒體及輿論的生態,大概不出一個月就會靜下來,但是心裡從頭就覺得滿腹牢騷啊,台灣的人民真的是被塑化了嗎,都硬不起來了嗎?就因為這些廠商給你吃了太久的塑化劑,政府也軟了,難道不能真正的嚴懲業者嗎?我說得不是只有違法使用塑化劑製造起雲劑的人,這些人本來就該死,但是這些飲料、食品與藥品的業者,難道可以卸責嗎?政府可以卸責嗎?果然塑化劑的本領是強大的,在吃了多年的塑化劑後,大家都去男性化,軟了嗎?熱潮過後,你我還是冷漠,只能說台灣人,你真的被塑化了嗎?醒醒啊,但是就算我醒了又能怎樣...面對這樣一個無能而且被塑化的政府,真的還只能在這裡發發牢騷啊。

下流正義 The Lincoln Lawyer

想看這本書是因為在電影院看了他的預告,知道是小說改編的,因為預告看起來還蠻吸引我的,就花時間讀了,不過因為這期間在做一個android的project佔用我多數的精神,所以前後花了我2個月才把書讀完,其實真的認真看應該就是這星期囉;故事的精神圍繞的就是主角律師Mick,他的老爸是個非常有名的律師,在她很小的時候就過世了,他從小看著爸爸所著述的相關書籍,有句話一直縈繞在心:當律師最怕讓無辜的被告被定罪;書的一開始其實軸線很多,讓人抓不到重點,這也其中一個我花了快2個月看這本書的原因,因為看到一半之前其實還不大有什麼起伏,一直到Mick一直僱用的私家偵探因為他的委託案件被殺了,才感覺整個鋪陳的梗,讓我也有比較大的興趣繼續下去,後面的故事當然就是正義最後得以伸張,但是Mick終究沒擺脫他爸爸曾經說過當律師最怕讓無辜的被告被定罪的魔咒,雖然他後來發現這個事實,也協助無辜者從監獄脫身,但是造成的傷害已經無可挽回,感覺上好有教化意義啊,是要告訴現在的律師們要有良心點嗎?呵呵。整體而言故事的梗其實不複雜,而且還蠻俗的,但是看到最後還是覺得蠻值得一看得,如果是要殺時間,那就別錯過了。

Android裡判讀網路連線狀態

在Android系統裡面,網路連線是很重要的一環,判讀連線狀態來協助目前執行中的application做出反應通常是必要的,下列的方法可以讓我們輕鬆的讀取android系統目前網路連的狀態

1. 先在AndroidManifest.xml裡面先加上,沒有這個,利用下面的步驟去取得網路狀態會導致application出現exception
2.透過下面的code可以取得NetworkInfo
    ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info=connManager.getActiveNetworkInfo();
3.可以透過NetworkInfo提供的methods來取得網路狀態
    info.isConnected()           //網路是否連線
    info.getTypeName()        //連線方式wifi/gprs
    info.isRoaming()              //是否漫遊

Wednesday, June 15, 2011

Android裡使用global variable

寫程式,難免要用到一些global variables,在Android裡面當然也不例外。我的實際遭遇是剛開始本來是想要在Activities間來傳遞variables,通常可以用如下的方式:

若要將"hello"由ActivityA傳給ActivityB的話首先要在ActivityA中作如下的動作
String text="hello";
Intent intentA = new Intent(ActivityA, ActivityB.class);
intentA.putExtra("variable", text);
startActivity(intentA);
接著可以到ActivityB中去接收就行了
Bundle bundle = getIntent().getExtras();
String text = bundle.getString("variable");

但是使用這個方法的限制就是傳遞的參數只能為String或是可以Serialize的物件,要是你要傳的不符合,那真的就頭大了,這時候就得要靠android.app.Application在Android裡建立一個全域物件來達成了,方法如下:

1.先建立自己的全域物件,裡面隨便你要擺什麼variable都行

        public class MyApp extends Application{
                   int            int_test;
                   boolean  boolean_test;
                   String      string_test;
                   ...
        }
2.在AndroidManifest.xml裡加上android:name="MyApp",如下
      
3.然後在你想要讀寫MyApp的Activity透過下面的方式就可以存取你放在MyApp中的任何variable了:
        MyApp myapp = ((MyApp)getApplicationContext());
        myapp.int_test=12;
        if (myapp.boolean_test==false)
           myapp.string_test="Error!";

這樣是不是就解決了這個讓人頭大的問題了呢!

Thursday, June 2, 2011

如何讓Focus在第一個EditText的Android Activity不要出現小鍵盤

其實我想這個問題很多人會遇到,就是當你寫了一個Activity然後EditText是在第一順位的時候,當這個Activity的UI被執行時,Focus會直接跳到這個EditText而且會飄出小鍵盤來等候你輸入,但是這個小鍵盤有時候很讓人討厭,如何在第一次進入的時候不讓小鍵盤飄出來呢,其實很簡單,只要先打開你的的AndroidManifest.xml然後作如下的步驟(參考附圖):

1. 選擇你要的Activity
2.將Window soft input mode選stateHidden
存檔後從新編譯就完成了,很簡單就可以把惱人的小鍵盤給變不見了呢。