2009-12-03 49 views
1

我有一個簡單的黑莓應用程序,用於更改LED設置(顏色,閃爍,模式)。 我目前的測試環境包含一個黑莓Bold(9000),我一直在遇到一個問題,我不知道如何繼續。如何將LED配置重置爲原始設置

假設我目前的Blackberry設置(LED明智)不會閃爍,除非有未接來電,新消息(各種類型)。我寫的程序會改變LED,這很好,但問題在於關閉程序。關閉程序會導致保存/放棄/取消對話框出現。現在,這不是問題,因爲我只測試應用程序,目前的問題是,即使您放棄所做的更改,指示燈也會繼續閃爍。我演示了一個朋友的程序,它一直在閃爍,我也注意到當我收到一條新消息時,燈光變爲紅色並保持閃爍(而不是Green,這是我在演示中顯示的最後一種顏色)。

退出程序時,如何將LED重置爲之前的狀態?應該還是可以複製現有設置(如在網絡可用時閃爍或不閃爍),然後在退出時重置爲已保存的默認設置?還是有更好的重置LED的方法?

代碼很簡單;觀點:

public HomeScreen(boolean error) { 
    redLED = new CustomButtonField("RED", Color.RED, Color.BLACK, Color.BLACK, 
      Color.WHITE, Field.FOCUSABLE); 
    add(redLED); 
    blueLED = new CustomButtonField("BLUE", Color.RED, Color.BLACK, Color.BLACK, 
      Color.WHITE, Field.FOCUSABLE); 
    add(blueLED); 
    whiteLED = new CustomButtonField("WHITE", Color.RED, Color.BLACK, Color.BLACK, 
      Color.WHITE, Field.FOCUSABLE); 
    add(whiteLED); 
    greenLED = new CustomButtonField("GREEN", Color.RED, Color.BLACK, Color.BLACK, 
      Color.WHITE, Field.FOCUSABLE); 
    add(greenLED); 
    redLED.setChangeListener(this); 
    blueLED.setChangeListener(this); 
    whiteLED.setChangeListener(this); 
    greenLED.setChangeListener(this); 
} 

public HomeScreen(long arg0) 
{ 
    super(arg0); 
    // TODO Auto-generated constructor stub 
} 

public void fieldChanged(Field field, int context) 
{   

     LED.setState(LED.LED_TYPE_STATUS, LED.STATE_BLINKING); 

     if(field == redLED) { 
      LED.setColorConfiguration(500,5000,Color.RED); 
     } 
     if(field == blueLED) { 
      LED.setColorConfiguration(500,5000,Color.BLUE); 
     } 
     if(field == whiteLED) { 
      LED.setColorConfiguration(500,5000,Color.WHITE); 
     } 
     if(field == greenLED) { 
      LED.setColorConfiguration(500,5000,Color.GREEN); 
     } 

} 

回答

2

當您退出屏幕要擺脫保存/丟棄/取消對話框,你需要覆蓋在屏幕上的onSavePrompt()方法。你也可以在這裏放置一些你想在用戶離開屏幕時執行的代碼。例如,你可能會想嘗試:

protected boolean onSavePrompt() { 
    LED.setState(LED.STATE_OFF); 
    return true; 
} 
+0

這樣做解決問題的保存對話框,並關閉LED,但有可能郵件到達或閃存當我有當重置LED說,閃光報道?那麼有可能做到這一點。 – 2009-12-08 04:01:02

+1

如果您希望程序在所有屏幕彈出堆棧後繼續在後臺運行,則需要在您的onClose()方法中調用類似於「Application.getApplication()。requestBackground()」的內容屏幕。 – 2009-12-08 06:31:40

+0

將從bb菜單再次打開程序是否會創建應用程序的新實例,還是隻會將應用程序放到前臺,並在堆棧中顯示新屏幕? – 2009-12-10 05:05:30