A simple chat demo for socket.io and Android

Overview

socket.io-android-chat

This is a simple chat demo for socket.io and Android. You can connect to https://socket-io-chat.now.sh using this app.

Installation

  1. Clone the project.
  2. In Android Studio, chose File > Import Project and select the root folder of the project. Android Studio may ask you to choose the type of project you are importing. If this is the case, make sure to choose Import project from external model and select the Gradle option.

Tutorial

http://socket.io/blog/native-socket-io-and-android/

Misc

https://github.com/socketio/socket.io/issues/2823

License

MIT

Comments
  • Proguard Issue

    Proguard Issue

    I am getting below response when proguard is turned off.

    [{ "nameValuePairs": { "message": "Hello I am message" } }]

    But when I enable proguard, received below message: [{ "a": { "message": "Hello I am Message" } }]

    I have added proguard rules for gson and my model package. The only nameValuePairs key is replaced by a, other keys are fine as it should be. Has anyone faced the same issue with proguard?

    opened by munnadroid 6
  • External messages to left

    External messages to left

    Hi, I would show external messages from the outside on the left side of the screen and messages sent by the myself on the right side of the screen. I've created two different item_message for the right side and for the left side, but I don't know how to implement this. Could you help me with a code snippet? Thank you in advance.

    opened by EpsilonOrionis 3
  • event listener callback is not being called, but visible in android profiler

    event listener callback is not being called, but visible in android profiler

    Using socket io for my app to trigger certain events, I am listening to custom events and able to listen many other of them but one of them is not being listened. Even though I am able to see that event on Android Profiler Network but the listener is not being called.

    The listening method for all the events are same and as I said earlier I am able to listen all other events other than only this event named "pair"

    opened by SyedSumair 2
  • Receiving Arrays from server

    Receiving Arrays from server

    One of my custom events "updateUserList" returns a array of users currently active in the application. Is there a way I can get that array on the client side?

    My server is sending data as socket.emit('updateUserList', activeUsersArray);

    However, the sample code demonstrates that the data has to be (I could be wrong) a JSONObject. JSONObject data = (JSONObject) args[0];

    opened by shubhendumadhukar 2
  • Upgraded to Api25 and got it to work with https://socketio-chat.now.sh/

    Upgraded to Api25 and got it to work with https://socketio-chat.now.sh/

    Details here: https://github.com/lakamsani/socket.io-android-chat/commit/5a4a5144e4501b89f2a7bd03290045f9a707b0e7

    Also see https://github.com/socketio/socket.io/issues/2823

    opened by lakamsani 2
  • Android create single service instance

    Android create single service instance

    Hi all. in my application i cant create simple single service to connect to Socket, in my application after first run application i can emmit one request, but after close application and run again, my app send twice request to socket.io, and after clear app from recent application, that send multiple request to socket.io. please help me to create single service to create one connection, Thanks

    My Service:

    public class SignalChatServiceProvider extends Service {
        public static      SignalChatServiceProvider instance                    = null;
    
        public static boolean isInstanceCreated() {
            return instance == null ? false : true;
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            return myBinder;
        }
    
        private final IBinder myBinder = new LocalBinder();
    
        public class LocalBinder extends Binder {
            public SignalChatServiceProvider getService() {
                return SignalChatServiceProvider.this;
            }
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            realm = Realm.getDefaultInstance();
            signalApplication = (SignalApplication) getApplication();
            EventBus.getDefault().register(this);
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            super.onStartCommand(intent, flags, startId);
            connectConnection();
            Log.e("EJRA...", "");
            return START_STICKY;
        }
    
    
        private Runnable onTypingTimeout = new Runnable() {
            @Override
            public void run() {
    
            }
        };
    
        private void connectConnection() {
    
            instance = this;
            signalApplication.CHAT_SOCKET = signalApplication.getSocket();
            signalApplication.getSocket().on(Socket.EVENT_CONNECT_ERROR, onConnectError);
            signalApplication.getSocket().on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
            signalApplication.getSocket().on(Socket.EVENT_CONNECT, onConnect);
    
            signalApplication.getSocket().on("new message", onNewMessage);
            signalApplication.getSocket().on("user joined", onUserJoined);
            signalApplication.getSocket().on("getProductImages", getProductImages);
    
            signalApplication.getSocket().connect();
        }
    
        private void disconnectConnection() {
            instance = null;
    
            signalApplication.getSocket().disconnect();
    
            signalApplication.getSocket().off(Socket.EVENT_CONNECT, onConnect);
            signalApplication.getSocket().off(Socket.EVENT_DISCONNECT, onDisconnect);
            signalApplication.getSocket().off(Socket.EVENT_CONNECT_ERROR, onConnectError);
            signalApplication.getSocket().off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
            signalApplication.getSocket().off("new message", onNewMessage);
            signalApplication.getSocket().off("user joined", onUserJoined);
            signalApplication.getSocket().off("getProductImages", getProductImages);
    
            signalApplication.getSocket().disconnect();
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
    
            disconnectConnection();
    
            if (!realm.isClosed())
                realm.close();
        }
    }
    

    ActivityMain:

        if (signalApplication.getSocket() != null && !SignalChatServiceProvider.isInstanceCreated()) {
            startService(new Intent(getBaseContext(), SignalChatServiceProvider.class));
        }
    

    Application class:

    public class SignalApplication extends Application {
    
        public static List<MarketsBaseInformation> market_list_cache_data;
        public static Socket                       CHAT_SOCKET;
    
        @Override
        public void onCreate() {
            super.onCreate();
    
            resources = this.getResources();
            context = getApplicationContext();
    
            IO.Options opts = new IO.Options();
            opts.forceNew = true;
            opts.reconnection = true;
    
            try {
                CHAT_SOCKET = IO.socket(ClientSettings.getChatAddress(), opts);
            } catch (URISyntaxException e) {
                e.printStackTrace();
                Log.e("SOCKET.IO ", e.getMessage());
            }
    
    
        }
    
        public Socket getSocket() {
            return CHAT_SOCKET;
        }
    }
    
    opened by pishguy 2
  • Can not setup port with IO.Options

    Can not setup port with IO.Options

    Hello,

    I can't setup port with IO.Options in Android, When socket.connect(), it always connect to port 80,

    try to add port in host url > "http://host : port", but useless, and i use example both Node.js server

    and Android, Node.js can get port 3000, Android's socket.connect() can't...

    Could someone know this issue ? many thanks!!

    question 
    opened by cougar0828 2
  • fixed the issue of not handling when the user gets disconnected

    fixed the issue of not handling when the user gets disconnected

    I used your demo app to create my own socket.io application which is when I found an issue in your app. When a user gets disconnected while chatting due to internet connection etc, even after socket is connected back the user cannot send any messages. In my commit I have handled that error. If you permit my commit to merge with yours it would help people a lot. Thank you for the demo app.

    opened by sanchitgarg1909 2
  • All those static fields deleted and their content changed to buildConfigFields in gradle

    All those static fields deleted and their content changed to buildConfigFields in gradle

    hey! congratulations, it's a great example, I learned too much with it and I would like to help you turning this code lighter then I deleted that constant class and static fields in message model and just created some buildConfigsFields in gradle to make your example more organized. Great example! thank you!

    opened by bloderxd 2
  • Unable to run after adding gradle dependency for Android Studio, in build.gradle

    Unable to run after adding gradle dependency for Android Studio, in build.gradle

    BUILD SUCCESSFUL upon adding on dependencies

    dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.google.code.gson:gson:2.2.4' compile 'com.android.support:appcompat-v7:21.0.3' compile 'org.apache.commons:commons-lang3:3.1' compile 'org.apache.commons:commons-collections4:4.0' compile 'com.google.android.gms:play-services:6.1.+' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3' compile 'com.facebook.android:facebook-android-sdk:3.23.1' compile 'com.github.manuelpeinado.fadingactionbar:fadingactionbar:3.1.2' compile 'com.android.support:cardview-v7:21.0.+' compile 'com.android.support:recyclerview-v7:+' compile 'com.etsy.android.grid:library:1.0.5' compile 'com.astuetz:pagerslidingtabstrip:1.0.1' compile 'com.melnykov:floatingactionbutton:1.3.0' compile('org.apache.httpcomponents:httpmime:4.3.6') { exclude module: 'httpclient' } compile 'org.apache.httpcomponents:httpclient-android:4.3.5' compile('com.twitter.sdk.android:twitter:1.8.0@aar') { transitive = true; } compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') { transitive = true; }

    compile 'io.socket:socket.io-client:0.6.1'
    

    }


    After I Run the app.I get this error...


    Executing tasks: [:app:assembleDebug]

    Configuration on demand is an incubating feature. WARNING: Dependency org.json:json:20090211 is ignored for debug as it may be conflicting with the internal version provided by Android. In case of problem, please repackage with jarjar to change the class packages WARNING: Dependency org.json:json:20090211 is ignored for debug as it may be conflicting with the internal version provided by Android. In case of problem, please repackage with jarjar to change the class packages WARNING: Dependency org.json:json:20090211 is ignored for release as it may be conflicting with the internal version provided by Android. In case of problem, please repackage with jarjar to change the class packages WARNING: Dependency org.json:json:20090211 is ignored for release as it may be conflicting with the internal version provided by Android. In case of problem, please repackage with jarjar to change the class packages :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE :app:prepareComAndroidSupportCardviewV72103Library UP-TO-DATE :app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE :app:prepareComAstuetzPagerslidingtabstrip101Library UP-TO-DATE :app:prepareComCrashlyticsSdkAndroidAnswers132Library UP-TO-DATE :app:prepareComCrashlyticsSdkAndroidBeta113Library UP-TO-DATE :app:prepareComCrashlyticsSdkAndroidCrashlytics252Library UP-TO-DATE :app:prepareComCrashlyticsSdkAndroidCrashlyticsCore235Library UP-TO-DATE :app:prepareComDigitsSdkAndroidDigits180Library UP-TO-DATE :app:prepareComEtsyAndroidGridLibrary105Library UP-TO-DATE :app:prepareComFacebookAndroidFacebookAndroidSdk3231Library UP-TO-DATE :app:prepareComGithubManuelpeinadoFadingactionbarFadingactionbar312Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServices6171Library UP-TO-DATE :app:prepareComMelnykovFloatingactionbutton130Library UP-TO-DATE :app:prepareComTwitterSdkAndroidTweetComposer090Library UP-TO-DATE :app:prepareComTwitterSdkAndroidTweetUi150Library UP-TO-DATE :app:prepareComTwitterSdkAndroidTwitter180Library UP-TO-DATE :app:prepareComTwitterSdkAndroidTwitterCore150Library UP-TO-DATE :app:prepareIoFabricSdkAndroidFabric136Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:generateDebugBuildConfig UP-TO-DATE :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:mergeDebugResources UP-TO-DATE :app:processDebugManifest UP-TO-DATE :app:fabricGenerateResourcesDebug :app:processDebugResources :app:generateDebugSources :app:processDebugJavaRes UP-TO-DATE :app:compileDebugJavaWithJavac Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.

    :app:compileDebugNdk UP-TO-DATE :app:compileDebugSources :app:preDexDebug :app:dexDebug AGPBI: {"kind":"simple","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","sources":[{}]} AGPBI: {"kind":"simple","text":"com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:189)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)","sources":[{}]} AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.Main.main(Main.java:106)","sources":[{}]}

    FAILED

    FAILURE: Build failed with an exception.

    • What went wrong: Execution failed for task ':app:dexDebug'.

      com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 2

    • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    BUILD FAILED

    Total time: 13.002 secs


    But when i remove compile 'io.socket:socket.io-client:0.6.1', sync and run the app. Everything works fine. Please help. Thanks in advance.

    opened by awbernardino 2
  • Always getting Connect_error

    Always getting Connect_error

    Hi,

    I downloaded you source code and changed the CHAT_SERVER_URL to my localhost nodejs socket io instance and its always throwing error Connect_error. I tried with connecting to my localhost server using the plain html for testing purpose and it worked without any issues. Could you please check where I'm doing wrong?

    server code: v.1.3.6

    // usernames which are currently connected to the chat
    var usernames = {};
    var numUsers = 0;
    
    var io = require('socket.io')(server);
    io.on('connection', function (socket) {
      var addedUser = false;
      console.log("connected");
    
      // when the client emits 'new message', this listens and executes
      socket.on('new message', function (data) {
        // we tell the client to execute 'new message'
        socket.broadcast.emit('new message', {
          username: socket.username,
          message: data
        });
    
        console.log(data);
      });
    
      // when the client emits 'add user', this listens and executes
      socket.on('add user', function (username) {
        // we store the username in the socket session for this client
        socket.username = username;
        // add the client's username to the global list
        usernames[username] = username;
        ++numUsers;
        addedUser = true;
        socket.emit('login', {
          numUsers: numUsers
        });
        // echo globally (all clients) that a person has connected
        socket.broadcast.emit('user joined', {
          username: socket.username,
          numUsers: numUsers
        });
      });
    
      // when the client emits 'typing', we broadcast it to others
      socket.on('typing', function () {
        socket.broadcast.emit('typing', {
          username: socket.username
        });
      });
    
      // when the client emits 'stop typing', we broadcast it to others
      socket.on('stop typing', function () {
        socket.broadcast.emit('stop typing', {
          username: socket.username
        });
      });
    
      // when the user disconnects.. perform this
      socket.on('disconnect', function () {
        // remove the username from global usernames list
        if (addedUser) {
          delete usernames[socket.username];
          --numUsers;
    
          // echo globally that this client has left
          socket.broadcast.emit('user left', {
            username: socket.username,
            numUsers: numUsers
          });
        }
      });
    

    });

    My test index.html file -

                <script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
                <script type="text/javascript">
                 var socket = io.connect('http://localhost:9000');
                //socket.connect();
               socket.on('connect', function() {
                         console.log('connected');
                 });
    
    
                  socket.emit("new message", "Test message from client");       
    
              </script>
    
    opened by saisworld 2
  • Fatal Exception: java.lang.OutOfMemoryError

    Fatal Exception: java.lang.OutOfMemoryError

    Can you please help to fix this issue.

    Fatal Exception: java.lang.OutOfMemoryError Could not allocate JNI Env: Failed anonymous mmap(0x0, 8192, 0x3, 0x22, -1, 0): Out of memory. See process maps in the log.

    java.lang.Thread.nativeCreate (Thread.java) java.lang.Thread.start (Thread.java:884) java.util.concurrent.ThreadPoolExecutor.addWorker (ThreadPoolExecutor.java:975) java.util.concurrent.ThreadPoolExecutor.execute (ThreadPoolExecutor.java:1382) java.util.concurrent.Executors$DelegatedExecutorService.execute (Executors.java:630) com.github.nkzawa.thread.EventThread.nextTick (EventThread.java:71) com.github.nkzawa.thread.EventThread.exec (EventThread.java:52) com.github.nkzawa.engineio.client.transports.PollingXHR$1.call (PollingXHR.java:53) com.github.nkzawa.emitter.Emitter.emit (Emitter.java:117) com.github.nkzawa.engineio.client.transports.PollingXHR$Request.onResponseHeaders (PollingXHR.java:254) com.github.nkzawa.engineio.client.transports.PollingXHR$Request.access$500 (PollingXHR.java:135) com.github.nkzawa.engineio.client.transports.PollingXHR$Request$1.run (PollingXHR.java:210) java.lang.Thread.run (Thread.java:920)

    Thanks.

    opened by Expressint 0
  • Do you know any v3 or higher server?

    Do you know any v3 or higher server?

    Hello sir, I am an jr.Android Developer and created a socket.io client side with java. So I think you know there is v1 or v2 in client side for java. My problem is that my company use v3 in server side so I have to use v2 client (highest version in java) but I cant connect to their server. So I need to a v3 or higher server side url for test my client side for check the problem is in my side or in server side. Do you know any v3 or higher server?

    Note: When I switch to v1 in client I can easly connect to other v2 servers.

    opened by ErsinDemirbas 0
  • Please help, socket connection not working always fail

    Please help, socket connection not working always fail

    public boolean isConnected; private Socket socket; { try{ socket = IO.socket("https://080f0676fdfb.ngrok.io/"); }catch(URISyntaxException e){ throw new RuntimeException(e); } }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_socket2);
        ButterKnife.bind(this);
    

    // setHasOptionsMenu(true); socket.connect(); socket.on("message", handleIncomingMessages); socket.on(Socket.EVENT_CONNECT, onConnect); socket.on(Socket.EVENT_DISCONNECT, onDisconnect); socket.on(Socket.EVENT_CONNECT_ERROR, onConnectError); socket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError); socket.on(Socket.EVENT_ERROR, onError); }

    @Override
    public void onDestroy() {
        super.onDestroy();
        socket.disconnect();
        socket.off(Socket.EVENT_CONNECT, onConnect);
        socket.off(Socket.EVENT_DISCONNECT, onDisconnect);
        socket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
        socket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
        socket.off(Socket.EVENT_ERROR, onError);
    }
    
    public void initLayout(){
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = etSocket.getText().toString();
                etSocket.setText(" ");
                socket.emit("message", message);
            }
        });
    }
    
    
    private Emitter.Listener handleIncomingMessages = new Emitter.Listener(){
        @Override
        public void call(final Object... args){
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    JSONObject data = (JSONObject) args[0];
                    String message;
                    try {
                        message = data.getString("message").toString();
                    } catch (JSONException e) {
                        return;
                    }
                    Log.i("asd", message);
                }
            });
        }
    };
    
    private Emitter.Listener onConnect = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            isConnected = true;
    
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getBaseContext(), "Connected...", Toast.LENGTH_LONG)
                            .show();
                    isConnected = true;
                }
            });
        }
    };
    private Emitter.Listener onDisconnect = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            isConnected = false;
    
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getBaseContext(), "Disconnected....", Toast.LENGTH_LONG)
                            .show();
                    isConnected = false;
                }
            });
        }
    };
    private Emitter.Listener onConnectError = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            isConnected = false;
    
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getBaseContext(), "Failed to connect...", Toast.LENGTH_LONG)
                            .show();
                    isConnected = false;
                }
            });
        }
    };
    private Emitter.Listener onError = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            Toast.makeText(getBaseContext(), "onError", Toast.LENGTH_LONG)
                    .show();
        }
    };
    
    opened by Joshuaap458 0
  • Xhr poll error

    Xhr poll error

    2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: com.github.nkzawa.engineio.client.EngineIOException: xhr poll error 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at com.github.nkzawa.engineio.client.Transport.onError(Transport.java:65) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at com.github.nkzawa.engineio.client.transports.PollingXHR.access$100(PollingXHR.java:17) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at com.github.nkzawa.engineio.client.transports.PollingXHR$6$1.run(PollingXHR.java:125) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at com.github.nkzawa.thread.EventThread$2.run(EventThread.java:75) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at java.lang.Thread.run(Thread.java:919) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: Caused by: java.net.SocketTimeoutException: failed to connect to socket-io-chat.now.sh/198.51.100.10 (port 443) from /100.121.240.252 (port 33756) after 10000ms 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:191) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:135) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 2020-12-15 11:15:26.683 27145-27455/com.infinitevariable.ivuniverse W/System.err: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)

    opened by kishen007 2
