Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cerisara/mousetodon
Android app to connect to the mastodon social network
https://github.com/cerisara/mousetodon
android mastodon
Last synced: 18 days ago
JSON representation
Android app to connect to the mastodon social network
- Host: GitHub
- URL: https://github.com/cerisara/mousetodon
- Owner: cerisara
- License: agpl-3.0
- Created: 2017-04-22T14:58:07.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-02-06T16:11:01.000Z (almost 4 years ago)
- Last Synced: 2024-04-13T13:50:34.202Z (8 months ago)
- Topics: android, mastodon
- Language: Java
- Size: 4.6 MB
- Stars: 10
- Watchers: 4
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![Mousetodon](./mousetodon.jpg)
MouseApp is an android client for the Mastodon social network.
Note September 2017: I recommend, if your device supports it, to rather use Mastalab (see F-droid), which is
better maintained and more active than Mousetodon !### You must create 1 or several Mastodon accounts before you can use this app !
The app does not let you register onto a Mastodon instance: it assumes the accounts already exist and are configured.
MouseApp is in development stage for now, but it should already fulfill the most basic interactions with any Mastodon server you may expect from an android app.
As compared to the other available android apps, MouseApp is certainly not as nice and visually attractive (because it's not a priority for me),
but it has other advantages depicted below.
Its most noticeable features, which makes it different from the other apps, are:- **langage detection** and filtering: you may define one or several languages, and only the toots from these languages will be shown.
For now, only the following languages can be detected: French (fr), English (en), Spanish (sp), German (ge) and Japanese-Chinese-Korean (ja) (I know, sorry, these 3 languages are very different, but I'm no expert in them and I'll do my best to improve them in a later release, or
hopefully before thanks to a merge request).
- **multiple accounts/instances** support, with fast switching between them with one-click.
- Optionally, **read aloud** only the English toots
- Low-end device friendly (from **Android 2.3+**)
- **lightweight**, robust to SSL Android bugCurrent limitations:
- Does not support content warnings, nor media uploads
- Does not show some user details-----------
## User guide
At the first connection, the app will pop up a window asking for a Mastodon instance (without the http:// prefix, so just type in something like *mastodon.social*),
your email and password on this instance.
In the top left, you can see several buttons:- *Notifs* shows your most recent notifications
- *Home* shows your most recent home timeline
- *Local* shows the most recent local timeline of your logged-in instance (the one printed in the title bar)
- *Public* shows the most recent federated timeline
- press *Toot* to write and publish a toot
- press *XIn* to switch to another saved account
- press the last smaller button *...* to access other functionalitiesInitially, you should only have defined a single instance, but you can later on easily add other ones via the application menu
or the *...* button and then *add account* sub-menu.
Another item in the application menu allows you to switch on and off language detection+filtering, and define the languages to show:
use the two-letter codes (fr en sp ge ja) separated by whitespace.Any timeline shows a list of toots, with a picture of the sender on the left, and some technical information on top
(the date, whether you have boosted this toot (with a heart emoji), the sender name).
At the bottom of the list, you have the option to download older toots.If you click on any of these toots, a popup windows appears that shows all the medias and URLs links from the toot.
This popup also gives you new actions with respect to the currently selected toot:- reply
- boost
- *parents* shows you the "reply-to" thread
- *infos* shows opens a new popup with all the toots published by this user
- *copy* copies the URL of this toot into the Android clipboard
- *reblog* this tootAlso, if you click on one of the listed media/URLs, it is opened in a browser.
The user informations obtained via the *infos* button also gives you the option to *follow*/*unfollow* this user.
-----------
## How to build
Contrary to other apps, building MouseApp is very simple, because my objective is to be able
to build it even from within an android device itself !
So you don't need heavy IDE like Virtual Studio, nor even internet connections, as there's no external dependencies.
You just need the Java JDK, an Android SDK and the good old ANT build system.
You will soon not need ANT any more as I plan to commit a shell compilation script.After cloning, you should fix the file *local.properties* and just type:
```
ant -f makeitlocal.xml debug
```
and it should create the apk straight away.-----------
## Why yet another android app for mastodon ?
There are already several android apps for mastodon.
However, a number of them are not written in *native java*, which makes them too slow or even
incompatible on old devices.The *Tusky* app is native, and is also one of the most advanced android client I've found;
it is also packed with lots of features, so I recommend you to try it out first, and if it
does not work fine for you, then you may come back here.
I actually don't like a few of Tusky features:- Tusky relies on Google Firebase: this makes the app heavy to build, incompatible with old devices,
dependent on Google play services, and your data is not totally in your control.
From firebase site: "[Firebase] helps you quickly [...] earn more money.",
"At the heart of Firebase is Firebase Analytics",
"Earn money by displaying engaging ads"... Is it really FOSS ?
- Tusky connects to a special server to allow for two-factor authentification; I consider it is a potential threat
for privacy, and the app will not work whenever this additional server is down or attacked.
So I really prefer to use simple login/password authentification, which also looks to work on all Mastodon instances afaik.Because of these reasons, and also because Tusky do not implement some features that I really want,
I've decided to implement my own android client for mastodon.
The features that are not available on other apps and that I want to have are:- language detection: a first version is already up and running;
- multiple logins: when you have several accounts on several instances, you can quickly
switch from one account to another;
- support for older devices; my app is designed to work
on an old 2.3.3 android (and all more recent androids as well, of course);
- very simple compilation process, as few external dependencies as possible. I must be able to compile it on an
android smartphone (without any PC: yes, it's possible !).------------
### A note on SSL handshake error
It *may* be that connection to a Mastodon server just fails, and if you look at the android logs, you see
an *SSL handshake error*. This is a known bug/incompatibility between some versions of Android and some
configurations of some Mastodon server. This issue also affects all native Java android apps, in particular *Tusky* and *Twidere*,
but apparently it does not affect android clients that are not programmes in native java, such as TootyFruity.The problem is that secure connection with a Mastodon instance can be configured (at the instance level, so
I don't see what can done in the app to fix that) with various TLS protocols, and that from one version to another,
the core Android libraries implement in very different ways these protocols, and sometimes, it just does not work.Note that version 0.8 of MouseApp application is also affected by this issue, but the new version 0.9 of
the MouseApp application has been built to solve this issue.
The solution adopted consists in removing the faulty HttpUrlConnection class to
communicate with the Mastodon API server and replacing it with javascript.-------------
## ChangeLog
### v0.8
- Support multi-instances: Switch with the press of a button
- Language detection and filtering: lightweight keywords-implementation, support fr, en, ge, sp, ja### v0.9
- Rewrote the connection with Mastodon API: replace HttpUrlConnection with Javascript, which solves
a Android/Mastodon SSL handshake incompatibility for all native apps (Tusky and Twidere have the bug).
- Show list of toots per user
- Better date formatting
- Smoother icon loading in the background, with caching
- Support added for following user### v0.10
- reblog
- added local timeline
- change reply button: don't link in the metadata, but rather adds @-mention + the URL of the original toot: hence, the reply is also published in the public timeline.
- drop-down menu for timelines and instances
- search for tags
- Reading aloud (TTS) English-only toots
- Option to reply either with or without being published on the public timeline### v0.11
- slightly improve GUI
- bugfix: open user info from notifications
- added support for blokc/unblock, mute/unmute
- user may open toot by ID-------------
### Features to be implemented next:
- quick-toot from outside the app with *share as* thanks to TaskLabAct