Simple Android Kaa Example

337 views
Skip to first unread message

mohamed elsabagh

unread,
Apr 19, 2016, 12:08:32 PM4/19/16
to Kaa project
I am running very simple kaa example on android phone

package com.delvebyte.myapplication;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import org.kaaproject.kaa.client.AndroidKaaPlatformContext;
import org.kaaproject.kaa.client.Kaa;
import org.kaaproject.kaa.client.KaaClient;
import org.kaaproject.kaa.client.SimpleKaaClientStateListener;
import org.kaaproject.kaa.client.exceptions.KaaException;

public class MainActivity extends AppCompatActivity {

   
private Context mContext;
   
private KaaClient mClient;

   
@Override
    protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView
(R.layout.activity_main);
       
mContext = this;
       
mClient = Kaa.newClient(new AndroidKaaPlatformContext(mContext), new SimpleKaaClientStateListener(){
           
@Override
            public void onStarted(){
               
Toast.makeText(mContext, "Success", Toast.LENGTH_LONG).show();
           
}
           
@Override
            public void onStartFailure(KaaException exception){
               
Toast.makeText(mContext, "Failure", Toast.LENGTH_LONG).show();
           
}
       
});

       
mClient.start();
   
}
}

I am expecting to have a toast telling me if kaa client started successfully or not, but i am not getting any toast, i am not sure what i am doing wrong, the server is running normally
and i can connect to the admin UI from a web browser om my mobile phone is there some steps i should do on the server first? i am running the server built from source code

mohamed elsabagh

unread,
Apr 19, 2016, 1:46:47 PM4/19/16
to Kaa project
04-19 19:37:07.906 3288-3367/com.delvebyte.myapplication I/DefaultFailoverManager: Server [BOOTSTRAP, -1835393002] failed
04-19 19:37:07.907 3288-3367/com.delvebyte.myapplication W/DefaultChannelManager: Attempt to connect to the next bootstrap server will be made in 2000 ms, according to failover strategy decision
04-19 19:37:07.925 3288-3726/com.delvebyte.myapplication I/AbstractHttpChannel: Processing sync all for channel default_bootstrap_channel
04-19 19:37:07.929 3288-3725/com.delvebyte.myapplication E/DefaultBootstrapChannel: Failed to receive operation servers list {}
                                                                                    org
.apache.http.conn.HttpHostConnectException: Connection to http://192.168.1.109:9889 refused
                                                                                        at org
.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:193)
                                                                                        at org
.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
                                                                                        at org
.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
                                                                                        at org
.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
                                                                                        at org
.kaaproject.kaa.client.transport.AndroidHttpClient.executeHttpRequest(AndroidHttpClient.java:67)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel.processTypes(DefaultBootstrapChannel.java:74)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel.access$100(DefaultBootstrapChannel.java:32)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel$BootstrapRunnable.run(DefaultBootstrapChannel.java:49)
                                                                                        at java
.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                                                        at java
.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                        at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                        at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                        at java
.lang.Thread.run(Thread.java:818)
                                                                                     
Caused by: java.net.ConnectException: socket failed: EACCES (Permission denied)
                                                                                        at org
.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190)
                                                                                        at org
.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
                                                                                        at org
.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
                                                                                        at org
.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
                                                                                        at org
.kaaproject.kaa.client.transport.AndroidHttpClient.executeHttpRequest(AndroidHttpClient.java:67)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel.processTypes(DefaultBootstrapChannel.java:74)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel.access$100(DefaultBootstrapChannel.java:32)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel$BootstrapRunnable.run(DefaultBootstrapChannel.java:49)
                                                                                        at java
.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                                                        at java
.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                        at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                        at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                        at java
.lang.Thread.run(Thread.java:818)
                                                                                     
Caused by: java.net.SocketException: socket failed: EACCES (Permission denied)
                                                                                        at libcore
.io.IoBridge.socket(IoBridge.java:619)
                                                                                        at java
.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
                                                                                        at java
.net.Socket.checkOpenAndCreate(Socket.java:689)
                                                                                        at java
.net.Socket.connect(Socket.java:849)
                                                                                        at org
.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:124)
                                                                                        at org
.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:149)
                                                                                        at org
.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
                                                                                        at org
.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
                                                                                        at org
.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
                                                                                        at org
.kaaproject.kaa.client.transport.AndroidHttpClient.executeHttpRequest(AndroidHttpClient.java:67)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel.processTypes(DefaultBootstrapChannel.java:74)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel.access$100(DefaultBootstrapChannel.java:32)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel$BootstrapRunnable.run(DefaultBootstrapChannel.java:49)
                                                                                        at java
.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                                                        at java
.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                        at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                        at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                        at java
.lang.Thread.run(Thread.java:818)
                                                                                     
Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
                                                                                        at libcore
.io.Posix.socket(Native Method)
                                                                                        at libcore
.io.BlockGuardOs.socket(BlockGuardOs.java:282)
                                                                                        at libcore
.io.IoBridge.socket(IoBridge.java:604)
                                                                                        at java
.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
                                                                                        at java
.net.Socket.checkOpenAndCreate(Socket.java:689)
                                                                                        at java
.net.Socket.connect(Socket.java:849)
                                                                                        at org
.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:124)
                                                                                        at org
.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:149)
                                                                                        at org
.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
                                                                                        at org
.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
                                                                                        at org
.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
                                                                                        at org
.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
                                                                                        at org
.kaaproject.kaa.client.transport.AndroidHttpClient.executeHttpRequest(AndroidHttpClient.java:67)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel.processTypes(DefaultBootstrapChannel.java:74)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel.access$100(DefaultBootstrapChannel.java:32)
                                                                                        at org
.kaaproject.kaa.client.channel.impl.channels.DefaultBootstrapChannel$BootstrapRunnable.run(DefaultBootstrapChannel.java:49)
                                                                                        at java
.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                                                        at java
.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                        at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                        at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                        at java
.lang.Thread.run(Thread.java:818)
04-19 19:37:07.930 3288-3725/com.delvebyte.myapplication I/DefaultFailoverManager: Server [BOOTSTRAP, -1835393002] failed
04-19 19:37:07.930 3288-3725/com.delvebyte.myapplication W/DefaultChannelManager: Attempt to connect to the next bootstrap server will be made in 2000 ms, according to failover strategy decision
04-19 19:37:09.949 3288-3372/com.delvebyte.myapplication I/AbstractHttpChannel: Processing sync all for channel default_bootstrap_channel

 this is the log from android studio it seems i can't connect to bootstrap server for some reason although i accept connection on this specific port

mohamed elsabagh

unread,
Apr 20, 2016, 10:11:55 PM4/20/16
to Kaa project
I found the problem is that i forgot to set public interface on the server to my IP address
sudo nano /etc/kaa-node/conf/kaa-node.properties
transport_public_interface=localhost=YOUR_PUBLIC_INTERFACE

Hiten Karamchandani

unread,
May 2, 2017, 8:25:50 AM5/2/17
to Kaa project
Hi Mohamed,

I'm also trying to do the same thing and my ip is also configured properly but still not getting any toast message on screen.

Do you have any tutorial for me to follow ?

I tried with the below code just passing true as third parameter to newclient no other changes.

Regards,
Hiten

mohamed elsabagh

unread,
May 3, 2017, 12:10:15 AM5/3/17
to Kaa project
You can find some tutorial application on the sandbox, just port the code and you should be good to go
Reply all
Reply to author
Forward
0 new messages