Owner
Naoyuki Kanezawa
Naoyuki Kanezawa
Android-splash-screen-demo - Sample application to demo the various features provided in android-splash-screen

Android Splash screen API demo This is a sample application used to demonstrate the various features provided in android-splash-screen. More details c

Sridhar 1 Jan 3, 2022
OpenWeatherMap-API-Demo - Demo Android Application for OpenWeatherMap API

WeatherForecast Demo Android Application for OpenWeatherMap API Table of Content

Rashid Hussain 0 Jul 10, 2022
Simple configurable Twitch Chat Bot for Emote Repetition 😎

DopaminChatter Dopamin is the happiness hormone. What's better than a Twitch Chat with great Emote Usage and Emote Chains (same Emotes after another).

Jakob 2 Dec 9, 2022
Social media app but with new features like translate messages and posts , support video & images as posts , chat and notifications , etc...

social-media-app Social media app but with new features like translate messages and posts , support video & images as posts , chat and notifications ,

Kareem Aboelatta 15 Dec 13, 2022
MarsRealEstate is a simple demo app using ViewModel & LiveData with Retrofit, Glide and Moshi in Kotlin.

Android-NASA-Real-Estate-Mars Is Android app that uses Kotlin and MVVM architecture is a simple app that uses Coroutines, LiveData with Retrofit, Glid

