[Android] Flaming Durtles - Android app with offline support

Apparently not enough since it seems I still don’t know the difference between match_parent and match_constraint :sunglasses: which is causing the pitch info layout issue…

Seriously though, it seems more than it is since I’m just banging out random chunks of code without the kind of quality control and care I normally put in. The end result is much more buggy than I like, but the changes keep coming fast this way.

With my health being what it is I don’t get out nearly as much as I’d like to anymore, so working on FD has been very useful to keep me busy and sane. And all the positive responses are helpful as well.


(what is this font with the stroke order? thanks)



We really appreciate all the time you put in. The app seriously is great, and your constant efforts at improvement are nothing short of amazing.
I hope your health improves and you are on the road to recovery ASAP. Sending lots of get well soon vibes and big thank yous your way.


Super love the app! I know I’ve said it before but i legit prefer using your app to wanikani. Having said that…because I prefer it…I use it on my chromebook as well. On a Chromebook when hitting enter it normally advances it just fine without a problem. But if you get the answer wrong enter doesn’t advance the screen. It looks like the cursor is set on the search bar, because tapping tab makes it get to the next button (eventually. Sometimes it gets stuck on the search bar). Mouse is still on option, but its much slower for doing quick reviews.
I’m only bringing this up if it’s an easy fix. I would imagine I’m a super outlier using your app on a Chromebook. So no stress it it’s silly.

Hi @ejplugge!
Nice job on the app. The polish on the offline mode is impressive.
I’m myself an Android developer and I was contemplating for some time resurrecting the WaniKani for Android app with the v2 API, an offline mode and with a native UI for review/lessons.
But you’ve already done that in Flaming Durtles, so, bravo :tada:

I skimmed the replies, so I might have missed this question if it already exists, but are you open to contributions?

Maybe that can be somewhere I could help you improve Flaming Durtles, without losing its compactness. I would love to know if we can make it happen :slight_smile:

Same, but I kept procrastinating and then Flaming Durtles appeared.

Not silly at all. If running Android apps on ChromeOS was super rare, Google probably wouldn’t have bothered to support it…

Android has various ways to interact with physical keyboards, and essentially I haven’t tested it at all and haven’t put in any code to deal with that possibility specifically. I don’t own a Chromebook myself, but I guess if I pair a bluetooth keyboard with my tablet that should come close enough. It shouldn’t be too hard to make keyboard navigation easier, so I’ll put it on the list and see what I can do.

Not right now. First thing would be to open source the code, which I want to do soon-ish anyway, if only as insurance so the app doesn’t have to die in case I lose interest in Japanese or get hit by a bus. But beyond that, running FD as an open source project with outside contributors is a whole different beast than running it as a small solo project. And I don’t feel up to that right now.


Thank you very much for adding pitch info to the app! I actually haven’t paid attention to it at all, but now I realized how important it is.
I don’t understand though, what the numbers in square brackets mean. Also, if there are multiple pitch sequences for a vocab, does that mean a difference between parts of speech, dialect or personal preference maybe?

And a small request: I would prefer the default volume to set within the app to be media, and not ring.

Oh, another one: in the browse section, it would be more informative to count the number of “not passed” and “not started” items separately, instead of putting them all in the “in progress” category.

I just discovered this app and so far I’m really liking it. Thank you for the great work! I do hope that you make it open source eventually.

Recently, I started using the kana “flickr” keyboard (on Samsung) for inputting hiragana during reviews. I noticed that if I type, say く, by swiping up on か, then it does not work when I try to add the dakuten to get ぐ. This also happens in the other WK app, but it works in the browser or other places. Does anyone have a suggestion on how to fix this?

A related feature request: I’m not sure if it’s possible in general, but I’d like if there was an option to automatically switch input method to use English keyboard (or whatever Latin alphabet keyboard) when prompting for vocabulary meaning etc. and to switch to Japanese keyboard when prompting for hiragana or katakana input. @ejplugge Do you think that would be a feasible option to add?

The number and the two kanji after it are just another way to represent the pitch, they don’t tell you anything the diagram doesn’t also show. Check out https://imgur.com/r/LearnJapanese/oEjxhWU and https://en.wikipedia.org/wiki/Japanese_pitch_accent for more information about this. The diagram is the most useful/complete, the other two pieces of information are just for people who know that notation from other sources or the pitch info userscript.

