2014年12月24日 星期三

Windows Media Player 11 繁中正式版 破解官方下載免驗證

Windows Media Player 11 繁中正式版 破解官方下載免驗證


步驟:
1.下載wmp11-windowsxp-x86-zh-tw.exe檔案(按我下載 )
2.下載的檔案不要直接安裝,先以WINRAR解壓縮(WINRAR要支援解壓縮EXE檔)
3.解壓後的內容按以下順序執行各檔案即可跳過驗證程序
a.wmfdist11.exe
b.wmdbexport.exe
c.umdf.exe
d.wmp11.exe

2014年11月27日 星期四

E-Mail 看不到附件解決辦法 (附件變成 winmail.dat)

User有遇到一個問題,寄信出去,有含附件,但寄給自己的同事都ok,但對方都收不到附件。  經過查詢,同事是用outloook收信,但對方是用hinet webmail收信。

經過google找問題解決,最後發現,將user寄信端,將對方的通訊錄移除,然後重加進來,這樣就可以讓對方可以收到正常的格式和收到附件。


不過看到以下這兩篇,覺得還不錯,多認識一下,就備份起來留存。

----------------
原資料來源:
[網路]使用Outlook寄信導致Outlook Express收不到附件檔的解決方法  (另外有包含微軟官方的正解)
http://www.ess.nthu.edu.tw/files/14-1163-40566,r1695-1.php

方法 1: 變更預設郵件格式

寄件者可以變更它們使用下列步驟來傳送電子郵件訊息的格式:

在 [工具] 功能表上按一下 [選項],然後按一下 [郵件格式] 
在使用這個郵件格式撰寫,按一下以選取 [純文字],然後按一下[確定]


注意: 若要傳送給特定收件者使用 RTF 格式和其他人使用純文字格式的收件者,寄件者必須在 [個人通訊錄] 或 [收件者連絡人記錄中設定收件者選項。

方法 2: 修改收件者的個人通訊錄] 中的項目

寄件者可以使用下列步驟來從 「 個人通訊錄中的收件者屬性中移除 rt f 格式:

按一下 [工具] 功能表上的 [通訊錄] 
選取您想要設定為純文字的收件者,然後按一下 [檔案] 功能表上的 [內容] 
在聯絡人明細的電子郵件欄位上面按右鍵選[Outlook內容],或是在位址上快點滑鼠左鍵兩次

打開[電子郵件內容]對話框,[網際網路格式]中選擇[僅傳送純文字]選項








-------------------
原資料來源:

E-Mail 看不到附件解決辦法 (附件變成 winmail.dat) http://dilys0306.blogspot.tw/2008/12/e-mail-winmaildat.html


最近發現有客戶寄來的E-Mail 都看不到附件,信件大小看起來又蠻大的,仔細看了該信件的郵件原始檔 發現除了信件本文以外,最底下還有這一段

------=_NextPart_000_0008_01C9615D.2618C4A0
Content-Type: application/ms-tnef;
name="winmail.dat"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="winmail.dat"


eJ8+IhkDAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy
(以下同樣的亂碼簡略)

原因是 :
寄件者在寄出信件時,使用Outlook設定信件格式為「使用 Outlook Rich Text (RTF) 格式傳送」。
導致利用非Outlook收信的人,看到寄來的信件所夾帶的附檔是「winmail.dat」。

由於 Microsoft 的 Outlook 會將Mail 使用 RTF 格式送出,所以只要使用非 Outlook 的讀信軟體,就會看到一個 winmail.dat 的附件(使用Live Mail則連winmail.dat的附件都看不見) ,完全看不到信件的內容。
當然,在 ThunderBird 收信軟體中也是一樣。



解決方法 1:

請寄件人調整Outlook發信的信件格式後,再重寄一次。為避免自己寄出的信件,也造成別人的困擾,也可調整自己的設定。

打開 Outlook,到「工具」→「選項」→「郵件格式」,點選網際網路格式按鈕,選「轉換成HTML格式或純文字格式」都可以, 不要選擇「使用 Outlook Rich Text (RTF) 格式傳送」。



注意喔 !! 要點選 "網際網路格式" 按鈕裡面的選項也要改成 HTML 喔!!!!



解決方法 2:

利用一些程式在讀取 winmail.dat 的內容,如 Winmail Opener 或 Winmail.dat Reader 這樣的軟體,可以把 .dat 的檔案,關連到這類的程式。

首先把winmail.dat另存取出


開啟Winmail軟體


使用winmail 開啟 winmail.dat


另外發現,在 ThunderBird 收信軟體 中也有一個 附加元件 LookOut ,安裝後直接就可以在 Thunderbird收信軟體裡看到 winmail.dat 分解成更小的附件, 如 .doc, .xls, .gif, .jpg, .rtf 之類的小附件,直接點選去打開這個附件的內容,一樣可以讀到 winmail.dat 的內容了。


ThunderBird安裝附加元件


安裝後 就能讀取 Outlook所寄出之 RTF格式 Mail


有興趣都可以裝起來測試看看。至於上述那一種方法比較好用,就看自己喜歡那一種方法囉,反正都可以解決Outlook所寄出之 RTF格式 Mail winmail.dat 的問題。


2014年7月15日 星期二

網路查詢command

用 arp -a 來從 mac 查 ip
再用 nbtstat -A ip 來從 ip 查電腦名稱
netstat -an 指令查 電腦有那些Port有被開啟

