In the US Market both Amazon and Google have usb cast-type dongles for devices and accessories for casting to different speaker rigs. And we have to consider this as that is the 2nd most popular environment to listen to music from a mobile device, ie the home.
And at the same time in the Android ecosystem we have those who customize their own ROMs. We do not want to shut those particular android device users out.
Than we have the differences in App Store and Service approaches of Amazon and Google. Amazon, because they are the underdog, wants AmazonFling to work on all android devices whether they have Amazon store installed or not. Google has limited GoogleCast to PlayStore Android devices.
Side note, for those not in the know Google does a Play Services stub lib for developers which developer link to but when that is compiled it actually points to the downloadable playServices apk that the user is prompted to download before using the full play services of the app.
Thus in GWSMusiKal I have to set it up so that with the Google Play Store edition having two cast libraries both googlecast and amazonfling along with providing the additional whisperplay jar lib dependency as whisperplay is already installed on Amazon devices but not Android PlayStore-enabled devices.
Where it gets a little tricky is that I have to instruct ROM-customizers to only use the PlayStore app and in Amazon's AppStore I have to instruct users to only install the Amazon AppStore app on FireOS devices. Why? Because Amazon does not have or has not implemented their own package-manifest style filtering as they use the one that AOSP has come up with. So I do little cautions in the app descriptions and some detection of a FireOS device and etc to do a user caution if they downloaded the wrong edition.
Side Note: I do not know at this point whether I should implement a way to play music files from the cloud services of Amazon and Google. On one hand its probably very important as it may be a in-popular-demand-feature that users might expect. On the other hand if it competes with Amazon or Google services it might get the app pulled and ban from Amazon's and Google's app stores. And I do not think Amazon or Google has public android-intents for their music locker and play services from cloud-apps which means I cannot integrate in that way of starting up those apps.
But, its something to check on to see if they made public intents or private ones. Obviously, if they are public than I can integrate by having those apps start-up when the app user needs that functionality. Of course, that means that we set it up so that MusiKal can replace the default music player to get the full-feature-rich experience of music listening.