Go to the documentation of this file.00001 package com.github.rosjava.android_remocons.listener;
00002
00003 import android.os.Bundle;
00004 import android.util.Log;
00005 import android.view.Menu;
00006 import android.view.MenuItem;
00007 import android.widget.Toast;
00008
00009 import com.github.rosjava.android_remocons.common_tools.apps.RosAppActivity;
00010
00011 import org.ros.android.MessageCallable;
00012 import org.ros.android.view.RosTextView;
00013 import org.ros.node.ConnectedNode;
00014 import org.ros.node.NodeConfiguration;
00015 import org.ros.node.NodeMainExecutor;
00016
00017 import java.io.IOException;
00018
00019 public class Listener extends RosAppActivity
00020 {
00021 private Toast lastToast;
00022 private ConnectedNode node;
00023 private RosTextView<std_msgs.String> rosTextView;
00024
00025 public Listener()
00026 {
00027 super("Listener", "Listener");
00028 }
00029
00031 @Override
00032 public void onCreate(Bundle savedInstanceState)
00033 {
00034 setDefaultMasterName(getString(R.string.default_robot));
00035 setDashboardResource(R.id.top_bar);
00036 setMainWindowResource(R.layout.main);
00037 super.onCreate(savedInstanceState);
00038 }
00039
00040 @Override
00041 protected void init(NodeMainExecutor nodeMainExecutor)
00042 {
00043 String chatterTopic = remaps.get(getString(R.string.chatter_topic));
00044 super.init(nodeMainExecutor);
00045
00046 rosTextView = (RosTextView<std_msgs.String>) findViewById(R.id.text);
00047 rosTextView.setTopicName(getMasterNameSpace().resolve(chatterTopic).toString());
00048 rosTextView.setMessageType(std_msgs.String._TYPE);
00049 rosTextView.setMessageToStringCallable(new MessageCallable<String, std_msgs.String>() {
00050 @Override
00051 public java.lang.String call(std_msgs.String message) {
00052 Log.e("Listener", "received a message [" + message.getData() + "]");
00053 return message.getData();
00054 }
00055 });
00056 try {
00057
00058
00059 Thread.sleep(1000);
00060 java.net.Socket socket = new java.net.Socket(getMasterUri().getHost(), getMasterUri().getPort());
00061 java.net.InetAddress local_network_address = socket.getLocalAddress();
00062 socket.close();
00063 NodeConfiguration nodeConfiguration =
00064 NodeConfiguration.newPublic(local_network_address.getHostAddress(), getMasterUri());
00065 nodeMainExecutor.execute(rosTextView, nodeConfiguration);
00066 } catch(InterruptedException e) {
00067
00068 } catch (IOException e) {
00069
00070 }
00071
00072 }
00073
00074 @Override
00075 public boolean onCreateOptionsMenu(Menu menu)
00076 {
00077 menu.add(0,0,0,R.string.stop_app);
00078 return super.onCreateOptionsMenu(menu);
00079 }
00080
00081 @Override
00082 public boolean onOptionsItemSelected(MenuItem item)
00083 {
00084 super.onOptionsItemSelected(item);
00085 switch (item.getItemId()){
00086 case 0:
00087 finish();
00088 break;
00089 }
00090 return true;
00091 }
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 }