Grep For Windows – Findstr Example

在windows上使用grep,我覺得蠻實用的。
這是轉貼的文章,為了怕不見,我自己另外留一份copy.
http://www.mkyong.com/linux/grep-for-windows-findstr-example/



I love grep command on Linux, it helped to search and filter strings easily, always wonder what is the equivalent tool on Windows, and found this findstr recently.
In this article, I will share some of my favorite “grep” examples on Linux, and how to “port” it to Windows with “findstr” command.

1. Filter a result

1.1 Classic example to filter a listing result.
#Linux
$ ls -ls | grep mkyong
 
#Windows
c:\> dir | findstr mkyong
1.2 Add ignore case, and filter the listing result with multiple strings.
#Linux - Need '-E' option and Uses "|" to separate multiple search strings.
$ ls -ls | grep -iE "mkyong|music"
 
#Windows - Use spaces to separate multiple search strings
c:\> dir | findstr -i "mkyong music"
2. Search a File
2.1 Search matched string in a file.
#Linux 
$ grep mkyong test.txt
 
#Windows
c:\> findstr mkyong test.txt
2.2 Counting the number of matches.
#Linux
$ grep -c mkyong test.txt
 
#Windows - Piped with find /c command.
c:\> findstr -N "mkyong" test.txt | find /c ":"

3. Search a list of files

3.1 Search matched string in a list of files.
#Linux
$ grep mkyong -lr /path/folder
 
#Windows
c:\> findstr /M mkyong c:\folder\*
* (grep) -l , (findstr) /M = print only name of files containing matches.

4. Help

4.1 The most powerful command ~
#Linux 
$ grep --help 
$ man grep 
 
#Windows
c:\> findstr -?
Note
Do you have other examples? Does share it below, thanks.

References

  1. 15 Practical Grep Command Examples In Linux / UNIX
  2. Wikipedia : Findstr
  3. Grep for Windows Using FINDSTR




2014年5月9日 星期五

CentOS 5.9/6.4 中Samba 無法存取home directory

好久好久沒用samba了,想說做個練習。
於是我使用CentOS 6.4做個練習,當samba設定完後,發現我並不能連進去我的home directory。
除了我設定的路徑是可以存取的外,就是只有home directory 不能存取。
我做了很多嘗試,如: 可能新版,samba做了某些改變,降版到5.9(一樣的問題,不能解決),關掉防火牆和disable selinux(也不能解決問題)。

後來google很久爬文(看===以下內容),才發現這個問題,原來還是selinux的問題,即使關掉selinux,這似乎還是會有影響。因此做個記錄當作筆記。
===============
剛剛裝玩CentOS 6.0, 並且裝完samba server 後, 發現幾個問題.
1. system-config-samba 不見了.
解決方式: 原來是CentOS 6 以後, 將他移除了. 唉~ 只能手動修改 smb.conf 檔來設定.
2. 設完samba user 並且啟動samba service 後, 在windows XP 下卻看不到.
解決方式: 原來是linux 的firewall 搞鬼, ok, 用system-config-firewall 來允許samba 連接.
嗯, XP 中可以看到家目錄了, 但是卻無法連進去 ??!!
查了好久, 才知道是selinux 搞鬼. 記得在CentOS 5.x 時, 第一次啟動時都會問是否要enable selinux.
但是CentOS 6.0 卻沒有詢問, 害我忘記 selinux 的存在. Default 值是Enable 的.
本來想用system-config-securitylevel 來關閉selinux, 沒想到這個程式在CentOS 6.0 又被拿掉了, 是怎樣啦(翻桌!!) 一堆常用的東西都被拿掉.
想想算了, 找到selinux 的設定檔, 在/etc/selinux/config 中. 正想修改設定時, 想想, 改完後要重開機才能生效, 而我正在compile 其它程式, 還要幾個小時才能做完.
真的不想關機.
再想想其他方法好了. 後來在/etc/samba/smb.conf 看到說明.
原來只要執行
 
setsebool -P samba_enable_home_dirs on 

2014年4月11日 星期五

php 上傳檔案的相關資訊

上传档案的网页
enctype="multipart/form-data"
 action="__URL__" method="POST">
   
   
   
    Send this file: userfile" type="file" />
   
p.s. 重點
* form要加上 enctype="multipart/form-data"才能上傳檔案
* 上傳檔案的input type要設為file

接收参数阵列
档案名称
$_FILES['userfile']['name']
档案格式(image/jpeg)
$_FILES['userfile']['type']

档案大小
$_FILES['userfile']['size']

档案暂存的位置(伺服器上暂存的位置,必须要移动到正确的位置)
$_FILES['userfile']['tmp_name'] 

错误讯息
$_FILES['userfile']['error']
P.s. $_FILE['xxxxx']裡頭的xxxxx取決於你form裡頭選擇檔案input的"name"

2014年3月25日 星期二

《Android 初學特訓班》筆記

《Android 初學特訓班》筆記
ㄧ. Android 專案概觀

1.資料夾架構:

(1)src: Java 程式原始碼。底下可再建立不同的套件路徑資料夾。
(2)gen:儲存由編譯器產生的專案資源。
(3)assets:不會產生索引的外部資源(意即不會在 gen/R.java 中產生索引)。
(4)res:產生索引的外部資源。
<1>drawable:圖片、圖示、檔案資源。
<2>layout:介面設定的 XML 檔。
<3>values:參數設定的 XML 檔。