Dmytro K 0 Nov 17, 2021
Chat is a sample project that presents a modern, 2021 approach to Android application development.

Chat for Android Chat is a sample project that presents a modern, 2021 approach to Android application development. Screenshots ??

Cenk Gun 10 Nov 6, 2022
A Chat-Bot Android Application

Sekobanashi_App A Chat-Bot Android Application. Features App Sekobanashi is a chat-bot/assistant android application where the user can chat with one

Siddharth Singh 1 Jan 7, 2022
Android app for watch replays at wasd.tv with autoscroll chat

WasdReplayAndroid Приложение для просмотра записей на васде с чатом на андроиде. https://github.com/Kirimatt/WasdReplayAndroid/blob/master/app/build/i

Azamat 25 Nov 12, 2022
This is an android app using which users can chat to people nearby them with help of Bluetooth.

This is an android app using which users can chat to people nearby them with help of Bluetooth. This app is developed in Kotlin programming language. It is still in its early stages of development and currently let user to one-person-one-time chat at a time. It is under heavy development ????

Shalu Ambasta 4 Sep 28, 2022
Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast Receiver.

Worker Notification Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast

Ayia 1 Sep 19, 2022
Android common lib demo, include ImageCache, HttpCache, DropDownListView, DownloadManager, install apk silent and so on, you can find description

