求助.编写了一个简单安卓app控制飞行器,但是无法启动.
0
发表于2015-6-14
手机看帖
16
6674
学校的项目,已经有sdk level2的权限.开发环境为andriod studio.
前期目标很简单,开发一个安卓app,可以控制phantom2 的启动电机,和关闭电机.
研究了一下demoapp,写了以下的一个activity,三个按钮,启动groundstation,启动groundstationtask(启动电机),关闭groundstation. 我不确定可不可以直接用maincontroller中的takeoff命令呢?
但是现在app无法启动.
麻烦哪位帮助下.
代码:
public class MainActivity extends ActionBarActivity implements View.OnClickListener {
private Button startGS;
private Button takeOff;
private Button closeGS;
private static final String TAG = "MainActivity";
private final int SHOWTOAST = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("onCreate");
startGS = (Button)findViewById(R.id.btnOpenGS);
takeOff = (Button)findViewById(R.id.btnTakeOff);
closeGS = (Button)findViewById(R.id.btnCloseGS);
startGS.setOnClickListener(this);
takeOff.setOnClickListener(this);
closeGS.setOnClickListener(this);
//initial
onInitSDK();
//check permission
new Thread(){
public void run() {
try {
DJIDrone.checkPermission(getApplicationContext(), new DJIGerneralListener() {
@Override
public void onGetPermissionResult(int result) {
// TODO Auto-generated method stub
Log.e(TAG, "onGetPermissionResult = " + result);
Log.e(TAG, "onGetPermissionResultDescription = " + DJIError.getCheckPermissionErrorDescription(result));
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
protected void onDestroy(){
super.onDestroy();
System.out.println("onDestroy");
// uninitial
onUnInitSDK();
}
private void onInitSDK(){
DJIDrone.initWithType(this.getApplicationContext(), DJIDroneType.DJIDrone_Vision);
DJIDrone.connectToDrone();
}
private void onUnInitSDK(){
DJIDrone.disconnectToDrone();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnOpenGS:
DJIDrone.getDjiMainController().startTakeoff(new DJIExecuteResultCallback() {
@Override
public void onResult(DJIError djiError) {
}
});
// DJIDrone.getDjiCamera().startTakePhoto(new DJIExecuteResultCallback(){
// @Override
// public void onResult(DJIError mErr) {
// Log.d(TAG,"start take photo errorcode:"+mErr.errorCode);
//
// }
// });
// DJIDrone.getDjiGroundStation().openGroundStation(new DJIGroundStationExecuteCallBack(){
//
// @Override
// public void onResult(DJIGroundStationTypeDef.GroundStationResult result) {
// // TODO Auto-generated method stub
// String ResultsString = "return code =" + result.value();
// handler.sendMessage(handler.obtainMessage(SHOWTOAST, ResultsString));
// }
//
// });
// break;
case R.id.btnTakeOff:
DJIDrone.getDjiGroundStation().startGroundStationTask(new DJIGroundStationTakeOffCallBack(){
@Override
public void onResult(DJIGroundStationTypeDef.GroundStationTakeOffResult result) {
// TODO Auto-generated method stub
String ResultsString = "return code =" + result.value();
handler.sendMessage(handler.obtainMessage(SHOWTOAST, ResultsString));
}
});
break;
case R.id.btnCloseGS:
DJIDrone.getDjiGroundStation().closeGroundStation(new DJIGroundStationExecuteCallBack(){
@Override
public void onResult(DJIGroundStationTypeDef.GroundStationResult result) {
// TODO Auto-generated method stub
String ResultsString = "return code =" + result.value();
handler.sendMessage(handler.obtainMessage(SHOWTOAST, ResultsString));
}
});
break;
}
}
private Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case SHOWTOAST:
setResultToToast((String)msg.obj);
break;
default:
break;
}
return false;
}
});
private void setResultToToast(String result){
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
|
|
|
|