2.在 XML 檔案中使用資源索引的語法:
@類別名稱 / 欄位名稱


3.在 java 檔案中使用資源索引的語法:
R. 類別名稱 . 欄位名稱


4.版面標籤種類:
RadioGroup:將多個 RadioButton 元件組合起來。
語法:
android : 屬性 = " 屬性值 " ...其他屬性>
  android : 屬性 = " 屬性值" ...其他屬性>
 …

PS:RadioButton 的 Checked 屬性為 true,則為預設選取的選項

(1)FrameLayout:框架式版面標籤。
(2)LinearLayout:線性版面標籤。
(3)AbsoluteLayout:絕對位置版面標籤。
(4)RelativeLayout:相對位置版面標籤。
(5)TableLayout:表格式版面標籤。
*預覽圖、詳細介紹及程式碼請參考:Android基础教程(二)之五大布局对象--FrameLayout,LinearLayout ,AbsoluteLayout,RelativeLayout,TableLayout.




二. 基本的介面元件

1.TextView:在畫面上顯示訊息,但不允許輸入資料。

android:layout_height:文字的高度。
(1)fill_parent 、match_parent:填滿整個外框
(2)wrap_content:依文字高度自動調整

android:layout_width:文字的寬度。
(1)fill_parent 、match_parent:填滿整個外框
(2)wrap_content:依文字寬度自動調整

android:text:顯示的文字內容。
android:id:元件的名稱。
android:textColor:文字的顏色,以「#RGB」格式表示。
android:textSize:文字的大小。


2.EditText:提供使用者輸入資料,也可設定輸入資料的類型。

android:lines:最多可以顯示的列數。
android:editable:是否可輸入文字。
android:enabled:是否可作用。
android:numeric:數值輸入的格式。
(1)integer:整數
(2)signed:帶正負數符號的數字
(3)decimal:帶小數點的數字
*可使用「|」設定同時核選多項輸入的格式

android:password:文字輸入後以密碼顯示輸入的文字。
android:phoneNumber:輸入電話號碼(0~9、「+」、「-」、「#」、「*」)。
android:singleline:false可輸入多列;true只能輸入一列。
android:inputType:限定輸入資料的類型。
(1)text:所有字元
(2)textUri:網址
(3)textEmailAddress:電子郵件
(4)textPassword:密碼
(5)number:0~9的數字
(6)date:日期(0~9、「/」)
(7)time:時間(0~9、「:pam」)
(8)phone:電話號碼

android:hint:當輸入欄位為空時顯示的提示訊息。


3.android:id 屬性的設定格式:
android:id = "@+id/ 元件名稱"


4.Button:提供按下按鈕後,透過設定的監聽事件,執行指定的動作。


5.Button 元件觸發事件的程序流程:
(1)藉由 id 編號取得需要使用的介面元件。
(2)在該元件設定偵聽動作以及觸發時要執行的方法名稱。
(3)設定執行方法的程式內容。


6.Button 元件設定偵聽動作:
元件變數.setOnClickListener(執行方法名稱);


7.Button 元件設定按下後的功能:

private Button.OnClickListener 方法名稱 = new Button.OnClickListener(){
    public void onClick(View v){
        程式內容...}};
PS:需 import android.view.View;


8.取得對應的元件,並放入變數中:
變數名稱 = (元件類型)findViewById(R.id.元件名稱);




三. 訊息顯示相關元件

1.Toast:快顯訊息。

makeText:設定欲顯示的字串
show:顯示訊息框

語法:
(1)Toast 變數名稱 = Toast.makeText(主程式類別.this , Text, Time);
(2)變數名稱.show();
*Text:欲顯示之字串
*Time:顯示的時間
<1>Toast.LENGTH_LONG:時間較長
<2>Toast.LENGTH_SHORT:時間較短


2.設定 Toast 元件位置語法:

Toast 變數名稱.setGravity(Gravity, xOffset, yOffset);
*Gravity屬性:
(1)Gravity.CENTER:水平及垂直置中
(2)Gravity.CENTER_HORIZONTAL:水平置中
(3)Gravity.CENTER_VERTICAL:垂直置中
(4)Gravity.RIGHT:螢幕右邊緣
(5)Gravity.LEFT:螢幕左邊緣
(6)Gravity.TOP:螢幕上邊緣
(7)Gravity.BOTTOM:螢幕下邊緣
可使用「|」同時設定多項值


3.取得主程式類別名稱:
getApplicationContext()


4.AlertDialog:互動對話方塊。

setTitle():對話方塊的標題
setIcon():對話方塊的圖示
setMessage():對話方塊的內容
setItems():對話方塊的表列內容
setPositiveButton():在對話方塊中加入 Yes 按鈕
setNegativeButton():在對話方塊中加入 No 按鈕
setNeutralButton():在對話方塊中加入 Ignore 按鈕

語法:
AlertDialog.Builder 變數名稱 = new AlertDialog.Builder(主程式類別);
變數名稱.setTitle("標題");
變數名稱.setIcon(圖示);
變數名稱.setMessage("內容");
變數名稱.show();
PS:需 import android.app.AlertDialog;




四. 單選、複選和下拉式清單

1.CheckBox:複選清單


2.CheckBox 元件設定偵聽動作:

元件變數.setOnCheckedChangeListener(執行方法名稱);


3.CheckBox 元件設定核選後的功能:

private CheckBox.OnCheckedChangeListener 方法名稱 = new CheckBox.OnCheckedChangeListener(){
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
        if(元件變數.isChecked()){
            程式內容...}}};
