Feeds:
文章
迴響

Archive for 2008 年 11 月

水費以使用度數多寡分成4個費用,詳細可查閱帳單背面。用水費的計算公式為

用水費 = 每度單價 * 實用度數 – 累計差額

因為度數不同使得每度單價和累計差額有所不同,因此必須使用 IF 函數來選擇正確的數值,所以總結用水公式為

IF(E4>=101, ROUND(E4*12.075-220.5, 0),
    IF(E4>=61, ROUND(E4*11.55-168, 0),
        IF(E4>=21, ROUND(E4*9.45-42, 0),    
            ROUND(E4*7.35, 0)
        )
    )
)

其中 E4 為實際使用度數。嗚嗚~ 這個月水費變多了 T_T

註:上述的計算是以"隔月抄表"數據計算,如果你的帳單是"每月抄表"請自行更改每度單價和累計差額。

Read Full Post »

改寫對對碰遊戲成簡單的 4×4 拼圖遊戲,這裡下載

安裝
adb install cheese-pic-debug.apk

Read Full Post »

發佈 Android 的拼圖

改寫對對碰遊戲成簡單的 4×4 拼圖遊戲,這裡下載

安裝
adb install cheese2-debug.apk

Read Full Post »

再次改寫井字遊戲成簡單的 4×4 的對對碰遊戲,這裡下載

安裝

adb install cheese-debug.apk

相關文章
[1] [C#]懷念的對對碰遊戲

Read Full Post »

GMail 加入 Video/Audio 聊天室

GMail 除了傳統的文字聊天室之外,現在加入 Video/Audio 聊天功能 ,只要雙方安裝 Plug-in,並且同時有音訊和視訊的輸入設備,就可以開啟視訊聊天功能。

這是相當棒的功能,不過與同事測試發現不是很穩定,很容易就中斷需要重新建立 Video/Audio。但我想這個問題經過一段時間一定能獲得解決。我比較好奇是否有提供這方面的整合 API~(GTalk 官方用 Collapse libjinglelibjingle 提供語音和視訊功能)

Plug-In 安裝頁面
http://mail.google.com/videochat

教學

相關介紹
http://gmailblog.blogspot.com/2008/11/say-hello-to-gmail-voice-and-video-chat.html
http://googlesystem.blogspot.com/2008/11/voice-and-video-chat-in-gmail.html
http://www.techcrunch.com/2008/11/11/google-adds-voice-and-video-chat-to-gmail/

台灣路徑規劃

終於推出可正確規劃路線的功能,期待超久的,詳細可參考下面這篇文章

Read Full Post »

最近將學到的一點 Android 開發知識用來寫一個簡單的井字遊戲,用到的功能有

1. Menu
2. 觸控螢幕
3. 繪圖
4. 按鍵處理

執行畫面

image image

有興趣的人可以下載 APK 安裝。

安裝 : adb install cheese.apk
移除: adb uninstall com.live.spaces.chuiwenchiu.ox

Read Full Post »

Android 移動按鍵處理

修改前一個彈跳球範例,改成用方向鍵控制球的移動,測試用 apk 下載

安裝
adb install move_ball.apx

移除
adb uninstall com.example.android.snake

執行效果和彈跳球一樣,我就不擷圖了。這個程式主要是測試按鍵處理,透過 Overide View.onKeyDown 事件來達成。

onKeyDown 的第一個參數 keyCode 表示按鍵代碼,只要比對特定鍵值來進行對應處理即可。

這個程式只用了方向鍵,方向鍵的值預先定義如下:

上 KeyEvent.KEYCODE_DPAD_UP
下 KeyEvent.KEYCODE_DPAD_DOWN
左 KeyEvent.KEYCODE_DPAD_LEFT
右 KeyEvent.KEYCODE_DPAD_RIGHT

程式片段如下:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event){       
        if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT){

        }else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){

        }else if (keyCode == KeyEvent.KEYCODE_DPAD_UP){

        }else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN){

        }else{
            return super.onKeyDown(keyCode, event);
        }

        return true;
    }

要攔截這個訊息有一個特別需要注意的地方是 View 要取得 Focus 才會觸發 onKeyDown 事件。

補充:也可以使用 View.setOnKeyListener 進行處理,如下:

findViewById(R.id.snake).setOnKeyListener(mKeyListener);
// … 略
OnKeyListener mKeyListener = new OnKeyListener(){
    public boolean onKey(View v, int keyCode, KeyEvent event){
        TileView tv = (TileView) v;

        if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT){

        }else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){

        }else if (keyCode == KeyEvent.KEYCODE_DPAD_UP){

        }else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN){

        }else{
            return false;
        }
        return true;
    }
};

Read Full Post »

Older Posts »