FukeX

Return to FukeX Page

FukeX Documentation

FukeX is a lightweight, easy-to-use Android media player written in Kotlin. It features a simple UI and was built specifically with screen readers in mind. We created FukeX because there were no good media players on the Android market that were both feature-rich and fully accessible. We are screen reader users ourselves, so we've kept accessibility front and center, ensuring every step is easily navigable with tools like TalkBack.

What is special about FukeX?

We offer many features that other media players lack. Some of our favorites include:

What files can FukeX play?

FukeX plays these file types, both from your device and from an SMB share:

mp3, mp4, m4a, aac, flac, wav, ogg, opus, alac, mkv, and webm.

Video files are treated as audio only. If a file plays in FukeX but you selected it from a folder full of other stuff, don't worry, the file picker already hides everything that isn't playable.

You need Android 8.0 or newer to run FukeX.

How to get it?

You can download FukeX to your device from our website:

Click here to download FukeX

Installing the APK file

Once you obtain the APK file, here is how you install it:

  1. Navigate to your file manager and choose the downloaded APK. Alternatively, if you are still on the Chrome page where you downloaded the APK, tap "Customize and control Google Chrome" (or "More options" if using another browser), then select "Downloads", and directly access the APK file.

  2. Installing: When you tap the APK file, a system restriction screen for "Unknown apps" installation will pop up. Click the "Settings" button and toggle the switch that says "Allow this installation". If you can't find the page to allow unknown app installations, go to your phone settings and search for "Unknown apps" or similar. After that, choose the app you plan to install FukeX with, like a browser or file manager.

  3. Confirm the installation: Once you're done with that hassle, tap "Install" to install the app. If you receive a Google Play scan warning, just let it do its job by tapping "Scan". If you wanna be quick, use the "Install without scanning" TalkBack global accessibility action.

Congrats! You've successfully installed FukeX.

Permissions FukeX asks for

The first time you open FukeX, it will ask for a few things. Here is what each one is for, so you're not left guessing:

Creating your first playlist

Wanna start listening to your favorite songs? Follow these steps:

  1. Open the app, FukeX. Obviously, where else will you play the media, in the air?

  2. You will see the following options:

Right here, we'll be adding a folder or song to the default playlist. Start by selecting the "Add media to playlist" button. It will present you with a dialog titled "Add Media", asking "Where would you like to add media from?"

You'll see the following options:

Finally, when choosing "Local device", it will display a custom file picker where TalkBack accessibility gestures will work. Browse for the file you want to play, or if you want to select an entire folder, keep focus on the folder you want to add, and swipe with one finger to reveal the TalkBack action saying "Add entire folder". As soon as you choose this, your playlist will be saved in a JSON file just in case, and your data stays only on your device.

A couple of things worth knowing about the file picker:

As soon as you add the folder, your first song in the folder will start playing. You can pause it by clicking the pause button. Sure, I don't hope you are that dumb, anyway, now let's explore the rest of the player.

Around the player screen

Once a playlist has media in it, the screen is split into two parts.

The top part is the track list. Every track is a row you can tap to play. The one currently playing is marked with a play icon and is spoken as "Playing".

The bottom part is the playback bar, and it holds:

FukeX saves your position roughly every five seconds and again whenever you leave a playlist. Come back later and it picks up the same track, at the same second.

Reordering and removing tracks

Keep focus on any track in the list and swipe up or down with one finger to reveal its TalkBack actions:

If you remove the track that is playing, FukeX simply moves on to the next one, or to the new last track if you removed the one at the bottom. Playback only stops if you removed the very last track the playlist had.

Searching through a playlist

Searching through a playlist is straightforward. Go to the playlist, and near the playback controls, you will see a 3-dots menu, or the "More options" button for TalkBack. You can either use the accessibility action or tap the button and select the "Search" option.

After that, a text box will open up. Type the name of the song, and the result will pop up right next to the text box. Tap any result and it starts playing straight away, and the search closes itself.

