2009-06-03 72 views

回答

3

那麼,這樣做的唯一標準方法是通過JSR-256。移動傳感器API。
您可以從http://www.jcp.org/en/jsr/detail?id=256

的規格書中閱讀不幸的是,它是非常新的,並沒有在大多數零售手機中實際實施。

當它出貨時,索尼愛立信Satio(或Idou)將擁有它。

編輯:諾基亞N97擁有JSR-256,它可以在諾基亞N85和諾基亞5800可以安裝

編輯:Here's Attilah's other JSR-256 question with some code in the answer.

2

我不確定是否有通過J2ME的通用方法。

隨着Nokia and its properties,你可以(Get Battery Level in J2ME):

System.getProperty("com.nokia.mid.batterylevel"); 

通用屬性,as illustrated here,並不總是有效(可以返回null)

一些系統屬性的可能返回null,因爲它們可能在早期設備上不受支持,並且某些系統屬性要求MIDlet被信任,否則返回null ...

import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 
import javax.microedition.location.*; 

public class HelloMidp extends MIDlet implements CommandListener { 
    private Command exitCommand; 

    Display display; 
    Form mainForm; 

    public HelloMidp() { 
     exitCommand = new Command("Exit", Command.EXIT, 1); 
     mainForm = new Form ("HelloMidp"); 
     String batt = System.getProperty("batterylevel"); 
     mainForm.append (batt); 
    } 

    protected void startApp() 
    { 
     mainForm.addCommand(exitCommand); 
     mainForm.setCommandListener(this); 
     Display.getDisplay(this).setCurrent(mainForm); 
    } 

    protected void pauseApp() {} 
    protected void destroyApp(boolean bool) {} 
    public void commandAction(Command cmd, Displayable disp) 
    { 
     if (cmd == exitCommand) { 
      destroyApp(false); 
      notifyDestroyed(); 
     } 
    } 
} 
+0

感謝。我還想知道是否可以使用諾基亞套件檢測電源中斷事件。 – Attilah 2009-06-03 12:09:49

+0

AFAIK,並非所有諾基亞手機都提供此功能。如果你拿其他手機的情況下,有些甚至可能會要求你簽署構建。實現中的許多差異導致了所謂的「設備碎片化」。可惜的是,手機廠商仍然在討論這個問題,因爲MIDP 1.0 – Ram 2009-06-03 18:19:02

0

我敢肯定,這取決於什麼手機和操作系統您處理上用。沒有做過任何J2ME開發,我希望能夠提供某種「環境」或「系統」服務來提供這類信息。

0

article描述瞭如何在Sony Ericson手機上使用JSR 256來讀取電池電量,網絡覆蓋範圍和一些其他感興趣的傳感器數據。來自JP8.3以後的支援。

,做的伎倆代碼:

SensorInfo[] batteryInfo = SensorManager.findSensors("battery_charge", null); 
SensorConnection sensor = (SensorConnection)Connector.open(batteryInfo[0].getUrl()); 
Data data[] = sensor.getData(1); 
String batteryLevel = "Current charge level: "+data[0].getIntValues()[0];