BetterSocialFeed

An Android application for easier Instagram browsing.

BetterSocialFeed

Where?

The app has its own web site at https://bettersocial.app. Points to Play Store, where the app can be downloaded.

Used Technologies

  • Java
  • Kotlin

Implementation Details and Challenges

Custom Touch Gestures

The BetterSocialFeed app shows Instagram posts in a grid. To select more posts at once, the user can touch one post and subsequently drag through some other posts.

This has been implemented as a custom View.OnTouchListener which watches the events, registers the path and calculates whether to add some post to the selection. It of course has to play well with scrolling and the “swipe down to refresh” functionality.

Casting and External Displays

The app contains Presentation mode which can show Instagram posts (images or videos):

  • on the main phone/tablet display (of course)
  • using casting e.g. to Chromecast (by sending URL of the item using RemotePlaybackClient)
  • on a secondary display, if connected (the post is shown without any other UI controls there)
    • actually, as I observed, this functionality can be used to show items on Chromecast, too, when “Cast my screen” is used in the “Home” app (this obviously creates a secondary display and actually casts that display)
  • the app alone can be used on Android TV, too

What it looks like:

Phone:

Presentation view on phone

External display:

Presentation view on external display

TV:

Presentation view on TV

Build Variants

Previously, there were 3 separate apps (Feed, Follow and View) built from one project (that project had 3 build variants). I heavily use productFlavors in build.gradle, where each of them contains different settings and a different combination of files (specified in sourceSets).

BetterSocialStat Application

I was preparing BetterSocialStat application, which could show statistics about:

  • lost followers, latest followers, followers you don’t follow
  • recently followed users, unfollowed users
  • most popular followers and followed users (based on their followers, followed users and posts counts)
  • your posting times (hours, dates, weekdays, months, years)
  • your post descriptions (most used words, tags, top mentioned users)
  • post types (videos, dimensions)
  • most/least liked and self-liked posts
  • most/least commented posts and posts with disabled comments

Because of some changes at Instagram (they suddenly implemented more strict limits for retrieving of some data, and some data additionally could not be retrieved at all (or not so conveniently)), I abandoned the development of that application. A subset of its functionality (only the information about followers) was then incorporated into the final BetterSocialFeed app.

Here are some screenshots showing what that application looked like:

BetterSocialStat 1 BetterSocialStat 2 BetterSocialStat 3 BetterSocialStat 4 BetterSocialStat 5 BetterSocialStat 6 BetterSocialStat 7