The pitch info shown is of “standard” Japanese, the Tokyo Yamanote dialect you hear on TV in Japan most of the time. Covering other dialects would be a lot more complicated. If the app shows multiple pitches for a single reading, then all of those are considered acceptable in standard Japanese. Sometimes different parts of speech (noun, adjective, adverb, …) have different pitches. If so, then the part-of-speech it applies to (in Japanese) is shown in parentheses. Check out 多分 (“Maybe”) for an example of that.

I already use the default media volume. I did a quick test to confirm, and that’s what happens on all of my devices. I’ll add a call to explicitly set the stream type to “speech”, but I’m doubtful that’s going to make much difference on your device if it uses ring volume now. I hate blaming device configuration for problems, but there’s a good chance this is caused by something in your device settings.

Makes sense, I’ll put it on the list.


You can try enabling auto-suggest in the keyboard settings, that helps with some unusual keyboard types. The app doesn’t try to interfere with unusual keyboards in any way with that setting enabled. But I just tried the flick kana keyboard on a Samsung device, and it worked just fine with and without that setting.

No, unfortunately that’s not possible. I can’t control anything about the keyboard type that pops up, except to force an ASCII-capable keyboard for meanings. Android just doesn’t give that level of control to apps (which is probably a good thing).

Thank you, all clear now!
Also, I have great hopes in that stream type setting :slight_smile:

First things first: you’re right, it’s not pretty, so you may not win an award for best design :laughing:

But I really like this app, as it helps me keeping momentum (even as a lvl 4 user), because of all the nice features like reordering of lessons and reviews.

Thank you splease much and good work, as fast as I’m concerned atm :+1:

Firstly, this app is really useful. Thanks!

I found a bug or something: Recently I had to adjust the clock because of DST and now my reviews are 1 hour late.
On Wanikani website, reviews are available, but not on the Flaming Durtles, on which will be available 1 hour later :laughing:

Ah yes, I’m sure this was going to happen to someone for the DST switchover… If your schedule is now 1 hour late, then that means you did not correctly set the DST or time zone for your device. Your phone may be displaying what looks like the correct time to you, but either your DST or time zone settings are now incorrect, so your GMT/UTC offset is now off by one hour and behind the scenes your clock is one hour off.

Make sure your time zone and DST settings are correct, and I strongly urge you to let your device set its own time automatically to prevent this from happening again. When you do that, your schedule in the app will be good again.


Hello, I found a bug, I have no idea what causes it, so I did my reviews, 72 to be exact, I had 20 minutes, I had delay processing quiz results enabled, when I finished them, I got the recap, and pressed finish, the app went to the the main menu, started counting down the reviews, but only did 4 then just closed, opening it again, just showed me 68 reviews pending, I waited a bit hoping to see it start going down by magic, but you can guess how that went

I just let out a “I’m going to kill myself” then went back to work, needless to say I immediatly disabled the delay.

Maybe having a backup of the reviews in case something goes horribly wrong would be a good idea

Sorry to hear you lost those reviews, that kind of thing sucks…

The backup actually exists already. All the session information and review results are stored in the database so a crash can’t wipe them out. Only when delayed processing is enabled, there is a tiny gap while finishing the session where the results are transferred from the session to the background tasks. Your crash must have happened just in that tiny gap. With delayed processing disabled, you can’t lose more than 1 review result that way.

I’m very curious to know why the app crashed at exactly that moment, though. The part where the gap exists is very stable code by now, and there isn’t a lot that can go wrong there since I wrote that code very defensively. To help me look into this, could you try uploading your debug log (last option in the settings)? Hopefully I can see what happened then.

In the mean time, I’ll see if I can do something to close that gap. It’s not an easy fix, but it’s probably worthwhile to do.

1 Like

It happens, could have been worse I guess lol, I sent the debug log, I hope you’ll get an idea of what went wrong and maybe save the life of someone else lol, other than that the app is still great with all these options, and that dark mode which helps not burn my eyes in the morning :smiley:

1 Like

Thanks, I got the log. Can you tell me approximately at what time the crash happened? Nearest hour or something is close enough.