ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Runtime error "Can't create handler inside thread that has not called Looper.prepare()" in android application

asked 2012-02-11 23:26:33 -0500

Alexandr Buyval gravatar image

updated 2012-02-23 22:05:07 -0500

I am writing android application for control Lego NXT and connect ROS. I use library LeJos for control Lego. I'v got runtime error "Can't create handler inside thread that has not called Looper.prepare()" when run motor NXT from rosjava node:

class NXTNode implements NodeMain {
    public static RemoteMotor motor;

      @Override
      public GraphName getDefaultNodeName() {
        return new GraphName("android/NXTNode");
      }    
      @Override
      public void onStart(final Node node) {

        motor = new Motor().A;
            motor.setPower(60);  
            motor.forward();  

        node.executeCancellableLoop(new CancellableLoop() {
          @Override
          protected void setup() {
          }

          @Override
          protected void loop() throws InterruptedException {
            Thread.sleep(10);
          }
        });
      }           
      @Override
      public void onShutdown(Node node) {
      }
      @Override
      public void onShutdownComplete(Node node) {
      }
    }

Node "NXTNode" I run in

  protected void init(NodeMainExecutor nodeMainExecutor) {
      NodeConfiguration nodeConfiguration =    NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress());
      nodeConfiguration.setMasterUri(getMasterUri());
      nxt_node = new NXTNode();
      nodeMainExecutor.execute(nxt_node, nodeConfiguration);
  }

If I run motor from interface (onClick) then motor is running

public void onClick(View arg0) {                
    motor = new Motor().A;
    motor.setPower(60);
    motor.forward();
}

Where could be the problem? Thank you!

UPDATE:

FATAL EXCEPTION: pool-1-thread-7
java.lang.ExceptionInInitializerError
at org.ros.android.tutorial.pubsub.NXTNode.onStart(NXTNode.java:239)
at org.ros.internal.node.DefaultNode$1.run(DefaultNode.java:422)
at org.ros.internal.node.DefaultNode$1.run(DefaultNode.java:419)
at org.ros.concurrent.ListenerCollection$1.run(ListenerCollection.java:108)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.bluetooth.BluetoothAdapter$1.<init>(BluetoothAdapter.java:1012)
at android.bluetooth.BluetoothAdapter.<init>(BluetoothAdapter.java:1012)
at android.bluetooth.BluetoothAdapter.getDefaultAdapter(BluetoothAdapter.java:340)
at lejos.pc.comm.NXTCommAndroid.search(NXTCommAndroid.java:394)
at lejos.pc.comm.NXTConnector.search(NXTConnector.java:171)
at lejos.pc.comm.NXTConnector.connectTo(NXTConnector.java:222)
at lejos.pc.comm.NXTConnector.connectTo(NXTConnector.java:39)
at lejos.pc.comm.NXTCommandConnector.open(NXTCommandConnector.java:22)
at lejos.pc.comm.NXTCommandConnector.getSingletonOpen(NXTCommandConnector.java:41)
at lejos.nxt.Motor.<clinit>(Motor.java:15)
... 7 more
edit retag flag offensive close merge delete

Comments

Could you post the full stack trace?

damonkohler gravatar image damonkohler  ( 2012-02-23 03:34:20 -0500 )edit

I updated question.

Alexandr Buyval gravatar image Alexandr Buyval  ( 2012-02-23 22:06:42 -0500 )edit

3 Answers

Sort by ยป oldest newest most voted
0

answered 2012-02-25 05:28:50 -0500

Alexandr Buyval gravatar image

I have solved problem. I added Looper.prepare() in method onStart.

public void onStart(final Node node) {
    Looper.prepare(); 
}
edit flag offensive delete link more
0

answered 2013-02-03 19:35:17 -0500

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

I have got some good http://androidexample.com (links)

http://androidexample.com

http://androidexample.com (here) at http://androidexample.com

http://androidexample.com/Thread_With_Handlers_-</p> <p>_Android_Example/index.php?view=article_discription&aid=58&aaid=83

http://androidexample.com/Thread_With_Handlers_-</p> <p>_Android_Example/index.php?view=article_discription&aid=58&aaid=83

http://androidexample.com/Thread_With_Handlers_-</p> <p>_Android_Example/index.php?view=article_discription&aid=58&aaid=83 (Thread_With_Handlers)

edit flag offensive delete link more

Comments

Nice Thread Tutorial, i am new in android , its help me a lot ... I have got some good links here at http://androidexample.com http://androidexample.com/Thread_With_Handlers_-_Android_Example/index.php?view=article_discription&aid=58&aaid=83

androidexample gravatar image androidexample  ( 2013-02-03 20:18:37 -0500 )edit
0

answered 2012-11-07 07:16:33 -0500

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

edit flag offensive delete link more

Question Tools

Stats

Asked: 2012-02-11 23:26:33 -0500

Seen: 38,670 times

Last updated: Feb 03 '13