我完成了這個項目:sample-button
但我需要改變這一點,當我按下按鈕,只是按下按鈕後,再次按鈕。Android的東西 - 如何保持領導不間斷的指令後mLedGpio.setValue(true)
如何才能做到這一點?
我完成了這個項目:sample-button
但我需要改變這一點,當我按下按鈕,只是按下按鈕後,再次按鈕。Android的東西 - 如何保持領導不間斷的指令後mLedGpio.setValue(true)
如何才能做到這一點?
更換下方回調方法刪除裏面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);
}
}
}
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);
}
我將不得不做出更改麪包板和/或包含或更改電子元件?我問這是因爲:代碼正常工作,但在某些時候,在點擊按鈕關閉LED之後,它會打開和關閉,直到再次單擊按鈕。 – user7643804
不,您不應該進行任何電子變化。是因爲你多次按下'SPACE'而沒有意識到這一點? – Blundell
我需要一個更多的幫助。如何更改此代碼http://pastebin.com/DRpZ0r8x爲了讓LED可以不間斷地訪問,並且我可以打開LED通過按鈕 – user7643804