2010年4月24日 星期六

如何設定無線網路

網友的無線網路資訊範本

http://www.anddev.org/wifiscanner-t4099.html

如何在ubuntu 9.10啟動手機USB 除錯模式

gksudo gedit /etc/udev/rules.d/51.android.rules

開新檔案後,輸入

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"

儲存

重新載入USB 設備

sudo /etc/init.d/udev reload

移除USB後再插入,並執行

adb devices 後會看到
* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
HT95PKF00221 device

回到eclipse 就可以看到

如何取得無線ip

如何使用WifiInfo 來取得無線網卡的IP位置

...前面省略
WifiManager wifiManager;
WifiInfo wifiInfo;
EditText txtInfo;
String strAddress;

@Override

Public void onCreate(Bundle saveInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

try {

wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
//完成了這裏會出現第一個錯誤,錯誤的內容忘了,但是要加下列的東東
strAddress = new Integer(ipAddress).toString();

//將資訊放入EditText就可以了
textInfo.setText(strAddress.toString());

} catch {
Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT).show();
Log.d(e.getMessage().toString(),"訊息");
}
}

完成上述的程式之後,其實一直都沒有辨法成功的執行程式,e.getMessage()是後來才加入。
也是在加入之後出現了錯誤訊息

neither user 10025 nor current process has android.permission.ACCESS_WIFI_STATE

谷了一下才知道原來是沒有開啟 WIFI狀態的讀取權限
就開啟了 AndroidManifest.xml 並加入了權限宣告

<application>
</application>
<uses-permission name="android.permission.ACCESS_WIFI_STATE" />

需注意的是要加在application 的外層。如果誤加在application內層會無法動作

2010年4月4日 星期日

如何另開畫面

在開發程式的過程式,常常都會遇到的功能就是開啟另一視窗。
在android也不例外。

一般開啟另一畫面有分為三種
1.僅開啟新視窗
2.開啟新視窗並將上一視窗資料帶入新視窗內
3.開啟新視窗並將上一視窗資料帶入新視窗內,待新視窗關閉時再將新視窗的結果回傳原視窗

此文件先以1僅開啟新視窗說明
環境
eclipse3.5
android sdk r6
project name : test

**建立一新視窗需分三部份
i.activity (程式碼部份)
ii.layout (畫面部份) / values (常數部份)
iii.Mainfest (加入主架構部份)

i.activity (程式碼部份)
在eclise3.5中開一新的class ( file / new / Class ) 並鍵入資料如下
Source folder : test/src
Package : 按Browser 後選 com.xxx.android.test xxx 依開發者命名
Name : 輸入新視窗的名稱.例如 win1
Superclass : 按Browser後在Choose a type 輸入activity.此時下方的Matching items會顯示可能的選項,在這選擇 Activity - android.app並按下右下角的ok回上一對話框.
此時Superclass會出現android.app.Activity, 按畫面右下方的finish.
eclise 會在src/com.xxx.android.test中產生檔案 win1.java

ii.layout (畫面部份)
在eclipse3.5中開一新的 Android XML File. ( file / new / Android XML File )
File : win1.xml (必需輸入副檔名才行)
What type of resource would you like to create ? 選 Layout
(當設計者選擇layout,待完成此步驟時eclipse 會將win1.xml放入Layout的路徑中 )
按下畫面右下方的finish完成畫面的設定檔. 此時新視窗為一空視窗,尚無任何元件.


** 此步驟同上一步驟.唯一不同的是上一步驟是選Layout 此步驟是選Values.

在eclipse3.5中開一新的 Android XML File. ( file / new / Android XML File )
File : win1.xml (必需輸入副檔名才行)
What type of resource would you like to create ? 選 Layout
(當設計者選擇Values,待完成此步驟時eclipse 會將win1.xml放入Values的路徑中 )
按下畫面右下方的finish完成畫面的設定檔. 此時新視窗為一空視窗,尚無任何元件.


iii.整合入主架構中
在eclipse 的 Project 根路徑中會有一檔案.檔名為 AndroidMainfest.xml.開啟此檔案
在此檔案中有一區段是

......

接在後面輸入

輸入的文字中有一段 @string/win1_title指的是新視窗的tilte要顯示的文字.
剛剛畫面設定中我們有建立了兩個檔案,一個是 Layout/win1.xml 和Values/win1.xml
這個title的文字要在Values/win1.xml中設定。
在這個先完成AndroidMainfest.xml的設定,也就是說在輸入完上面那一行後,將檔案儲存並關閉即可.

接下來打開Values / win1.xml
之間輸入
我是新視窗
完成後按儲存並關閉檔案

最後也就是最重要的步驟就是在原視窗的按鈕中加入程式碼
在 test/src/com.xxx.android.test中開啟 Test.java

在onCreate的外層加入 按鈕和動作的宣告
Button btnWin1;
OnClickListener listener1;

在OnCreate中設定如下
btnWin1 = (Button)findViewById(R.id.btnWin1);
btnWin1.setOnClickListener(listener1;
listener1 = new OnClickListener() {
Public void onClick(View v){
Intent intent = new Intent();
intent.setClass(test.this, win1.class);
startActivity(intent);
}
}; /* 這裏的分號不要忘記了 */


儲存後就完成了。

一開始文章中有提到,另開視窗有分為三種,以上的說明為第一種。
至於其他的兩種就會用到所謂的 Intent 啦
因為不論是要傳送到新視窗或從新視窗傳回資料,都要先將資料用Intent包裝好再傳送到各個activity中.回顧一下剛剛我們在按鈕中設定時有用到intent 就可以了解.