A dual-screen launcher for the AYN Thor.
Install
Download Loki-1.4.0.apk and install it on the device.
Films & TV and PC streaming ship inside the app but stay switched off
until you ask for them — until then there is no section in the bar, no settings
category and no pages. To turn one on, download movies.json or stream.json
below, then open Settings → System → Extensions and import it.
Those files are not licence keys. Each is three lines of JSON you could type
yourself; only the extension field is read.
The file explorer reaches the network
Windows shares and NAS boxes, browsed from the explorer and copied to and from
like anything else. Settings → System → Network shares, then a server
appears in the explorer's sidebar under your own storage.
Servers are found rather than typed. Press Scan the network and three
probes run at once, because no single one reaches every network:
- a sweep of port 445 across your subnet, which needs nothing of the network
but the ability to open a connection — no multicast, no broadcast, no service
advertising; - mDNS, which is what a NAS advertises and where real names come from;
- a NetBIOS query sent to each address found, which is how a Windows machine
says its name without a broadcast that a router can filter.
Typing an address is still there, for a server on another subnet or a network
that blocks discovery.
Everything the explorer does works across the boundary. Cut a folder on the SD
card, walk into the share, paste — copy, move, zip, extract and delete are
written once against a storage interface, so local to share, share to local and
share to share are all the same code. A move within one share is a rename on
the server rather than a round trip through the device.
Some deliberate choices:
- Passwords are stored encrypted with the rest of your settings, alongside
the ScreenScraper and debrid credentials. The alternative — Android's hardware
keystore — is stronger against someone holding an unlocked device, and costs
you every password the first time you restore a backup or move device. - A share is not scanned for games. The explorer browses it; the library
scanner does not. Emulators need a real file path, so playing a ROM off a NAS
means copying it over first. - A file on a share cannot be handed to another app. Android has no way to
lend one a stream held over SMB, so the explorer says to copy it first rather
than failing with a provider error nobody can act on.
Trakt
Settings → Films & shows → Trakt. A record of what you have watched that
belongs to you rather than to any one player: the launcher's own
continue-watching shelf stops at the edge of this handheld, so an evening that
started on a television is invisible to it.
Signing in needs no typing. Loki shows a short code; you enter it on your
phone. A handheld has no address bar and its text entry is a pad-driven
keyboard, so nothing sensitive should be typed on it — and the code is worthless
to anyone who does not also hold the account.
Connected, two shelves appear above the catalogue in Films & shows — what you
are part-way through, and your watchlist — and what you play is marked watched
on Trakt as you watch it. Both are switches, so wanting one without the other
does not mean choosing between both and neither.
Trakt is fetched after the catalogue rather than with it. Awaited together, a
slow or rate-limited account service would mean opening the section to nothing
at all: the shelves everybody gets held up by the shelves only you have.
AllDebrid
A third debrid service beside Real-Debrid and TorBox, chosen the same way in
Settings → Films & shows → Sources & accounts.
One difference is worth knowing. AllDebrid withdrew its instant-availability
endpoint, so it will not say what it has cached until a magnet is uploaded —
which means "only instantly playable sources" has no effect with that
account selected, and the switch says so rather than appearing to be ignored.
Little is lost in practice: a source AllDebrid already holds still starts
instantly, because that is what cached means. What goes is knowing which one
will before you press it.
Fixes
- The explorer's "cannot paste a folder into itself" guard was not guarding.
It compared a/-separated prefix against paths spelled with\. It is a walk
up the destination's parents comparing identities now, which also catches
/sdcard/Xagainst/storage/emulated/0/X— one folder written two ways. - The sidebar highlight could never match a share, so the rail never lit while
you were inside one. - The sidebar now names its sections, and says where network shares come from
when you have none.
Platform artwork by GiuPhoenix.