/android-example

Tinode chat client application for Android

Primary LanguageJava

Tindroid chat

Android instant messenger using Tinode backend. Beta-quality software.

What works:

  • Send and receive messages one-on-one or in group chats.
  • Register new accounts.
  • Start new chats.
  • Edit chat parameters.
  • In-app presence notifications.
  • Unread message counters.
  • Typing indicators.
  • Push notifications.
  • Indicators for messages received/read (little check marks in messages).
  • Markdown-style formatting of text, e.g. *styled* → styled. Implemented as spannable.
  • Attachments and inline images.
  • Muting/un-muting conversations and other permission management.
  • Integration with Android's stock Contacts.
  • Invite contacts to the app by SMS or email.
  • Transport Level Security - https/wss.
  • Offline mode is mostly functional.
  • Editing of personal details.

Does not work yet:

  • Deleting messages.
  • Video and audio is not handled inline.
  • No end-to-end encryption.

Dependencies on the SDK side (otherwise plain Java):

Dependencies on the application side:

  • libphonenumber for user discovery to ensure all phone numbers use the same E.164 format
  • MaterialChipsInput widget for group chat member selection. This implementation is buggy and inflexible, should be replaced ASAP. Google should have provided this widget.
  • google-services for push notifications. In order to compile the app you need to generate your own config file google-services.json. Once downloaded, copy it to the ./app/ folder. The config file contains Google-provided passwords and as such cannot be shared. If you don't do it the app will crash with non-obvious exceptions. The Google-provided server key must be copied to tinode.conf, see details here.

The contacts.vcf contains a list of contacts which can be used for testing. Push it to your emulator using

adb push contacts.vcf /sdcard/contacts.vcf

Screenshots

App screenshot - contacts App screenshot - chat App screenshot - chat settings App screenshot - account info