今回は前回作ったクラス
MiniDroneを拡張しドローンを上昇・下降させます。
MiniDroneクラスに上昇・下降の機能を実装します、ドローンの上昇・下降には下記のメソッドを使用します。
ARFeatureMiniDrone
|
setPilotingPCMDGaz(byte gaz)
|
スロットル操作を行いドローンの垂直方向移動を行う。
-
byte gaz:[-100,100]の間で値を設定する。
正数で上昇し、負数で下降する。 上昇・下降を止める場合は0を設定する。
|
このメソッドを用いて、上昇・下降を行うsetGazを実装します。
public void setGaz(byte gaz) {
if ((mDeviceController != null) && (mState.equals(ARCONTROLLER_DEVICE_STATE_ENUM.ARCONTROLLER_DEVICE_STATE_RUNNING))) {
mDeviceController.getFeatureMiniDrone().setPilotingPCMDGaz(gaz);
}
}
2-MiniDroneActivityを拡張しよう
1-Viewを初期化する
Viewを初期化するinitializeViewを修正し、上昇・下降を行うbuttonGazUpとbuttonGazDownを実装します。
private void initializeView() {
//ログ用のTextViewをインスタンス化
mMessageLabel = (TextView) findViewById(R.id.textMessage);
//離着陸ボタンをインスタンス化
mTakeOffOrLanButton = (Button) findViewById(R.id.buttonLandOrTakeOff);
//離着陸ボタンのクリックリスナーを設定
mTakeOffOrLanButton.setOnClickListener(takeOnOffOnClickListener);
findViewById(R.id.buttonGazUp).setOnTouchListener(gazUpOnTouchListener);
findViewById(R.id.buttonGazDown).setOnTouchListener(gazDownOnTouchListener);
}
2-id:buttonGazUpを実装
上昇ボタンを触っている間は上昇し、指を外すと上昇が停止します。
/**
* 上昇ボタンのリスナー
*/
private View.OnTouchListener gazUpOnTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setPressed(true);
mMiniDrone.setGaz((byte) 50);
break;
case MotionEvent.ACTION_UP:
v.setPressed(false);
mMiniDrone.setGaz((byte) 0);
break;
default:
break;
}
return true;
}
};
3-id:buttonGazDownを実装
下降ボタンを触っている間は下降し、指を外すと下降が停止します。
また、下降しすぎて地面に接地した場合は着陸状態になります。
/**
* 下降ボタンのリスナー
*/
private View.OnTouchListener gazDownOnTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setPressed(true);
mMiniDrone.setGaz((byte) -50);
break;
case MotionEvent.ACTION_UP:
v.setPressed(false);
mMiniDrone.setGaz((byte) 0);
break;
default:
break;
}
return true;
}
};
3-まとめ
今回は上昇・下降を実装しました。