I have created an Android TV app that works as expected on my ADT-1. However, I've found it also works on my Nexus 10 and Nexus 4 devices (although it's not really usable on the Nexus 4 because you can't see enough on the screen) if I install it using ADB.
When I publish it on Google Play in beta test mode, I can actually install it on all 3 devices. But the icon only shows up on the ADT-1, and I can only launch it from there. It doesn't show up as an installed app on the other devices, and within Google Play there is no launch option, only Uninstall.
So I either need it to work on tablets, where it actually looks OK, or not allow people to install it except on an Android TV device. However, Google Play actually requires you to upload screenshots of both Android TV and 10 inch tablets. So what am I missing?
Per the Get Started with TV Apps leanback section:
Declare that your app uses the Leanback user interface required by Android TV. If you are developing an app that runs on mobile (phones, wearables, tablets, etc.) as well as Android TV, set the required attribute value to false. If you set the required attribute value to true, your app will run only on devices that use the Leanback UI.
<manifest>
<uses-feature android:name="android.software.leanback"
android:required="false" />
...
</manifest>
Set that to true if you only want the app to appear on Android TV devices.
Related
I applied following to distinguish between normal Android OS and Android TV:
if (pm.hasSystemFeature("com.google.android.tv")) {
// here it is a Android TV
} else {
// here it is a smartphone or tablet or Car
}
It does not work for Android based TV sticks. I think it works for GoogleTv only?
How can I check for any Android based TV?
We match by android.software.leanback OR com.google.android.tv.installed. Where the former is the "official" way to check for it but of course manufacturers always do their own thing.
The latter was chosen by checking out quite a few different devices and we haven't had any complaints about not supporting TV hardware after that.
To publish to the PlayStore with <uses-feature ...> in the manifest, we resorted to publishing two variants, each with one of the features as a requirement...
In Google play (app market), if an application is not compatible to your device (for some reason, say small screen size, etc). Then it is not even shown in the list.
Now, as an app developer I never want to unintentionally add a limitation in my app that forbids it from a range of devices.
So, while developing how can I make sure that the application will be able to run on atleast the type of devices that I intend.
Also, right now I'm developing an app & testing it in on my phone with version 2.3.5. And every now & then Google changes some method names & flags.
For newer android releases, I CAN test it on emulator, but testing it on phone/tabs/etc. is a different thing.
Please suggest.
how can I make sure that the application will be able to run on atleast the type of devices that I intend.
In manifest file you can mention, which type of device you want to run your app. And for testing you can create emulators for different devices to test your app. Try to make app UI such that it runs on all devices.
Google changes some method names & flags
Whenever Android changes any thing it will always be upward compatible means if you have made app for 2.2 it will run on 2.2 and above (screen size or resolution is other thing)
Regarding UI see my answer here
Layout for 720*1280 devices
By default apps will be available to as wide a range of users as possible.
There are certain limitations you can define in your manifest file, such as not being available on small screen sizes, but they are at your discretion.
The only limitation Google imposes on you is that any user who has a lower Android version than your minimum SDK version cannot see your app. To get around this, you can either design the app for lower SDK versions (I believe building for 2.2 and up gives you access to about 95% of the user base) or maintain multiple versions of the APK.
Read this. It will really help. Next Eclipse will help you a lot, firstly you can define what you wish to support (screen sizes and hardware requirements or even if they're not necessary but may be used) in the manifest. You can run a version check and implement APIs dependent on which version of Android you're running on. That's personally what I do, I check the API level and if it's greater than or equal to the API I wish to run I run it, otherwise I attempt to find compatible code (often using the compatibility library) or alternatively drop support for that feature, for example JellyBean notifications there's not really any work around for expanded notifications but I can use the NotifcationCompat builder.
I developed and android application and uploaded in google play for mobiles. Now i did the tablet version with same functionality. In my tablet version i used <uses-feature android:name="android.hardware.telephony"> attribute which is used for phone calling services. I developed my application for both calling supported and unsupported tablets.Here i want to show my tablet version for only tablets even those are enabled/disabled with calling functionality.
I know one thing like below which will filter application play store and show the application only for android mobiles.
<uses-feature android:name="android.hardware.telephony" android:required="true"/>
Is there any other way which will filter my application and make available for only tablets( calling function enabled/disabled)
Please advice me.
Thanks in advance.
you can put on your manifest the support screen size xlarge and then the phone version you put support screen size small, medium, large.
Also you can check on the google play publish site the multiple APKs thing. I never used by I reckon it's used exactly for that.
I developed an Android app and released it on Google Play yesterday. The only problem is that I can't install the applicatien from the market on my own phone (HTC DESIRE/BRAVO). It is listed to be compatible with htc desire but when I try to download it it says it isn't.
I rooted my phone and have BCM ICS 4.0.3 CM9 installed. Could this cause the issue? How can I make it compatible? Thanks
Edit: Is it possible to adjust something in the code?
Yes a custom rom can make apps appear to be incompatible even when they are. A common issue is when it uses a non standard screen density setting in an attempt to gain more screen real estate.
If you do have a modified density, you could try setting it back to the default for your device. http://wccftech.com/article/increase-screen-dpi/
I just put an app on the market and it is showing on all phones I have except for my Acer Liquid Mini. This one:
http://www.gsmarena.com/acer_liquid_mini_e310-3711.php
I have phones with the same res screens, Android 2.2, and close enough to the same hardware specs yet this is the only phone that it doesn't show for. It is running on factory defaults. When I try to install by the browser Google just says that the app isn't compatible and no more information.
I have the minSDK set to 4, maxSDK set to 10, I'm not specifying any screen resolutions in the Manifest (as recommended by the Android Doc post Android 1.6) and install location is set to "auto".
Does anyone have any ideas?
Apparently Google has problems with knowing the hardware constraints on some devices, such as this one, my Desire with the 2.3 upgrade and my Irish Galaxy 10.1" tab. They are working to sort it out
You could try deploying you app on appslib, they got a list of devices supported. You can choose a set of features required by your app and see the devices that will be able to run it.
I can't promise that both Android Market and appslib will give you the same results, i.e. will associate a device to the same requirements but that's a track to follow.