The search looks at track names and ignores capital letters, so typing "night" finds "Night Drive" just fine. Track names come from the file name with the extension trimmed off, which is why you see "Night Drive" rather than "Night Drive.mp3".

Playlist info

Also in the 3-dots menu is "Playlist info". It gives you a quick summary:

Handy when you want to know whether that podcast dump is eating your storage.

Creating a new playlist

Oh, so let's jump into creating your own playlists.

Keep your focus on the default playlist tab, and using the TalkBack action, find the "Create new playlist" button. As soon as you activate it, a text box will pop up, asking you for the name of the playlist. You can name it anything. After providing a name, just press "OK". When you're done with the creation of the playlist, make sure to add a media file! ROFL.

The new playlist becomes the selected tab right away, so the very next thing you add lands in it.

Managing your playlist tabs

Keep focus on a playlist tab and swipe up or down with one finger, or tap the 3-dots button sitting inside the tab, to get to these:

One small rule to keep in mind: while you only have a single playlist, moving, hiding and removing are not offered. FukeX always keeps at least one playlist around, otherwise you would have nowhere to add media.

Importing and exporting playlists

An exported playlist is a tiny JSON file holding the playlist name and the location of every track. It does not contain the songs themselves, so it stays small, and it is easy to keep in your cloud storage as a backup.

To export: use the "Export" action on a playlist tab, or "Export Playlist" from the tab's 3-dots dialog. Android will ask you where to save it and suggest the playlist name as the file name.

To import: press the "Import Playlist" button in the top bar, and pick the JSON file. It always comes in as a brand new playlist, so importing twice gives you two copies rather than overwriting anything.

Two honest warnings.

Because the file stores locations and not the audio itself, an exported playlist only works on a phone that can reach those same locations. Moving a playlist of local files to a different phone will give you a list of tracks that refuse to play. Playlists made of SMB tracks travel much better, as long as the new phone can reach the same server.

Exported playlists never contain your SMB username or password. That's good for sharing, but it does mean that after importing an SMB playlist on a new phone, you need to connect to that server once through "Add media to playlist" so FukeX learns the login. After that the imported tracks play normally.

Locking a playlist

Got a playlist you'd rather other people didn't stumble across? Use "Hide".

  1. Pick "Hide" from the tab's actions or from the 3-dots menu in the playback bar.

  2. Choose the type. "PIN" gives you a number keypad, "Password" gives you the full keyboard. Both need at least 4 characters.

  3. Type it in and press "Hide".

The playlist tab disappears from the row of tabs immediately, and a lock button appears in the top bar so you can get back to it. That lock button is only there while you actually have something locked.

Please read this bit twice: if you forget your PIN or password, FukeX cannot get the playlist back for you. There is no reset, no email, no recovery question.

Also worth saying plainly, since we'd rather be honest than sound impressive: this hides a playlist inside FukeX. It is not encryption. Your audio files stay exactly where they were on your storage, and any file manager can still see them. What FukeX does guarantee is that your PIN is never written down as you typed it, so someone reading FukeX's data files cannot simply read your PIN back out.

Getting back into a locked playlist

Press the lock button in the top bar. You'll get a list of every locked playlist. Choose one, and then either:

Either way, the playlist comes back as a normal tab and you can play it as usual. This is a temporary visit, though. FukeX relocks it based on your lock timeout setting.

If you want the playlist to stop being locked altogether, use the "Unlock" action on its tab. It asks for the PIN or password one more time, and then the lock is removed for good.

Lock timeout

In settings, "Lock Timeout" decides how soon a temporarily unlocked playlist goes back into hiding. Your choices:

There's one deliberate exception. A playlist that is actively playing does not relock underneath you on a timer, because having the music cut out mid-song would be a rubbish way to protect anything.

Connecting to an SMB share

This is the feature we're proudest of. Your music can live on your PC, your NAS, or a home server, and FukeX streams it.

  1. Press "Add media to playlist" and choose "SMB Share".

  2. Fill in the connection screen:

  1. Press "Connect".