android-demo 关于我,欢迎关注 微博:Trinea 主页:trinea.cn 邮箱:trinea.cn#gmail.com 微信:codek2 依赖:trinea-android-common android-auto-scroll-view-pager viewpager-indica

Trinea 1.1k Dec 30, 2022
☀️ Wheater is a small demo application based on modern Android tech-stacks and MVVM architecture. ⛅

Wheater is a small demo application based on modern Android tech-stacks and MVVM architecture. Tech stack & Open-source libraries Minimum SDK level 19

null 2 Jan 17, 2022
:octocat: A demo project based on MVVM architecture and material design & animations.

GithubFollows A simple demo project based on MVVM clean architecture and material design & animations. Architecture Specs & Open-source libraries Mini

Jaewoong Eum 288 Dec 25, 2022
🎬 A demo project for The Movie DB based on Kotlin MVVM architecture and material design & animations.

TheMovies A simple project for The Movie DB based on Kotlin MVVM clean architecture and material design & animations. How to build on your environment

Jaewoong Eum 420 Nov 29, 2022
A demo of the power menu with Reveal and other animations

MaterialPowerMenu A demo of the power menu with Reveal and other animations Some days ago, I saw a gif on Google+ demonstating a concept of Android Po

Naman Dwivedi 888 Oct 11, 2022
🎬 A demo project using The Movie DB based on Kotlin MVVM architecture and material design & animations.

TheMovies2 A simple project using The Movie DB based on Kotlin MVVM architecture and material designs & animations. How to build on your environment A

Jaewoong Eum 450 Jan 2, 2023
PDFER - App demo that uses WorkManager API to download and schedule PDFs in the background

PDFER App demo that uses WorkManager API to download and schedule PDFs in the background Download PDF You can either download custom pdf files by plac

Ahmed Samir 4 Nov 22, 2022
Abel Suviri 6 Dec 16, 2022
Demo of Downloading Songs/Images through Android Download Manager using RxJava2

Downloader Demo using RxJava Overview This project is for downloading items(songs, images etc) in Android using RxJava2. There are, however 2 conditio

Anshul Jain 168 Nov 25, 2022