Listener.java
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             // Really horrible hack till I work out exactly the root cause and fix for
00058             // https://github.com/rosjava/android_remocons/issues/47
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             // Thread interruption
00068         } catch (IOException e) {
00069             // Socket problem
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 //     * Call Toast on UI thread.
00095 //     * @param message Message to show on toast.
00096 //     */
00097 //    private void showToast(final String message)
00098 //    {
00099 //        runOnUiThread(new Runnable()
00100 //        {
00101 //            @Override
00102 //            public void run() {
00103 //                if (lastToast != null)
00104 //                    lastToast.cancel();
00105 //
00106 //                lastToast = Toast.makeText(getBaseContext(), message, Toast.LENGTH_LONG);
00107 //                lastToast.show();
00108 //            }
00109 //        });
00110 //    }
00111 
00112 }


android_remocons
Author(s): Daniel Stonier, Kazuto Murase
autogenerated on Sat Jun 8 2019 19:32:24