From there it behaves exactly like the local file picker. Browse into folders by tapping them, go back up with the back gesture or the "Go up" button, tap a track to add it, or use the "Add entire folder" TalkBack action to pull in a whole folder including everything nested inside it.

Some practical notes:

Controlling playback outside the app

While something is playing, FukeX puts a notification in your shade with previous, play or pause, and next. It also appears on your lock screen, and the same controls work from your car, your smartwatch, and anywhere else Android surfaces media controls.

The play, pause and skip buttons on wired and Bluetooth headsets work too, including the double-press for next track that most earbuds use.

The notification sticks around while paused so you can start playing again, and clears itself when you close the playlist.

Tapping the notification body brings you straight back into FukeX.

Sharing the sound with other apps

FukeX plays nicely with whatever else is making noise on your phone:

The volume amplifier

Some recordings are just quiet. The amplifier pushes them louder than Android normally allows.

Set the level in settings, from 0 up to 25 dB in 5 dB steps. Then switch it on or off whenever you like from the 3-dots menu in the playback bar, without going back to settings, since the menu item tells you the current level, for example "Enable Amplifier (Boost 10dB)".

Above 15 dB, FukeX shows a warning before applying it. That warning is not decoration. Pushing a small phone speaker that hard for a long time can genuinely damage it, and heavily boosted audio tends to distort. 20 dB is our sweet spot, 25 dB is there for the brave.

Playback effects: speed, pitch and bass boost

Sometimes you want a track a little faster, a lecture a little slower, or just more thump in your headphones. Open the 3-dots menu in the playback bar and choose "Playback Effects" for three sliders in one dialog:

All three take effect immediately and are remembered the next time you open FukeX, so you only have to set them once.

Evening out the volume between tracks

Ever get blasted by one song right after a quiet one? That's what ReplayGain is for. Turn on "Enable ReplayGain" in settings, under Playback, and FukeX will read the volume tag that most music library tools already write into your files, then adjust each track to a consistent loudness on the fly.

It's off by default, since not every file has the tag, but if you've got a mixed playlist and keep reaching for the volume button, switch it on and forget about it. Tracks without the tag just play at their normal volume.

Fading and gapless playback

This is what gives FukeX that DJ feel. Rather than one blunt crossfade setting, you get to choose a fade time for each event separately.

In settings, under "Fading (Gapless Playback)", first pick the event:

Then set two sliders for that event:

Both go from 0 up to 10 seconds. Zero means disabled, so that event switches instantly with no fade at all. Everything starts at zero, so FukeX behaves like a plain player until you decide otherwise.

A good starting point: around 300 ms for Pause/Play and Seek, so it feels soft rather than jarring, and 3 to 5 seconds on Automatic Track Change for proper crossfading between songs.

Changing the event in the dropdown swaps the sliders to that event's own values, so each of the four keeps its own settings.

The settings screen

In the settings screen, you'll see the following options, grouped under headings:

Security

Playback

Fading (Gapless Playback)

About

Where your data is kept

Everything FukeX knows about you sits on your phone, in the app's own private storage:

FukeX never sends any of this anywhere. Your playlists and your SMB logins are also kept out of Android's automatic cloud backup, so they don't quietly end up in your Google account. Uninstalling FukeX removes the lot. If you want a backup of your playlists, use the export feature.

Tips and troubleshooting

Accessibility quick reference

Every action below is reachable by putting TalkBack focus on the item and swiping up or down with one finger.

On a playlist tab: Create new playlist, Move Left, Move Right, Hide or Unlock, Export, Remove.

On a track in the list: Move Up, Move Down, Remove.

On the More options button: Search within playlist, Playlist info, Enable or Disable Amplifier, Playback Effects, Hide or Unlock, Remove.

On a folder in the file picker or SMB picker: Add entire folder.

On the seek slider and every settings slider: swipe up and down to change the value. The slider reads out its current value as you go, in minutes and seconds for the seek bar, in decibels for the amplifier, in milliseconds for the fade settings, and as a multiplier or a plain level for the playback effects sliders.