PS:需 import android.view.View;



4.RadioButton:單選清單。


5.RadioGroup 元件設定偵聽動作:

元件變數.setOnCheckedChangeListener(執行方法名稱);


6.RadioGroup 元件設定核選後的功能:

private RadioGroup.OnCheckedChangeListener 方法名稱 = new RadioGroup.OnCheckedChangeListener(){
 @Overide
 public void onCheckedChanged(RadioGroup group, int checkedId)/*辨別觸發的選項並取得選項資訊*/{
  程式內容;}};
*取得選項的索引值:int p = group.indexOfChild(RadioButton)findViewById(checkedId));
*取得清單中的選項數目:int count = group.getChildCount();
*檢查是否按下選項:if(checkedId == R.id.id名稱)


7.Spinner:下拉式清單。


8.Spinner 元件觸發事件的程序流程:
(1)建立清單選項的資料來源。
(2)將資料來源設定給 Spinner。
(3)設定 Spinner 的顯示格式。
(4)在 Spinner 加上偵聽動作並設定處理程序。
PS:清單的資料來源是以 ArrayAdapter 物件型式存在,建立方式包含兩種建立方法:
<1>使用陣列方式宣告在程式中。
<2>若有其他語系考量,則將選項清單設定在專案的中,再由程式經由資源類別檔中取得清單陣列來使用。




五. 圖片相關介面元件

1.ImageView:顯示影像。

android:src:圖片來源。
android:scaleType:顯示圖片的縮放方式:
(1)center:按原來尺寸置中顯示。
(2)centerCrop:按比例擴大圖片尺寸置中顯示。
(3)centerInside:將圖片的內容完整置中顯示。
(4)fitCenter:按比例置中完整顯示。
(5)fitEnd:按比例靠右或下完整顯示。
(6)fitStart:按比例靠左或上完整顯示。
(7)fitXY:不按比例依元件大小顯示。
(8)matrix:依 matrix 矩陣來顯示。


2.Gallery:畫廊展示

android:animationDuration:動畫過渡時間。
android:gravity:圖片對齊方式。
android:unselectedAlpha:選中圖片的透明度。
android:spacing:圖片間的間隔。


3.Gallery 元件執行流程:
(1)建立圖片檔案的資料來源。
(2)將資料來源設定給 Gallery。
(3)在 Gallery 加上偵聽動作並設定處理程序。

PS:使用 Gallery 元件的資料來源必須建立一個繼承自 BaseAdapter 的物件來放置想要呈現的圖片資料。繼承後,必須實作以下方法:
<1>加入欲顯示的內容:getView()
<2>取得共有多少張圖片:getCount()
<3>取得目前的選項:getItem()
<4>取得目前選項的 Id:getItemId()


4.GridView:表格展示。

android:numColumns:表格的行數。
android:gravity:圖片對齊方式。
android:horizontalSpacing:圖片的水平間隔。
android:verticalSpacing:圖片的垂直間隔。


5.GridView 元件執行流程:
(1)建立圖片檔案的資料來源。
(2)將資料來源設定給 GridView。
(3)在 GridView 加上偵聽動作並設定處理程序。

PS:使用 Gallery 元件的資料來源必須建立一個繼承自 BaseAdapter 的物件來放置想要呈現的圖片資料。繼承後,必須實作以下方法:
<1>加入欲顯示的圖片:getView()
<2>取得共有多少張圖片:getCount()
<3>取得目前的選項:getItem()
<4>取得目前選項的 Id:getItemId()




六. ListView 介面元件

1.ListView:選項清單。


2.ListView 元件執行流程:
(1)建立清單選項的資料來源。
(2)將資料來源設定給 ListView。
(3)在 ListView 加上偵聽動作並設定處理程序。


PS:選項的資料來源是以 ArrayAdapter 物件型式存在,建立方式包含兩種建立方法:
<1>使用陣列方式宣告在程式中。
<2>若有其他語系考量,則將選項清單設定在專案的中,再由程式經由資源類別檔中取得清單陣列來使用。

3.ListView 更改選項顏色:

資源檔中定義R.drawable.顏色,語法為:
方法名稱.setSelector(R.drawable.顏色);


4.ListView 預設選取項目:

方法名稱.setSelection(n);
//預設選取第 n+1 個項目


5.ListView 選項按鍵過濾:

方法名稱.setTextFilterEnabled(true);


6.layout 內的預設樣式參數:
(1)android.R.layout.simple_list_item_1:一行 text。
(2)android.R.layout.simple_list_item_2:兩行 text,一行 text 較大,一行較小。
(3)android.R.layout.simple_list_item_single_choice:單選按鈕。
(4)android.R.layout.simple_list_item_multiple_choice:多選按鈕。
(5)android.R.layout.simple_list_item_checked:核選按鈕。


7.使用 LayoutInflater 物件在程式中取得自訂版面:

private LayoutInflater myInflater;
convertView = myInflater.inflate(R.layout.mylayout, null);
ImageView imgLogo = (ImageView) convertView.findViewById(R.id.imgLogo);
PS:inflate() 方法取得的版面會以 View 型別的物件傳回,接著就能以 findViewById() 方法取得 版面中的元件。


