2017-03-15 12 views

回答

0

更換下方回調方法刪除裏面onKeyDown重寫方法的代碼,並更改setLedValue這樣:

private void setLedValue(boolean value) { 
    try { 
     mLedGpio.setValue(!mLedGpio.getValue()); 
    } catch (IOException e) { 
     Log.e(TAG, "Error updating GPIO value", e); 
    } 
} 

(您可以更好刪除的onkeydown比的onkeyup美好用戶體驗從用戶體驗的角度來看,改變某些關鍵的東西比在第一次按下時更好一些。)


如果你想看到全班改變它看起來像這樣:

public class ButtonActivity extends Activity { 

    private Gpio mLedGpio; 
    private ButtonInputDriver mButtonInputDriver; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     PeripheralManagerService pioService = new PeripheralManagerService(); 
     try { 
      mLedGpio = pioService.openGpio(BoardDefaults.getGPIOForLED()); 
      mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); 

      mButtonInputDriver = new ButtonInputDriver(
        BoardDefaults.getGPIOForButton(), 
        Button.LogicState.PRESSED_WHEN_LOW, 
        KeyEvent.KEYCODE_SPACE); 
      mButtonInputDriver.register(); 
     } catch (IOException e) { 
      throw new IllegalStateException("Error configuring GPIO pins", e); 
     } 
    } 

    @Override 
    public boolean onKeyUp(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_SPACE) { 
      toggleLedValue(); 
      return true; 
     }  
     return super.onKeyUp(keyCode, event); 
    } 

    /** 
    * Update the value of the LED output. 
    */ 
    private void toggleLedValue() { 
     try { 
      mLedGpio.setValue(!mLedGpio.getValue()); 
     } catch (IOException e) { 
      Log.e(TAG, "Error updating GPIO value", e); 
     } 
    } 

    @Override 
    protected void onDestroy(){ 
     super.onDestroy(); 

     mButtonInputDriver.unregister(); 
     try { 
      mButtonInputDriver.close(); 
     } catch (IOException e) { 
      Log.e(TAG, "Error closing Button driver", e); 
     } 

     try { 
      mLedGpio.close(); 
     } catch (IOException e) { 
      Log.e(TAG, "Error closing LED GPIO", e); 
     } 
    } 
} 
+0

我將不得不做出更改麪包板和/或包含或更改電子元件?我問這是因爲:代碼正常工作,但在某些時候,在點擊按鈕關閉LED之後,它會打開和關閉,直到再次單擊按鈕。 – user7643804

+0

不,您不應該進行任何電子變化。是因爲你多次按下'SPACE'而沒有意識到這一點? – Blundell

+0

我需要一個更多的幫助。如何更改此代碼http://pastebin.com/DRpZ0r8x爲了讓LED可以不間斷地訪問,並且我可以打開LED通過按鈕 – user7643804

0

嘗試與ButtonActivity.java

static boolean mToggle ; 
@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_SPACE) { 
      // Turn on the LED 
      mToggle = !mToggle; 
      setLedValue(mToggle); 
      return true; 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

    @Override 
    public boolean onKeyUp(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_SPACE) { 
      // Turn off the LED 
      // setLedValue(false); 
      return true; 
     } 

     return super.onKeyUp(keyCode, event); 
} 
相關問題