Android app: Diopter Calculator

app link:

Greetings! A while ago I have made a post about the demo android app which measures diopters. Since then many things has happened in my personal life, however, I’m now determined to finish this project.

The app works in a similar way to the endmyopia diopter calculator . The user is shown static text. He is then prompted to move as far from the phone screen as possible until the text becomes little blurry. After that, the user either presses the camera button or covers his face with two palms which triggers the measurement action. The app measures the distance from the phone screen to the user’s face using augmented reality and uses this information to give the user approximate amount of optic correction in diopters which the user would need to see clearly.

The app currently consists of two screens: the capturing screen and the result screen. However, I plan to add more. I’d like to add at least the following features in order to consider it to be the most basic release candidate:

  • tracking progress (simple interactive chart)
  • settings (reference text value (currently “FOCUS”), text size, ability to calibrate the distance etc.)
  • ability to make backups of the progress (upload to google drive)
  • help section, to teach people how to use the app
  • (@brett 's idea) configurable notifications to remind the user to take the measurement

I feel that the last one might be the trickiest one.

@jakey was kind enough to create the Endmyopia developer account on Google Play and to grant me access so that I can prepare and publish the app.

The app is open-sourced, which means that there will be no ads, ever. Source code is available here, along with the history of all changes:

Things to be aware of:

  1. The app requires google’s ARCore framework (it will launch its play store page the first time the app is launched if ARCore is not installed). ARCore, however, is currently available on a limited number of devices, and many people reported that their devices can’t run the app because ARCore is not available. There are some hacks which might allow such users to install ARCore manually (not from the play store) and still use the app, I just don’t have a decent phone which does not support ARCore to test it. I might find one though.
  2. The app measures the distance from the phone camera to the tip of user’s nose (not the eyeballs), this might give slight inaccuracy. I plan to add a setting where a user will be able to calibrate the final result by adding a static number to it.
  3. The user needs to look straight at the phone, so that his face is approximately in the middle of the screen, no head tilt. Otherwise the measurement might become highly inaccurate. I have built a prototype which would display the guides on the screen which would prevent the measurement from being taken if user’s face is too far off from the center and/or the head is tilted, but I have considered to be too restrictive, and most users will likely find it too distracting. So I just left it as-is, let me know if you think it’s still important to add the guides.

Please post your thoughts and any issues that you have.

20 Likes

I tried it on my phone. It’s quite cool! Can we use other single-hand gesture to trigger the measurement? I need one hand to hold the phone.

You can try to cover both eyes with your free palm, or just press the camera button with your free hand. The idea of using the two-palms gesture is to be able to trigger the measurement while your phone is too far away (when you have low myopia and need to move further than the length of your hand) and you can’t press the camera button. If you’re holding the phone in one hand I can assume that you can reach it with other hand.
I can also take a look at a possibility of triggering using the volume buttons.

Hi @Denis! Got your e-mail too, will log in there and figure out all the permissions bit.

And to everybody, we need to come up with some kind of reward / benefit / contribution for this type of amazing effort. It’s so rare and yet really what defines what we can do as a community, sharing some resources and skills.

5 Likes

Well done Denis! This is amazing work. I tested it and put the phone on my handy lil magnetic gorillapod on the wall to get more distance.

It correctly measured -1 for me!

20190621-112957

3 Likes

This is good to have handy when people show an interest in endmyopia. While the iron is hot, get people to try out the app, measure their diopters and talk about distance to blur.

As I’ve tried to get people turned on to this stuff, one of the gaps has been the space between the “that’s interesting” response and actual action. Show people the app right on the spot and you’ve got the first action. Then, point to 7 day guide whole you’ve got their phone up.

3 Likes

Brilliant work Denis
Thanks a lot for the effort and this opportunity.
I hope that you would be able to release it in Google Play and AppStore later, so the rewarding would be higher

2 Likes

I would like to contribute beyond a thank you

Thank you for the kind words everyone! The best reward for me is
a) my own improved eyeballs
b) knowing that some of my work might be able to improve someone’s eyes.
I would’ve never dared to continue with this project if I hadn’t received all the feedback on my original post, this alone motivates me a lot.

I have just finished the initial setup of the Beta channel on Google Play and pushed the initial build to Google. Now they will review it thoroughly (since it’s a first build from a brand new developer). Once they greenlight it I’ll post an enrollment link here (and probably on FB group).

Starting working on chart/graph. The measurement data should be automatically aggregated into a lifetime, browsable chart/graph, which people should be able to backup and share.

5 Likes

@Denis Also welcome to join the mentored BackTo20/20 program, if you feel it might benefit you (on the proverbial house, naturally). I’m in the support forum there daily to answer individual case specific questions and help along the way.

2 Likes

This is what we’ve been all waiting for, theres barely any apps that measure “rx” We need one for iphone in later future.
My android isnt compatible with the ARcore, what is the manual way to do it and potential risks

This is really interesting! Looking forward to the release :smiley:

1 Like

That’s very generous, thank you Jake!

1 Like

Although I haven’t tried it myself there seems to be a way to install ArCore on a rooted device https://www.youtube.com/watch?v=D1uEaaxJOXQ
As for the implications – altering system files on a rooted phone can always be dangerous, so try on your own risk. You should always be able to do a factory reset if things go too bad though.

1 Like

The app has been approved by Google in the “Health & Fitness” category! Please enroll into the Beta testing and let me know of any issues. The enrollment link: https://play.google.com/apps/testing/org.endmyopia.calc
Note that this is still work in progress.

4 Likes

Just tested it out. Very cool!

Here are a few ideas of features in addition to what you’ve already mentioned:

  • The ability to set up notifications on a weekly basis to remind the user to take measurements. Or a customizable time period.
  • A setting to turn off the noise upon capture.
  • This is a stretch, not sure if it’s reasonable: A background mode that will notify the user if the screen is too close to the user’s eyes. The idea is that it would be the equivalent of your mother telling you that you’re sitting too close the the TV. You set a minimum distance, and if the phone creeps too close to your face, you get notified.
1 Like

Thank you very much for the feedback!

A setting for the sound is definitely on my radar, the idea was to provide a user with some kind of feedback when he takes the measurement using a gesture, which implies covering one’s eyes. So users with relatively low myopia, who need to keep the phone out of the reach of their hands would know that the gesture actually worked. Obviously, there’s no need for the sound for people who press the Capture button manually.

Great idea for the notifications. I’ll update the roadmap (the first post here).

As for the background mode – that’d be just another world of awesomeness. Unfortunately this is most likely not feasible since the process of running ArCore (and measuring the distance constantly) is extremely battery intense, so if left running in the background it would suck the phone battery in no time. And, ArCore doesn’t run when the app is in background AFAIK, unless we build our own modified version from sources. I’m however now thinking if it’s possible to create such app for laptops with front camera, would be awesome too.

2 Likes

My advice would be to enable an option to use some standard things to measure, like credit cards etc

Can you elaborate more on that?

Basically, you know that hands shapes and sizes are different for all people. I know it would give an approximate measure and that’s great, so that would be default option. But you can take some standard measuring tool too, for more precision, eg, cut a cardboard in 2x4 inch or something like that. The idea actually comes from a online lens retailer in India called LensKart, it has a feature to try out glasses in 3D. It basically scans the head from couple of angles and then asks the user to hold a credit card on their forehead, hence calculating head size and hence, glass size.

1 Like