8.程式中設定自訂版面中的元件內容:

在程式中可以將元件的內容如文字、圖示檔定義在陣列中,再透過改變陣列索引的方式改變元件內容。
int[] resIds = new int[]{R.drawable.bass};
imLogo.setImageResource(resIds[position]);


9.使用 ListView 元件若要自定列表項目,就必須建立一個繼承自 BaseAdapter 的物件來定義版面。繼承後,必須實作以下方法,並將欲顯示的內容定義在 getView() 方法中:
(1)定義欲顯示的內容:getView()
(2)取得選項的數目:getCount()
(3)取得選項中的文字:getItem()
(4)取得陣列索引的 position:getItemId()




七. 功能表選單元件

1.Option Menu:功能表選單。


2.呼叫功能表選單的語法:

方法一:
@Override
public boolean onCreateOptionsMenu(Menu menu){
    程式內容... return super.onCreateOptionMenu(menu);}

方法二:
由功能表的 Source \ Override / Implement Methods 進入對話方塊,在 Activity 選項中核選 onCreateOptionsMenu(Menu) 按下 OK 鈕即可插入到原始碼中。


3.加入功能表項目:

public abstract MenuItem add(int groupId, int itemId, int itemId, int order, int title)
/* groupId:選項群組的 ID,由 0 開始編號。
itemId:單一選項的 ID,可自定義。通常使用 Menu.First來定義第一個選項的常數,以後再以 Menu.First +1 來遞增。
order:選項安排的順序,由 0 開始編號。
title:每個單一選項要顯示的標題。 */

PS:加入快捷鍵:
.setShortcut('0', 'a')


4.功能表選項的處理語法:

方法一:
@Override
public boolean onOptionsItemSelected(MenuItem item){
    程式內容... return super.onOptionsItemSelected(item);}

方法二:
由功能表的 Source \ Override / Implement Methods 進入對話方塊,在 Activity 選項中核選 onOptionsItemSelected(MenuItem item) 按下 OK 鈕即可插入到原始碼中。


5.Context Menu:快顯功能表。


6.加入快顯功能表的選項:

方法一:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
    程式內容... super.onCreateContextMenu(menu, v, menuInfo);}
/* View:選取快顯功能表的元件。
ContextMenuInfo:提供選取元件的資訊。
*/
PS:若有多個元件向系統註冊,則必須依據不同元件的名稱,產生不同的快顯功能表,利用 View 型別參數「v」來辨別不同的註冊元件。

方法二:
由功能表的 Source \ Override / Implement Methods 進入對話方塊,在 Activity 選項中核選 onCreateContextMenu(ContextMenu, View, ContextMenuInfo) 按下 OK 鈕即可插入到原始碼中。


7.加入快顯功能表項目:

public abstract MenuItem add(int groupId, int itemId, int itemId, int order, int title)
/* groupId:選項群組的 ID,由 0 開始編號。
itemId:單一選項的 ID,可自定義。通常使用 Menu.First來定義第一個選項的常數,以後再以 Menu.First +1 來遞增。
order:選項安排的順序,由 0 開始編號。
title:每個單一選項要顯示的標題。 */


8.快顯功能表註冊語法:

registerForContextMenu(元件名稱);




八. Intent 的使用

1. 檔案:

(1)在 標籤內,定義應用程式用到的所有元件、服務等。

icon 設定於主畫面中的應用程式圖示。檔案路徑在
label 設定顯示於主畫面中的應用程式名稱。檔案路徑在

(2)在 標籤內

label 屬性定義執行應用程式時顯示的標題名稱。

(3)在 標籤內,定義條件來篩選 Intent 要執行的 Activity。

action 定義 Activity 的執行動作。
category 定義 Activity 所屬類別。若想讓程式一開始就要執行應設定為 LAUNCHER 類別,否則為 DEFAULT 類別。
data 定義 Activity 可以處理的資料類型。


2.Intent:從目前的 Activity 執行另一個 Activity、傳遞參數。


3.Intent 語法:

Intent intent = new Intent (動作, 內容);


4.執行 Activity:

不必傳回返回值:startActivity(定義完成的 Intent);

必須傳回返回值:startActivityForResult(定義完成的 Intent, 動作);


5.Intent 執行自訂 Activity 的方法:
(1)在專案中新增另一個類別,並為該類別製作一個版面配置檔,最後要在 檔宣告加入自訂的類別。
(2)主程式類別切換到自訂類別:setClass(主程式類別.this, 自訂類別.this );


6.Intent 傳遞資料的流程:

(1)使用 setClass 方法指定執行類別。
Intent intent = new Intent();
intent.setClass(傳送者.this, 接收者.class);

(2)依照資料的型別以 Bundle 物件進行打包。
Bundle bundle = new Bundle();
bundle.putString("名稱", "值");
//putBoolean()、putByte()、putInt().....
//putStringArray()、putIntArray()

(3)使用 putExtra 方法加入 Bundle 物件。
intent.putExtras(bundle);

(4)使用 startActivity 方法執行 Intent。
startActivity(intent);


7.從主程式取出 Intent 的資料流程:

(1)以 getIntent() 方法取得傳送的 Intent。
Intent intent = this.getIntent();

