今回は前回作ったクラス
MiniDroneを拡張しドローンを右方移動・左方移動させます。
MiniDroneクラスに右方移動・左方移動の機能を実装します、ドローンの右方移動・左方移動には下記のメソッドを使用します。
ARFeatureMiniDrone
|
setPilotingPCMDRoll(byte roll)
|
ドローンの右方移動・左方移動させる。
-
byte roll:[-100,100]の間で値を設定する。
正数で右方移動し、負数で左方移動する。 右方移動・左方移動を止める場合は0を設定する。
|
このメソッドを用いて、ドローンの右方移動・左方移動を行うsetPilotingPCMDRollを実装します。
public void setPitch(byte pitch) {
if ((mDeviceController != null) && (mState.equals(ARCONTROLLER_DEVICE_STATE_ENUM.ARCONTROLLER_DEVICE_STATE_RUNNING))) {
mDeviceController.getFeatureMiniDrone().setPilotingPCMDRoll(pitch);
}
}
2-右方移動・左方移動するためにMiniDroneActivityを拡張しよう
1-Viewを初期化する
Viewを初期化するinitializeViewを修正し、ドローンを右方移動・左方移動させるbuttonRollRightとbuttonRollLeftを実装します。
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);
// 右旋回ボタン
findViewById(R.id.buttonYawRight).setOnTouchListener(yawRightListener);
// 左旋回ボタン
findViewById(R.id.buttonYawLeft).setOnTouchListener(yawLeftOnTouchListener);
// 前方移動ボタン
findViewById(R.id.buttonForward).setOnTouchListener(forwardOnTouchListener);
// 後方移動ボタン
findViewById(R.id.buttonBack).setOnTouchListener(backOnTouchListener);
// 右方移動ボタン
findViewById(R.id.buttonRollRight).setOnTouchListener(rollRightOnTouchListener);
// 左方移動ボタン
findViewById(R.id.buttonRollLeft).setOnTouchListener(rollLeftOnTouchListener);
}
2-ドローンに右方移動命令を出すボタン(id:buttonRollRight)を実装
右方移動ボタンを触っている間はドローンを右方向移動させ、指を外すと停止します。
/**
* 右移動ボタンのリスナー
*/
private View.OnTouchListener rollRightOnTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setPressed(true);
mMiniDrone.setRoll((byte) 50);
mMiniDrone.setFlag((byte) 1);
break;
case MotionEvent.ACTION_UP:
v.setPressed(false);
mMiniDrone.setRoll((byte) 0);
mMiniDrone.setFlag((byte) 0);
break;
default:
break;
}
return true;
}
};
3-ドローンに左方移動命令を出すボタン(id:buttonRollLeft)を実装
左方移動ボタンを触っている間はドローンを左方向移動させ、指を外すと停止します。
/**
* 左移動ボタンのリスナー
*/
private View.OnTouchListener rollLeftOnTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setPressed(true);
mMiniDrone.setRoll((byte) -50);
mMiniDrone.setFlag((byte) 1);
break;
case MotionEvent.ACTION_UP:
v.setPressed(false);
mMiniDrone.setRoll((byte) 0);
mMiniDrone.setFlag((byte) 0);
break;
default:
break;
}
return true;
}
};
3-まとめ
今回はドローンを右方移動・左方移動を実装しました。