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
A simple notes app to demo Room + LiveData implementation in Android

RoomDb-Sample This is a demo app on how to implement Room persistance library, making use of LiveData in Android app How to implement Room: a SQLite o

Anitaa Murthy 117 Dec 23, 2022
🧸 A demo Disney app using Jetpack Compose and Hilt based on modern Android tech stacks and MVVM architecture.

DisneyCompose A demo Disney app using compose and Hilt based on modern Android tech-stacks and MVVM architecture. Fetching data from the network and i

Jaewoong Eum 791 Dec 30, 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 Nov 10, 2022
Restaurant is a demo application based on modern Android application tech-stacks and MVVM architecture

Restaurant is a demo application based on modern Android application tech-stacks and MVVM architecture. Fetching data from the network via repository pattern.

Eslam kamel 25 Nov 20, 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 application that uses TMDB APIs to fetch the movie details and cache it using the Room DB.

TMDB App Tmdb sample project is a demo application that is based on modern Android architectures. It will fetch the data from the network and cache it

Clint Paul 38 Nov 28, 2022
PokeCard Compose is a demo app 100% write in Compose, Flow and Koin based on MVI Clean Architecture 🐱⚡️

A Pokemon Card demo app using Jetpack Compose and Koin based on MVI architecture. Fetching data from the network with Ktor and integrating persisted data in Room database with usecase/repository pattern.

Lopez Mikhael 104 Nov 27, 2022
Demo Android application using Gradle. Project is written entirely in Kotlin with MVVM architecture

Demo Android application using Gradle. Project is written entirely in Kotlin with MVVM architecture, Dagger / Hilt Dependency Injection, Room Database and Retrofit API Calls

Dejan Radmanovic 1 Apr 6, 2022
Demo app to showcase Sensor data using AIDL bound services.

AIDLServices Displays data related to TYPE_ROTATION_VECTOR sensor using AIDL Consist of aidlsdk module that expose sensor data Sample app to show the

Vikas Mane 3 May 26, 2021
A demo app to show how to detect screenshots taken by the user while using the app

Screenshot Detector A demo app to show how to detect screenshots taken by the user while using the app. Blog link Detect Screenshots in Android Screen

Nikit Bhandari 77 Dec 9, 2022
A simple app to showcase Androids Material Design and some of the cool new cool stuff in Android Lollipop. RecyclerView, CardView, ActionBarDrawerToggle, DrawerLayout, Animations, Android Compat Design, Toolbar

#Android-LollipopShowcase This is a simple showcase to show off Android's all new Material Design and some other cool new stuff which is (new) in Andr

Mike Penz 1.8k Nov 10, 2022
A simple app to showcase Androids Material Design and some of the cool new cool stuff in Android Lollipop. RecyclerView, CardView, ActionBarDrawerToggle, DrawerLayout, Animations, Android Compat Design, Toolbar

#Android-LollipopShowcase This is a simple showcase to show off Android's all new Material Design and some other cool new stuff which is (new) in Andr

Mike Penz 1.8k Nov 10, 2022
simple android grocery app using kotlin and android studio

Project Idea The idea of this project is to make a grocery android app that users can use to order the groceries they want. It doesn't contain any bac

null 0 Nov 29, 2021
This is a simple example of Aspect Oriented Programming in Android

Android-AOPExample This is a simple example of Aspect Oriented Programming in Android as part of a blog post I have written. The idea was to measure h

Fernando Cejas 422 Nov 25, 2022
🔥 Android MVP with Volley usage simple registration App 🔥

?? Android MVP with Volley usage simple registration App ?? This is a MVP architecture app that uses volley .Project is made using Android Studio. Vol

ABHISHEK KUMAR PATHAK 3 Aug 7, 2022
A simple sample showing the different types of notifications on Andoid

Notification example Simple notification. Expandable notification Progress notification Action button notification Notifications: MainActivity: Refs h

Saul Molinero 191 Nov 29, 2022
This repository provides a simple clicker app using `KSharedDataStorage` to save progress

kds-android-example This repository provides a simple clicker app using KSharedDataStorage to save progress For progress saving used KSharedDataStorag

null 2 Oct 23, 2021
A simple app demonstrates using Jetpack compose with other Jetpack libraries.

Android Pokemon Compose This repository is a simple app that make request to https://pokeapi.co and display them in the paginated lists. It demonstrat

BenBoonya 56 May 21, 2022
Viacheslav Veselov 0 Jul 8, 2022