(2)利用 Intent 的 getExtras() 方法,從 Intent 中取得 Bundle 物件。
Bundle bundle = intent.getExtras();

(3)根據打包的名稱取得 Bundle 物件中的資料。


8.從主程式取出 Bundle 物件資料:

bundle.getString("名稱");
////getBoolean()、getByte()、getInt().....
//getStringArray()、getIntArray()


9.從「被呼叫」的 Intent 傳回資料:

傳遞資料的執行:
private static final int ACTIVITY_EDIT = 1;
startActivityForResult(intent, ACTIVITY_EDIT);

傳回步驟:
(1)建立 Intent 物件,不必以 setClass() 設定傳送者。
Intent intent = new Intent();

(2)將要回傳的資料放入 Bundle 中,再把這個 Bundle 交給 Intent 處理。
age = Integer.parseInt(edtAge.getText().toString());
Bundle bundle = new Bundle();
bundle.putInt("Age", age);
intent.putExtras(bundle);

(3)以 setResult() 方法將 Intent 傳回,同時必須傳回一個結果的代碼。
setResult(RESULT_OK, intent);

主程式接收傳回的資料,必須覆寫 onActiveResult() 方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data)




九. Activity 的生命週期

1.Activity 運作實的基本狀態:

(1)如果是在畫面前景顯示的 Activity,它是存在並處於運作的狀態。

(2)如果 Activity  失去焦點但仍繼續運作,它會處於暫停的狀態。暫停的 Activity 並沒消失,但如果系統處於低資源的狀態下則會被優先結束回收。

(3)如果 Activity 因為另一個 Activity 的運作而退到背景,它會處於停止的狀態。雖然這個 Activity 會記憶停止前的狀態及資料,但程式視窗會消失在畫面上,而且在系統處於低資源的狀態下會被優先結束回收。

(4)當 Activity 處於暫停或是停止的狀態,系統會視資源的狀況要求結束,甚至直接移除它的活動。當該 Activity 被重新執行時會自動恢復到原來的狀態。


2.Activity 執行的重要循環:

(1)Activity 的完整生命週期是由 onCreate() 開始,最後在 onDestroy() 後結束。系統會在 onCreate() 時配置使用資源,在 onDestroy() 時釋放資源。

(2)Activity 執行到 onStart() 時即可在螢幕上看到畫面,一直對應的 onStop() 出現時才會消失。

(3)當另一個 Activity 被執行時,目前的 Activity 就會自動進入 onPause() 暫停的狀態,並放棄螢幕存取權退到背景執行,但是 Activity 並未結束。在另一個 Activity 執行完成後,原來的 Activity 可以經由執行 onResume() 取回螢幕控制權,並回到程式暫停前的狀態。


3.系統記憶體不足時的資源移除順序:

(1)Empty Process:為獨立的 Activity。
(2)Background Activity:表示 Activity 已處於 onStop() 的狀態。
(3)Service Process:在背景執行的程序,如播放音樂、上傳/下載文件等。
(4)Visible Activity:應用程式處於 onPaused() 狀態時,原來的 Activity 仍屬於 Visible。
(5)Activity:當此 Activity 所需的記憶體大小超出系統所能提供時,系統則會取消此 Activity 的執行。


4.Activity 運作流程:

圖片來源:Android應用程式開發速成班


5.標準的機制通常將要儲存狀態的動作寫在 onPause() 方法中,回復狀態的動作寫在 onResume() 方法中。




十. 程式除錯及程式碼片段

1.Log 日誌檔語法:

Log. 代號(標籤, 輸出訊息);
PS:使用 Log 必須以「import android.util.Log」加入使用的套件。



十一. 資料的儲存

1.SharedPreferences 物件:建立、讀取資料、移除部分及全部資料。

2.SharedPreferences 儲存資料:

SharedPreferences 變數 = getSharedPreferences(檔名, 權限);

*檔名:儲存資料的檔案名稱。建立資料檔時只要輸入檔案名稱,不需指定副檔名。

*權限:MODE_PRIVATE、MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE。

PS:只能儲存 (key, value) 型式的資料,key 為資料的名稱;value 為資料的實際內容。


3.寫入 SharedPreference 物件的內容:

(1)取得 Editor 物件:
Editor 變數 = SharedPreferences 物件名稱.edit();

(2)以 putXXX 方法將資料寫入到儲存檔中:
Editor 物件名稱.putXXX(key, value);

*putBoolean、putFloat、putInt、putLong、putString

(3)呼叫 commit() 方法:
editor.commit();


4.SharedPreferences 讀取資料:
SharedPreferences 變數名稱.getXXX(key, default);


5.SharedPreferences 移除資料:

(1)單筆資料:
Editor 物件名稱.remove(key);
editor.commit();

(2)全部資料:
Editor 物件名稱.clear();
editor.commit();


6.寫入檔案資料:

FileOutputStream 物件 = openFileOutput(檔名, 權限);
BufferedOutputStream 物件 = new BufferedOutputStream(FileOutputStream 物件);
BufferedOutputStream buffout = new BufferedOutputStream(fout);
BufferedOutputStream 變數.write(字串, Bytes());
//資料寫入後即可以 close 方法關閉檔案
buffout.close();

*檔名:儲存資料的檔案名稱。可以指定副檔名,但不可指定儲存路徑,檔案儲存於系統內部指定位置中。

