@Override protected void onDestroy() { // TODO Auto-generated method stub if (DJIDrone.getDjiCamera() != null) DJIDrone.getDjiCamera().setReceivedVideoDataCallBack(null); mDjiGLSurfaceView.destroy(); if (mCheckModeForPauseTimer != null) { mCheckModeForPauseTimer.cancel(); mCheckModeForPauseTimer.purge(); mCheckModeForPauseTimer = null; } super.onDestroy(); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gs_protocol_joystick_demo); mDjiGLSurfaceView = (DjiGLSurfaceView) findViewById(R.id.DjiSurfaceView_gs); mOpenGsButton = (Button) findViewById(R.id.OpenGsButton); mAddOneWaypointButton = (Button) findViewById(R.id.AddWaypointButton); mUploadWaypointButton = (Button) findViewById(R.id.UploadWaypointButton); mTakeOffButton = (Button) findViewById(R.id.TakeOffButton); mGohomeButton = (Button) findViewById(R.id.GohomeButton); mCloseGsButton = (Button) findViewById(R.id.CloseGsButton); mPauseButton = (Button) findViewById(R.id.PauseButton); mResumeButton = (Button) findViewById(R.id.ResumeButton); mConnectStateTextView = (TextView) findViewById(R.id.ConnectStateGsTextView); mScreenJoystickRight = (OnScreenJoystick) findViewById(R.id.directionJoystickRight); mScreenJoystickLeft = (OnScreenJoystick) findViewById(R.id.directionJoystickLeft); mOneKeyFlyButton = (Button) findViewById(R.id.OneKeyFlyButton); mOpenGsButton.setOnClickListener(this); mAddOneWaypointButton.setOnClickListener(this); mUploadWaypointButton.setOnClickListener(this); mTakeOffButton.setOnClickListener(this); mGohomeButton.setOnClickListener(this); mCloseGsButton.setOnClickListener(this); mPauseButton.setOnClickListener(this); mResumeButton.setOnClickListener(this); mOneKeyFlyButton.setOnClickListener(this); mScreenJoystickLeft.setJoystickListener( new OnScreenJoystickListener() { @Override public void onTouch(OnScreenJoystick joystick, float pX, float pY) { // TODO Auto-generated method stub // Log.d(TAG ,"mScreenJoystickLeft "+pX+" "+pY); int YawJoyControlMaxSpeed = 500; yaw = (int) (YawJoyControlMaxSpeed * pX); throttle = 0; if (pY > 0) { throttle = 1; } else if (pY <= -0.9) { // if(pY == -1){ // throttle = 2; // } throttle = 2; } // new Thread() // { // public void run() // { DJIDrone.getDjiGroundStation() .setAircraftJoystick( yaw, pitch, roll, throttle, new DJIGroundStationExecuteCallBack() { @Override public void onResult(GroundStationResult result) { // TODO Auto-generated method stub } }); // } // }.start(); } }); mScreenJoystickRight.setJoystickListener( new OnScreenJoystickListener() { @Override public void onTouch(OnScreenJoystick joystick, float pX, float pY) { // TODO Auto-generated method stub // Log.d(TAG ,"mScreenJoystickRight "+pX+" "+pY); int PitchJoyControlMaxSpeed = 1000; int RollJoyControlMaxSpeed = 1000; pitch = (int) (PitchJoyControlMaxSpeed * pY); roll = (int) (RollJoyControlMaxSpeed * pX); // Log.d(TAG ,"mScreenJoystickRight pitch="+pitch); // Log.d(TAG ,"mScreenJoystickRight roll="+roll); // new Thread() // { // public void run() // { DJIDrone.getDjiGroundStation() .setAircraftJoystick( yaw, pitch, roll, throttle, new DJIGroundStationExecuteCallBack() { @Override public void onResult(GroundStationResult result) { // TODO Auto-generated method stub } }); // } // }.start(); } }); mDjiGLSurfaceView.start(); mReceivedVideoDataCallBack = new DJIReceivedVideoDataCallBack() { @Override public void onResult(byte[] videoBuffer, int size) { // TODO Auto-generated method stub mDjiGLSurfaceView.setDataToDecoder(videoBuffer, size); } }; DJIDrone.getDjiCamera().setReceivedVideoDataCallBack(mReceivedVideoDataCallBack); mMcuUpdateStateCallBack = new DJIMcuUpdateStateCallBack() { @Override public void onResult(DJIMainControllerSystemState state) { // TODO Auto-generated method stub // Log.e(TAG, "DJIMainControllerSystemState homeLocationLatitude " // +state.homeLocationLatitude); // Log.e(TAG, "DJIMainControllerSystemState homeLocationLongitude " // +state.homeLocationLongitude); homeLocationLatitude = state.homeLocationLatitude; homeLocationLongitude = state.homeLocationLongitude; aircraftLocationLatitude = state.droneLocationLatitude; aircraftLocationLongitude = state.droneLocationLongitude; isFlying = state.isFlying; if (homeLocationLatitude != -1 && homeLocationLongitude != -1 && homeLocationLatitude != 0 && homeLocationLongitude != 0) { getHomePiontFlag = true; } else { getHomePiontFlag = false; } } }; DJIDrone.getDjiMC().setMcuUpdateStateCallBack(mMcuUpdateStateCallBack); mGroundStationFlyingInfoCallBack = new DJIGroundStationFlyingInfoCallBack() { @Override public void onResult(DJIGroundStationFlyingInfo flyingInfo) { // TODO Auto-generated method stub // Log.e(TAG, "DJIGroundStationFlyingInfo homeLocationLatitude " // +flyingInfo.homeLocationLatitude); // Log.e(TAG, "DJIGroundStationFlyingInfo homeLocationLongitude " // +flyingInfo.homeLocationLongitude); mFlightMode = flyingInfo.flightMode; } }; DJIDrone.getDjiGroundStation() .setGroundStationFlyingInfoCallBack(mGroundStationFlyingInfoCallBack); mTask = new DJIGroundStationTask(); vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); }