本文介紹如何在J2ME平台和WAP頁面實現電話呼叫的功能。關於WAP和J2ME的區別並不在討論范疇,讀者可以自行查閱資料。 MIDP 1.0中沒有提供電話呼叫的功能。在MIDP 2.0中,javax.microedition.midlet.MIDlet類提供了platformRequest()方法來請求設備來完成特定的請求,請求的內容由platformRequest()方法的String類型的參數url來標識。可能是調用浏覽器打開某個特定的wap頁面,也可以是呼叫電話。在設備資源可用的時候,系統會把MIDlet放在後台執行,而把特定的應用程序,例如電話程序或者浏覽器放在前台來執行。呼叫電話的時候可以使用如下的形式:
try{
this.platformRequest("tel:13810000000");
}catch(ConnectionNotFoundException ex){
ex.printStackTrace();
}
這裡提供了一個簡單的例子,在Nokia 7610(支持MIDP 2.0)上測試通過,成功呼叫了指定的電話。
package com.j2medev.call;
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
*
* @author Administrator
* @version
*/
public class TeleMIDlet extends MIDlet implements CommandListener {
private Display display = null;
private List main = null;
public void startApp() {
if(display == null){
display = Display.getDisplay(this);
main = new List("測試電話功能", List.IMPLICIT);
main.append("13810000000", null);//這裡的電話號碼是虛擬的
main.append("13810000001", null);//這裡的電話號碼是虛擬的
main.setCommandListener(this);
}
display.setCurrent(main);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command cmd,Displayable displayable){
if(cmd == List.SELECT_COMMAND){
String number = main.getString(main.getSelectedIndex());
try{
this.platformRequest("tel:"+number);
}catch(ConnectionNotFoundException ex){
ex.printStackTrace();
}
}
}
}
相比J2ME技術,WAP更類似於Web,是一種服務器端為主的技術。在WML中可以調用設備的WTAI函數來呼叫特定的電話號碼,代碼如下所示:
<input name="phone_no" format="*m" value="13"/>
<do type="option" label="呼出號">
<go href="wtai://wp/mc;$(phone_no)"/>
</do><br/>
或者直接寫入電話號碼的方式:
<a href="wtai://wp/mc;1331597312*">撥打電話</a>
在MIDP 2.0和WAP平台中都對電話呼叫提供了支持,本文進行了簡單的總結,希望對您的實際項目有所幫助。