Volume Butler 2.1.0


A new update to Volume Butler has been released with a few special additions and fixes.

First is a large material design update. This adds many touches which clean up the app, make it more user friendly and clean.

Under the hood much of the app was re-written to fixes several bugs and make updates easier in the future.

The wear app was updated with a few improvements to improve loading speed and now uses the latest Google Wear APIs.

A number of bugs were fixed including schedules not remembering the start and end date when editing. Quick Schedules notifications not dismissing when ending. And a few other random fixes.

App Control added a on and off state for each item so they do not have to be removed and re-added but can be enabled and disabled.

We hope you enjoy Volume Butler!

Voice Text, Text by Voice, and Voice Messenger

A significant update was just released for Voice Text, Text by Voice, and Voice Messenger (formally known as Voice Texting).

This update includes:

  • A new message queue system which allows text messages to be queued up and listened to one after another. This works for previous messages and new ones that arrive during the creation of a message. This workflow is more natural and allows messages to be listened to and responded to in a more useful way.
  • Part two of the update was a new user experience which adds toggles for the primary features of each app right from the main screen. These features can now be toggled from the notifications area, main screen, settings screen or widgets. (Some can also be controlled via Tasker as well.)
  • Changing the background color also controls the color of the listening area so most of the app will be dark. (Will add dark mode to the system dialogs too in time.)
  • Widgets were also updated to be more efficient and allow the background color to be light or dark.
  • Some new flows were added to exit the app via voice. As well as some subtle changes to existing voice commands which make more sense.
  • The app was slimed down with less icons and using Androids new Vector Drawables. So the icons are crisp and clean while keeping the APK smaller.
  • The entire engine which drives the conversations was rewritten to fix some bugs and provide for the message queue feature. This makes picking a person more reliable and improves the conversation quality.
  • Performance was drastically improved with the help of dependency injection (Dagger2) and RXJava. Overall the app was simplified significantly because of these wonderful technologies.
  • Person matching was significantly improved too with the use of some phonetic matching algorithms. Unfortunately this only improves english, but its something.
  • The number of bugs which were found and fixed are embarrassingly large. But most if not all should have been squashed. This improves inconsistencies between features like Driving not working when being turned on/off from the notification or widget area.
  • The last known issue is a bug with Googles Recognition Service which has an open ticket and will likely never be fixed unless it becomes a problem for Google. (Not enough attention or stars on the issue) I’ve added a few workarounds which help the issue to not happen as often but it still happens. Will keep at it but I spend a week on it and couldn’t fix it 100%.
  • Overall the apps are better, more stable going forward, will be simpler to maintain. The features are unmatched and we hope you enjoy Voice Text, Text by Voice, and Voice Messenger.


Matthew at Tuogol

Volume Butler Essentials

A new feature is going to be added to Volume Butler called Volume Butler Essentials. This is an application that works in conjunction with Volume Butler and adds two new features.

  1. SMS messages can now apply a profile. Enter a key word or phrase and as text messages are received Volume Butler will scan to see if the text has that phrase. When found the specified profile will be applied.
  2. Bluetooth events for connecting and disconnecting to a Bluetooth device. When connecting or disconnecting a specified profile will also be applied.

These features will become an optional part of Volume Butler as part of the 1.8.0 release.


Volume Butler 1.6.1

With this update of Volume Butler I took a look at the application as a whole and wondered how I can make it simpler but still just as smart. I am painfully aware that Volume Butler has a learning curve and that can discourage many people from understanding how useful automated volumes can be.

Since Volume Butler was written so long ago I knew that the code was in pretty bad shape. I started the app when I was doing .NET and finished it before I ever had my first paying job as an Android developer. So lots of the code looked like .NET, was buggy, had lots of duplication, and inconsistent as a result.

The fist step was to take a loot at Androids new RecyclerView. This is a tool that helps make lists of things run smoother and with less code. All of Volume Butler now runs on the Recycler View and it has made life SOOOO much easier. I was able to break apart the differences between features and keep all the common things to reduce my code by up to 40%. This will make finding and fixing bugs vastly easier and much quicker.

Some of the styling was out of date and inconsistent. This was altered using Android Styles and toning down how much navy blue the app was using. Also the cards were modified to use Androids CardView library with a slight modification adding the three dots in the bottom right corner. These dots provide some functionality that previously existed by long-pressing. Let’s be honest, long-pressing is bad. It’s bad because no one knows you can long-press and it turns into a guessing game. The three dots are great because its a consistent way to hint to the user, “Hey you can press this and something will happen.”

Next was the way I was doing database access. Volume Butlers database is pretty large for a mobile application. Lots of tablets, which inter-relate. For example if you delete a Profile and that profile belongs to a Schedule, Quick Schedule, and Location all of those must also be deleted. It’s complicated and tricky to make sure everything is working correctly. I broke out all my database methods into separate controllers which allowed for more compartmentalization. When this was done I could compare the way Schedules was doing database access in comparison to how profiles was doing database access. This simplified how the code was written and provided a more common way to do database access.

Next my app structure sucked. Looking at how I structured things I wonder what I was thinking. That all got refactored into a more logical order so finding and fixing this is faster.

Perhaps one of the most helpful things that came out of the 1.6.1 release is bug fixes. Going through each line of code and reviewing, refactoring, reordering, removing, and any other re<fill in the blank> helped me find lots of bugs. Several of which were pretty critical. I went out and bought a Samsung phone (For the record I despise their phones) so I could find all the bugs that are specific to Samsung. I found about 7 critical bugs that I could only reproduce on their phones. Kind of a joke.

The Android Support Library was also updated as was Google Play Services. This broke Maps, Locations, Activity Recognition, Wear, and a few other things. I recognize I was out of date a bit but that was a lot of work to just get current. Along with updating these Services I also added the Places API so you can search by address for the place you want to add a location too. This is fairly simple but I was lazy and didn’t see the effort worth the cost.

Future updates will include ways to bother people just enough to get them to buy the app. For such an advanced app that is so useful not a lot of people buy into it. Partly my fault for not marketing and for thinking people are smart. Since there is a learning curve it’s a hard sell. Weird that something that you’ll use every day for years and costs a few dollars is less important that a fast food hamburger that will be digested in a day or two.

I’m rambling, so happy update to Volume Butler 1.6.1.