我完成了这个项目: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