2013/01/04

Android - TimePicker:如何取得時間的資料

資料取得上,除一般透過輸入的資料外,也常會使用到時間的紀錄。
而時間的取得就可以透過TimePicker來即時取的當下的時間。
當然這時間可以再另做設定,只是透過這樣的方法,使用者在輸入資料的時候。
可以避免資料的輸入手誤或錯誤等等。

範例:
使用 Timepicker 顯示的時間,當我們更改時間即會觸發 setOnTimeChangedListener。
產生出來的數值是 int,所以我們另用 TimeFix 將時間更改為 String。
當然若數字小於 10 ,在數字前面我們就多加個 0。
將取得字串在設定到 TextView1。
另外,透過Button取得 TimePicker 送出來的資料,顯示在另一個 TextView 上。

圖示:一個是在 Android 2.3的樣式,一個是 4.1 的樣式。

main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Time" >

    <TimePicker
        android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

    <Button
        android:id="@+id/BtnGetTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textTime1"
        android:layout_marginTop="31dp"
        android:text="Button" />

    <TextView
        android:id="@+id/textTime1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/timePicker"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textTime2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/BtnGetTime"
        android:layout_toRightOf="@+id/BtnGetTime"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

time.java
package com.example.time;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;

public class Time extends Activity {
    private TimePicker timePicker;
    private TextView textTime1,textTime2;
    private Button     BtnGetTime;
    String H;
    String M;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        
        textTime1    =    (TextView)findViewById(R.id.textTime1);        //自動取得時間
        textTime2    =    (TextView)findViewById(R.id.textTime2);        //透過按鈕取得時間
        BtnGetTime   =    (Button)findViewById(R.id.BtnGetTime);
        BtnGetTime.setOnClickListener(GTimeListener);
        
        timePicker    =    (TimePicker)findViewById(R.id.timePicker);
        //timepicker時間更改時,執行下面的動作。
        timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                // TODO Auto-generated method stub
                //取得 hour的值,透過TimeFix方法。轉換成String.並初始H。
                H = TimeFix(hourOfDay);
                //取得 minute的值,透過TimeFix方法。轉換成String.並初始M。
                M = TimeFix(minute);
                //將取得的資料設定到 textTime1
                textTime1.setText(H + ":" +M);
            }
        });
    }
    
    private Button.OnClickListener GTimeListener = 
            new Button.OnClickListener(){
        //按下按鈕後將先前Timepicker取得的值 H和M,
        //設定到 textTime2
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId())
            {
                case R.id.BtnGetTime:
                {
                    textTime2.setText(H + ":" +M);
                    break;
                }
            }
        }
    };
        
    //Timepicker取得的資料為int,但時間數字小於10,是不會有像06這樣的情況。
    //所以透過TimeFix這個方法將送過來的數字轉換成String,在判斷是否需要加0。
    private static String TimeFix(int c){
        if (c >= 10)
            return String.valueOf(c);
        else
            return "0" + String.valueOf(c);
    }    
}

Blog 圖片大小 寬600像素

Blog 圖片大小 寬600像素

2013/01/03

FileZilla Server 外部網路的設定方式。

由於FileZilla Server FTP 是使用Passive Mode,所以除了一般知道的 20,21 port之外。
也需要另外設定資料傳輸要走的 port。

FileZilla Server設定方式如下:
假設我設定了固定的port 範圍 8000 ~ 8100。
那在對外的Router或防火牆,也需要做這些設定。





不想花錢,家裡剛好用的是中華電信附的ZyXEL
那就照著做就對了。
在Port Forwarding上設定對外的 port 編號。如圖式~


如果你剛好用的是Windows 內建的防火牆,那務必記得設定FileServer的程式可以通過網路喔。
C:\Program Files\FileZilla Server\FileZilla server.exe


很簡單吧。

2012/10/27

MacBook 系統還原方法

mac 還原的方法.
這邊要提到的是還原到出廠的預設系統.
以我自己的 macbook air 13 為例.

按下電源的時候同時按下 command + R,稍等一回後,畫面會出現地球的圖示.