*權限:MODE_PRIVATE、MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE、MOED_APPEND。

*使用檔案方式存取資料時,必須將存取檔案的程式碼置於 try..catch 例外處理中,否則執行時會產生錯誤。
7.讀取檔案資料:

FileInputStream fin = openFileInput("test.txt");
BufferedInputStream buffin = new BufferedInputStream(fin);
byte[] buffbyte = new byte[20];
int length = buff in.read(buffbyte);
buffin.close();*使用檔案方式存取資料時,必須將存取檔案的程式碼置於 try..catch 例外處理中,否則執行時會產生錯誤。




十二. SQLite 資料庫


1.建立 SQLite 資料庫:

SQLiteDatabase 物件 = openOrCreateDatabase(檔名, 權限, null);

*檔名:建立的資料庫名稱,副檔名為 .db,也可以指定副檔名。

*權限:MODE_PRIVATE、MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE。


2.刪除 SQLite 資料庫:

deleteDabtbase("資料庫名稱.db");


3.SQLiteDatabase 類別:

(1)execSQL():執行 SQL 命令,可以完成資料表的建立、新增、修改、刪除動作。

(2)rawQuery():以 Cursor 型別傳回查詢的資料,最常用於查詢所有資料。

(3)insert():資料新增,使用時會以 ContentValues 類別將資料以打包的方式,再透過 insert() 新增至資料表中。

(4)delete():刪除指定的資料。

(5)update():修改資料,使用時會以 ContentValues 類別將資料以打包的方式,再透過 update() 更新資料表。

(6)query():以 Cursor 型別傳回指定欄位的資料。

(7)close():關閉資料庫。



這是個轉貼的文章。http://w1a2d3s4q5e6.blogspot.tw/2012/08/android.html
我也有一本同樣的書,但我覺得他整理的很好,我怕日後找不到,就乾脆存放一份囉。
以他的內容基礎修改我要的內容。

2014年3月6日 星期四

Java裡的"@override"意思是什麼? 有什麼用?



不會對運行有問題.除非你需要用到@override

意思是什麼? 有什麼用?

JAVA中 @Override 的作用

如果想重寫父類的方法,比如toString()方法的話,在方法前面加上@Override 系統可以幫你檢查方法的正確性,
@Override
public String toString(){...}這是正確的
一旦寫錯 寫成這样
@Override
public String tostring(){...}
編譯器可以檢測出這種寫法是錯誤的 這样能保證你的確重寫的方法正確
而如果不加@Override
public String tostring(){...}這样編譯器是不會報錯的 它只會認为這是你自己新加的一個方法而已

------------------------------------------------------------

@Override的用法:

Override:
java.lang.Override是一個marker annotation類型,它被用作標注方法。它說明了被標注的方法重載了父類的方法,起到了斷言的作用。如果我們使用了這種annotation在一個沒有覆蓋父類方法的方法時,java編譯器將以一個編譯錯誤來警示。
這個annotaton常常在我們試圖覆蓋父類方法而確又寫錯了方法名時發揮威力。

使用方法極其簡單:在使用此annotation時只要在被修飾的方法前面加上@Override。
下面的代碼是一個使用@Override修飾一個企圖重載父類的toString方法,而又存在拼寫錯誤的sample:
清單1:

@Override public String toSting() { // 注意方法名拼寫錯了 return "[" + super.toString() + "]";}
參考資料
網上

2014年2月17日 星期一

[Android] | [Samsung i9100 (S2) 手機指令碼]

[Android] | [Samsung i9100 (S2) 手機指令碼]

*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*

獲取 /更改設備信息
*#06#(顯示 IMEI號)
*#1234#(顯示當前固件)
*2767*4387264636#(顯示產品代碼)
*#272*IMEI#*(顯示 /更改CSC代碼)
或*#272* HHMM#*
*#12580*369#(SW&HW信息)
*#44336#(軟件版本信息)


一般測試 /調試
*#0*# (一般測試模式) →初買三星手機時必要檢查之項目
*#*#4636#*#*(診斷和一般設置模式)
*#*#197328640#*#*(服務模式主選單)
*#7353#(快速測試選單)


重置
*#*#7780#*#*或*#7780#(工廠軟體重置)
* 2767*3855#(工廠硬體重置的ROM固件默認設置)


固件工具
*#2663#(TSP / TSK固件更新)
*#34971539#(相機固件更新)
*#7412365#(相機固件選單)
或*#*#34971539#*#*
*#03#(NAND Flash S / N)

無線
*#232337#(藍牙地址)
*#232331#(藍牙測試模式)
*#232338#(WLAN MAC地址)
*#232339#(WLAN測試模式)
*#526#(WLAN工程模式)
*#528#(WLAN工程模式)


GPS
*#1575#(GPS控制選單)
*#*#1472365#*#*(GPS測試設置)


感應器
*#0588#(距離感應器測試模式)
*#0589#(光源感應器測試模式)


音頻
*#0673#(音頻測試模式)
*#0283#(音頻回送控制)
*#0289#(旋律測試模式)


按鈕
*#7594#(重測圖關機,以結束通話 TSK)


電池
*#0228#(電池狀態:容量,電壓,溫度)




其他測試 /調試(許多這些項目可通過服務 /測試選單上列)
*#32489#(加密信息)
*#0842#(振動馬達測試模式)
*#0782#(真實時鐘測試)
*#2263#(RF頻帶選擇)
*#9090#(診斷配置)
*#7284#(USB I2C 模式控制)
*#872564#(USB 記錄控制)
*#4238378#(GCF 配置)
*#3214789650#(LBS 測試模式)
*#745#(RIL 傾倒選單)
*#746#(調試傾倒選單)
*#9900#(系統傾倒模式)
*#273283*255*3282*#(數據創建選單)
*#273283*255*663282*#(數據創建 SD卡)
*#3282*727336*#(數據使用狀態)
*#80#(未知)
*#07#(測試記錄)
*#3214789#(GCF 模式狀態)
*#272886#(自動應答選擇)
*#8736364#(OTA更新選單)
*#301279#(HSDPA / HSUPA控制選單)
* 2767*4387264636#(出賣 SMS/ PCODE 檢視)
*#7465625#(查看電話鎖定狀態)
*7465625*638*#(配置網絡鎖 MCC / MNC)
#7465625*638*#(插入網絡鎖密鑰號碼)
*7465625*782*#(配置網絡鎖 NSP)
#7465625*782*#(插入Partitial網絡鎖密鑰號碼)
*7465625*77*#(插入網絡鎖密鑰號碼 SP)
#7465625*77*#(插入操作鎖密鑰號碼)
*7465625*27*#(插入網絡鎖密鑰號碼 NSP / CP)
#7465625*27*#(插入內容提供商密鑰號碼)
 *♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*♡*

♡*♡*♡*♡*♡*♡*♡*♡*♡*

使用內建工程測試模式檢查手機

過去當我們在新購入手機時,往往都會因為手機的功能測試而傷腦筋,要是測試做得不夠測底,到頭來還得要再次回店家送修手機,不僅容易造成爭議(退換貨問題),在維修過程中需要等待,讓買新機的好心情一整個都被打壞。

過去在購買智慧型手機時,多半都需要額外安裝App進行功能測試,不過在三星旗下的手機中,其實已經內建有完善的「工程測試模式」,只要輸入簡單的指令,就能直接進行測試操作,下面就以圖解為大家說明一下,如何進入工程測試模式吧!

3.4_008.jpg
圖:打開手機的「電話」功能,並切換到「鍵盤」分頁,在撥號盤直接輸入「*#0*#」後,就會進入手機的「工程模式」,讓我們可以進行手機的基本測試,在購買三星手機時,不妨可能利用這個技巧來完整測試一下手機功能上是否有問題。

3.4_009.jpg
圖:除了三原色,漸層測試的功能也可以查看手機螢幕的顯色功能是不是正常。

3.4_010.jpg
圖:在「Sensor」測試功能中,舉凡手機的加速偵測器(Accelerometer Sensor)
、近接感知器(Proximity Sensor)、氣壓計(Barometer Sensor)、光源感知器(Lights Sensor)、螺陀儀(Gyroscope Sensor)以及地磁感應器(Magnetic Sensor)都能讓我們一一進行測試。

3.4_011.jpg
圖:在工程模式中的圖像測試功能,有一隻可愛的吉娃娃照片,不知道是哪一位工程師的愛犬呢?



三星工程模式測試功能說明(以Galaxy SIII為例)

Red:螢幕顯示全紅色
Green:螢幕顯示全綠色
Blue:螢幕顯示全藍色
Receiver:聽筒測試
Vibration:手機震動功能測試
Dimming:螢幕顯示三原色的明度漸層
Mega cam:開啟後鏡頭測試
Sensor:各項感知器(Sensor)測試
Touch:觸控螢幕測試
Sleep:待機狀態測試
Speaker:喇叭測試
Sub Key:按鍵測試,按壓不同按鍵時螢幕會顯示不同的顏色
Front cam :前鏡頭測試
LED:LED顯示燈號測試


快速查看IMEI碼與手機韌體版本

查看IMEI碼

手機的「IMEI」碼,其實就和我們的「身份証」功能差不多,因為序號並不會重覆,因此主要是用來識別手機的身份。當我們的手機不幸遺失,我們也需要透過回報「IMEI」碼來報案,讓警察能透過這組號碼,來找出是否有人撿到你的手機、並使用手機進行發話的動作。

3.4_016.jpg
圖:打開手機的「電話」功能,並切換到「鍵盤」分頁,在撥號盤直接輸入「*#06#」後,畫面就會跳出手機的IMEI碼,別忘了把它記下來以備不時之需!



查看手機韌體版本

想要知道自己手機目前的韌體版本是不是最新的嗎?除了透過設定選單來查看,我們也可以透過撥號盤的指令,來查看到完整的手機韌體版本號碼,在手機發生問題時,也能快速與工程人員進行溝通,進行問題的排除。

3.4_017.jpg
圖:打開手機的「電話」功能,並切換到「鍵盤」分頁,在撥號盤直接輸入「*#1234#」後,畫面就會跳出手機的的韌體版本號碼,一共有三組。


如何在Windows的事件檢視器event viewer,查詢開機關機的紀錄

Windows 如何 事件檢視器 查詢開機關機紀錄 Step1: 打開windows的 「 事件檢視器 」,開啟「 建立自訂檢視… 」視窗,在「事件記錄檔」選項,將「Windows 紀錄」內勾選「系統」選項。 Step2: 內含/排除事件識別碼: 」排除事件識別碼打「6005,6...