|Main screen of the Touch DRO Androd app|
I've created a new [public] repository on BitBucket for the project here: https://bitbucket.org/ycroosh/android-dro.
Fair warning: this is a very early alpha version with only basic functionality tested on a few devices. Newer the less, it is a start, and you are free to use it in whatever way suits you.
If you'd rather just install the app without all the fuss with setting up Eclipse, etc., the app is available via Google Play Store here: https://play.google.com/store/apps/details?id=com.yuriystoys.dro. Alternatively, to side load the application, the .apk file is here: yadro_current.apk.
What's Done [So Far]
- Bluetooth communication service used for raw communication. It's based on the "Bluetooth Chat Service" sample code, but I stripped the unused [chat server] code and changed the way the received messages are processed. Instead of bubbling-up raw text to the handler my version sends it to the parser.
- DRO position parser is a basic implementation of the state machine described in the previous post. It takes one character at a time, and either accepts it or resets to the starting state. I.e. when a parse error occurs the whole position message is discarded. When a "terminator" is encountered the parser call the callback methods on the listeners.
- Main application class is mostly there to keep track of the communication service and start/stop it when nobody is "listening" (when all callbacks are removed, the service stops). At this point there is only one activity listening to the readout but as features are added there will be more.
- Main activity is the actual DRO user interface. At this point it lets you connect/disconnect to/from the paired position encoder (Arduino) and switch between metric/inch and absolute/relative mode. Unfortunately the preferences screen is still "under construction", so there is no way to change the resolution etc. I intend to add it in the nearest future, though.
What's Coming Soon
- Preferences - the settings activity that will let the user set the calibration data and the defaults for modes. etc.
- Points list - a way to "remember" the points. In the most basic version this will be a simple "Add" button, but more likely I will implement some way to automatically add points based on some criteria.
- Functions - a way to select two or more points and calculate things like "hole center", etc. I don't have anything concrete in mind, so please let me know if there are things you feel would be useful.
As usual, I'd really appreciate your feedback and suggestions. The comments and emails help me better understand what the community needs, so please keep them coming.
Special shout out to the people who commented/critiqued my design. It's been extremely helpful to have a second set of eyes going over the code, so here: thank you, guys.