過一回後,會要求連線無線網路。(看不到無線網路
選擇想要連結的網路名稱並輸入密碼.



開始網路的連線.
















連線完成後,進入 Mac OS X 工具程式.

重新安裝的話,當然希望可以像最開始那樣乾乾淨淨的系統.
所以在這有兩個步驟要做
1. 清除磁碟所有的資料。
2. 重新安裝作業系統。

開始清除硬碟

點選“磁碟工具程式”,選擇磁碟後點選“清除”頁籤。
格式選擇“日誌式”。這是 apple 系統專屬的 file system.
輸入這個磁碟的名稱。這名稱主要是作為磁碟的辨識用。
確認後,按下清除.

此時會跳出一視窗向你確認是否真的要清除。“清除”按下去就對了。
這時可以注意右下角有清除並格式化的過程。
當所有作業自動完成後,就可以回到  Mac OS X 工具程式的選單。


安裝作業系統

回到工具程式的畫面後,點選“重新安裝 Mac OS X”
此時記得連接無線網路。(連線位置在右上角的一個圖示)
網路連線主要是 Apple 要驗證電腦,這樣才能下載並還原系統。
之前我有安裝到 10.8.1,但依據我和 apple 客服之前有提到若升級到 10.8.2 之後還原就會需要 Apple ID 來驗證是否有在 app store 買過 10.8 ( OS X Mountain Lion )。
簡單說就是,系統已升級到 10.8.2 就不能再還原回 10.7。
重點是 10.8.2,而不是 10.8。
























通過驗證後,下一步會要求你同意"軟體許可協議上所述的條款內容。"
當然要同意。

選擇要安裝 Mac OS X Lion 的磁碟。
一般來講應該只有一個磁碟。

開始下載。
下載的時候約需一兩個小時,這當然要視網路的速度而定。
縱使家裡網路下載速度很快,也有可能其他原因影響下載的速度。
這不是使用者可以控制的。

歷經等待,我們就可以開始安裝了,第一個動作當然就是 "歡迎"。




選擇您的鍵盤。我主要是用注音。

在來就是選取 wifi。這部分直接按繼續跳過。等正式進入系統在選也行。

傳送資訊到這部 MAC。
我是選擇 "不要立即傳送" 直接按繼續跳過。

註冊資訊。
這晚點進入系統後,透過網頁在註冊也行。

建立帳號。輸入想要的帳號及密碼即可。







選一張你喜歡的帳號圖示吧。我選了斑馬。

再來就是時區,在台灣的話一般都是選擇台北。

即將完成。這是最後的步驟了
使用下圖的手勢將上面的文字滑到最下面,點選 "開始使用 Mac OS X Lion " 
這樣所有的安裝過程就結束了。

登入你的 Mac OS 吧。

2012/10/26

mac os x 還原 無法連到無線網路的問題

我自己擁有一台 2012 MacBook Air 13 的筆電,
有次我想還原回出廠時的系統,版本為 10.7

所以我透過 command + r 的方式進入還原模式時,卻發現平常使用的無線網路
在怎樣都我的 air 都無法辨識到,更別說把密碼打上去了。

經過一番詢問後,發現無線網路的安全模式 (安全層級) 是有差別的
經測試下的結果和網路上搜尋到的說法如下

安全模式需要為 WAPWAP2 在 還原模式下可以被辨識到。
WEP 是不行的。

所以想透過網際網路還原系統的朋友,記得將無線網路的安全層級調整一下。

2012/10/11

打字按錯按鈕,發出BB聲

每次打字時,只要按錯按鈕就會發出 BB 聲,聽了就很煩。
要如何關掉呢?
所有的罪過都是 輸入法 惹的禍。
真不知當初設計時,這樣的音效是為了什麼?

讓我們關掉它,只要照下面步驟做就可以了...

開始  >  控制台 > 地區及語言 > 鍵盤與語言 >  變更鍵盤
開始設定如圖樣


設定完成後,以後再也不B了~~

2012/10/07

ios6 無線網路問題 解法. how to fix ios6 wifi issue.

自從我的 iPad2 更新為 ios6 之後,在連線無線網路時常有無法連線的情況發生。
現在有方法可以解決了~~
只要照著以下的步驟即解決。

點選設定 > 左邊的"一般" ,這時將右邊的設定部分滑到最下面。有一個"重置",點選他。

進入重置的設定畫面後,這裡有幾個設定重置的部分。

1. 重置所有設定。
2. 清除所有內容和設定。
3. 重置網路設定。

點選 " 重置網路設定",如果你有設定密碼,輸入你的密碼。

此時會跳出一個視窗,內容提到"這將刪除所有網路設定並回復為出廠設定值"。
點選"重置"。
這時螢幕出現一個小蘋果,我們只需稍微等一下。等他完成。

螢幕重新出現要求輸入密碼。輸入你的密碼。

重新設定你的無線網路設定。
完成。