Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 package com.github.rosjava.android_apps.teleop;
00018
00019 import android.os.Bundle;
00020 import android.view.Menu;
00021 import android.view.MenuItem;
00022 import android.view.View;
00023 import android.widget.Button;
00024
00025 import com.github.rosjava.android_apps.application_management.RosAppActivity;
00026 import org.ros.android.view.RosImageView;
00027 import org.ros.namespace.NameResolver;
00028 import org.ros.node.NodeConfiguration;
00029 import org.ros.node.NodeMainExecutor;
00030 import org.ros.address.InetAddressFactory;
00031 import org.ros.android.BitmapFromCompressedImage;
00032 import org.ros.android.view.VirtualJoystickView;
00033
00037 public class MainActivity extends RosAppActivity {
00038
00039 private RosImageView<sensor_msgs.CompressedImage> cameraView;
00040 private VirtualJoystickView virtualJoystickView;
00041 private Button backButton;
00042 private static final String virtualJoystickTopic = "android/virtual_joystick/cmd_vel";
00043 private static final String cameraTopic = "camera/rgb/image_color/compressed_throttle";
00044
00045
00046 public MainActivity() {
00047
00048
00049
00050 super("android teleop", "android teleop");
00051 }
00052
00053 @SuppressWarnings("unchecked")
00054 @Override
00055 public void onCreate(Bundle savedInstanceState) {
00056
00057 String defaultRobotName = getString(R.string.default_robot);
00058 String defaultAppName = getString(R.string.default_app);
00059 setDefaultRobotName(defaultRobotName);
00060 setDefaultAppName(defaultAppName);
00061 setDashboardResource(R.id.top_bar);
00062 setMainWindowResource(R.layout.main);
00063 super.onCreate(savedInstanceState);
00064
00065
00066 cameraView = (RosImageView<sensor_msgs.CompressedImage>) findViewById(R.id.image);
00067 cameraView.setMessageType(sensor_msgs.CompressedImage._TYPE);
00068 cameraView.setMessageToBitmapCallable(new BitmapFromCompressedImage());
00069 virtualJoystickView = (VirtualJoystickView) findViewById(R.id.virtual_joystick);
00070 backButton = (Button) findViewById(R.id.back_button);
00071 backButton.setOnClickListener(new View.OnClickListener() {
00072 @Override
00073 public void onClick(View view) {
00074 onBackPressed();
00075 }
00076 });
00077 }
00078
00079 @Override
00080 protected void init(NodeMainExecutor nodeMainExecutor) {
00081
00082 super.init(nodeMainExecutor);
00083
00084 NodeConfiguration nodeConfiguration = NodeConfiguration.newPublic(
00085 InetAddressFactory.newNonLoopback().getHostAddress(),
00086 getMasterUri());
00087
00088 NameResolver appNameSpace = getAppNameSpace();
00089 cameraView.setTopicName(appNameSpace.resolve(cameraTopic).toString());
00090 virtualJoystickView.setTopicName(appNameSpace.resolve(virtualJoystickTopic).toString());
00091
00092 nodeMainExecutor.execute(cameraView, nodeConfiguration
00093 .setNodeName("android/camera_view"));
00094 nodeMainExecutor.execute(virtualJoystickView,
00095 nodeConfiguration.setNodeName("android/virtual_joystick"));
00096
00097 nodeConfiguration = NodeConfiguration.newPublic(InetAddressFactory
00098 .newNonLoopback().getHostAddress(), getMasterUri());
00099 }
00100
00101 @Override
00102 public boolean onCreateOptionsMenu(Menu menu){
00103 menu.add(0,0,0,R.string.stop_app);
00104
00105 return super.onCreateOptionsMenu(menu);
00106 }
00107
00108 @Override
00109 public boolean onOptionsItemSelected(MenuItem item){
00110 super.onOptionsItemSelected(item);
00111 switch (item.getItemId()){
00112 case 0:
00113 onDestroy();
00114 break;
00115 }
00116 return true;
00117 }
00118
00119 }