Saturday, December 14, 2013

Changes to A2DP Volume

With the weather like it is I have finally been working through the issues list. I am now posting my updates to g+ in the A2DP Volume tester community: https://plus.google.com/u/0/communities/110152746998730594422

I may end this blog and just use that community from now on.

Use this link https://play.google.com/apps/testing/a2dp.Vol  to become an app tester.

Wednesday, September 4, 2013

Google Music now my favorite in the car

To be honest I was not thrilled when Google Music had a major update a few months back.  They broke integration I had for playing a playlist.  It would open the player and just sit there on whatever I was listening to last.  Very frustrating.  It just ignores the playlist in the intent completely.  I tried Winamp which did launch playlists.  I also have Amazon MP3 because I use that to buy music mostly.  Having the 3 players is a problem.  If I launch a playlist with the default player, or send the play command generically from the app the 3 players all fight for who will respond.  The results vary and are inconsistent each time.

Finally one day I figured I would try Google Music again.  I created an instant mix starting with one of my songs.  It worked very nice.  So, I configured A2DP Volume to launch Google Music (not a playlist but just open the app) when my car connects.  It just open Google Music and waits for me to press play on my Bluetooth car kit (Moto T605).  One simple click and my instant mix resumes where it left off.  I can use the back and next controls on the T605 to switch or replay songs.  It actually works far better than launching a playlist.  I don't hear the same songs over and over.  I can create more instant mixes and have them ready.  Before I get in the car I can select an instant mix to match my mood.  I keep the phone in my pocket while driving.  I never look at it or interact with the phone directly.  This is the safest way to drive.

Google Music can play just on-device music, or all my music both in the cloud and on the device.  For a subscription fee you can also sign up for unlimited music streaming. Very flexible and very nice.  So I went from fighting it and cussing at it to liking Google Music so much that it is now my primary music player.  I would encourage others to give it another try.  It has improved recently too so it loads faster and seems more stable. 

This same approach also works with Pandora.  Just have A2DP Volume launch Pandora (the app only, not s station).  Make sure you have selected the station you want to play last time you use Pandora or just before getting in the car.  Once the Bluetooth connects, just click play from your Bluetooth controls.

Saturday, June 29, 2013

Motorola TK30 Car kit installed in Jaguar XJ8L

Details here: http://jimroal.com/cars/JagXJ8LTK30.pdf
video here: http://youtu.be/RHqqh92-OIY

I have now had this in the car for over a year. To be honest this kit is terrible. The software is super buggy and it crashes all the time. It also locks up. I finally wired if so it has only key power so it would clear the lock up every key cycle. I would not buy this kit again. Look for better options.

Probably the best thing to do now is get a good aftermarket stereo system with Bluetooth and Wi-Fi direct.

Sunday, June 23, 2013

Tuesday, June 11, 2013

Sunday, April 21, 2013

Jelly Bean 4.2 Now Supported & Need New Name for A2DP Volume

Need New Name for A2DP Volume

Jelly Bean (Android 4.1 & 4.2) finally implemented what should have been there all along.  When you adjust the media volume with a Bluetooth device connected, it will remember this volume on the next connection.  It will also remember the volume before the connection and return to that upon disconnect.  This was the primary feature of A2DP Volume, hence the name.  Today A2DP Volume does much more.  Now that this primary feature is really not needed (and in fact will cause strange results with Jelly Bean) I need a new name for this app.  I posted an issue here: http://code.google.com/p/a2dpvolume/issues/detail?id=161.  Please share your thoughts on what I should call it.  In fact, I am thinking about adding more features aimed at removing driver distraction so the app will be more focused on that.  I am thinking something like "Eyes Free Driving", "Eyes on the Road", or maybe just "Drive". Would love to hear from others as naming things is not my strong point.

Jelly Bean Now Supported

I finally figured out how to access and use the hidden functions in Android 4.2.  I posted my approach here.  I created A2DP Connect2 and published it to the Play Store.  I also implemented this in A2DP Volume.  A2DP Volume is still missing the interface to access the user defined Bluetooth device name since both interfaces cannot exists in the same app.  My thought is that I will eventually retire A2DP Volume as we know it today replacing it with the app names above and it will be for 4.2 and up. 

Thursday, April 11, 2013

Finally making progress on Jelly Bean 4.2 Bluetooth interfaces

I finally purchased a Droid Bionic on eBay to use as my primary phone so I could put CM10.1 (Android 4.2.2) on the old Droid 3.  Last night I finally got the IBluetoothA2dp interface working with CM10.1, sort of.  I implemented what I have so far in A2DP Connect 1.0.14 (now available for download).  It does not work on the first try since the binder to the interface finishes after the call to use it.  I need to redo a bunch of things to fix that but at least I know how to use the interface now which is a huge step. 

It starts with this


Intent i = new Intent(IBluetoothA2dp.class.getName());
if (context.bindService(i, mConnection, Context.BIND_AUTO_CREATE)) {
return ibta2;


This calls mConnection:


public static ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
ibta2 = IBluetoothA2dp.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
};


mConnection gets called when the service is connected or disconnected calling the functions within it.  The problem is that these calls happen after the ibta2 is needed.  So, the function I have in the code to get the ibta2 tries to use it before it is returned.  This stays bound though so the 2nd attempt worked because the prior attempt actually bound the service and kept it.

More work to do be done but significant progress.  It REALLY helps having a 4.2 device to test with.  Before that I was just guessing and hoping someone else would test.  I also did not have logcat to see what was going on. 

Saturday, January 5, 2013

Update

Here is the latest Play Store developer dashboard.


A2DP Connect has ramped up faster than A2DP Volume.

Here is the distribution of Android versions for A2DP Volume:



User feedback

Getting user feedback is a great way to stay connected to what folks want out of your app.  I use the issues lists in Google Code to manage defects and enhancements too.  The user reviews and comments from the Play Store are generally very helpful too.  However, sometimes the ratings and comments in the Play Store just leave me baffled.  Here is one example of that.



That rating and comment was recently left for A2DP Connect.  Apparently the user has never placed a widget on his home screens.  Because of his lack of knowledge on how to use widgets, A2DP Connect now has a 1 star rating and a scathing comment.

What this really comes down to is people get frustrated trying to work high tech things.  They read just enough to understand the basics (or in the case above not even that) and just use the device.  I can relate to this as I sometimes do it myself.  Who has time to read all that confusing stuff anyway.  I would be embarrassed however to find out I gave an app a bad rating just because of my own ignorance.

When creating apps it is important to make them as intuitive as possible.  In the case above, I need to think about how I could have guided that person to placing the widget on the home screen without annoying the rest of us who already know.  Do I have the app just put a widget on the home screen for the user?  Do I pop up a dialog after install that give the user a short tutorial?