How to Support Amazon FireTV hardware by Removing the Touchscreen Feature - android

I am building a Xamarin Android App targeting the Amazon FireTV. When I upload the signed apk to the
Amazon developer portal and review the supported devices list, I get the following message
for all Fire TV hardware:
Your APK manifest requires capabilities not present on this device:
android.hardware.touchscreen
Understandably the FireTV hardware does not support touch, so removing this capability seems reasonable. All other hardware devices are supported.
I can deploy and run the app just fine locally via adb, so the app itself has no problem running on the FireTV hardware.
At present, I have included the following within the manifest file in hopes of a different outcome, but to no avail:
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.hardware.faketouch" android:required="true" />
<uses-feature android:name="android.software.leanback" android:required="true" />
Is there anything else I can try to address this "touch screen feature" issue?

I believe the problem is because you have android.software.leanback required set to true. Amazon Fire TV devices don't necessarily have the lean back feature installed or set, unlike Android TV specific devices.
A complete list of features I have that will allow the app to run on Fire TV and Android TV devices (and any device that supports the TV feature):
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false"/>
<uses-feature
android:name="android.hardware.faketouch"
android:required="false"/>
<uses-feature
android:name="android.hardware.telephony"
android:required="false"/>
<uses-feature
android:name="android.hardware.camera"
android:required="false"/>
<uses-feature
android:name="android.hardware.nfc"
android:required="false"/>
<uses-feature
android:name="android.hardware.location.gps"
android:required="false"/>
<uses-feature
android:name="android.hardware.microphone"
android:required="false"/>
<uses-feature
android:name="android.hardware.sensor"
android:required="false"/>
<uses-feature
android:name="android.software.leanback"
android:required="false"/>
<uses-feature
android:name="android.hardware.type.television"
android:required="true"/>
<uses-feature
android:name="android.software.leanback_only"
android:required="false"/>
If you want it to run on devices with out the android.hardware.type.television (such as tablets) just remove that feature from the manifest entry. Otherwise it will restrict it to TV devices. I use the above settings in my production Android TV and Fire TV application.

Related

Google play not allowing HP Chromebook 14 G5

I received an email from a client saying one of our apps only installs on "some" chromebooks but not on the HP Chromebook 14 G5.
I checked https://sites.google.com/a/chromium.org/dev/chromium-os/chrome-os-systems-supporting-android-apps?visit_id=637873388265192668-2903345055&rd=1
Which states that this model supports Android apps. Our app uses the back camera for a qr code scanner and gps so I added these tags to the manifest
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.any"
android:required="false" />
<uses-feature
android:name="android.hardware.location"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<queries>
<package android:name="android.hardware.camera" />
</queries>
These tags allow the app to install on "some" chromebooks but not all. Im honestly at a bit of a loss how to diagnose this problem further? Possibly the client hasnt the most updated chrome os version?
Any other ideas or advice would be greatly appreciated.
I think the HP Chromebook 14 G5 does not have a GPS or the particular Chromebook does not have a GPS driver installed. The fact that you have that android:required="false" made it show up in the list of supported apps.

Unity3D app using Android device camera with auto-focus issue

I am working with a Unity3D app for Augmented Reality that, when deployed to an Android device, uses the camera to perform character recognition.
The tablet’s camera auto-focus no longer works though, so the scanning (character recognition) is really bad.
I am working on a number of hypotheses to find the cause; the first one being the fact that the Camera class was deprecated in API level 21.
When I run the following command in my Terminal, I get 7.0 because my SDK is new from April 2017.
$ adb shell getprop ro.build.version.release
The following snippet exists in the AndroidManifest.xml file in my Unity3D project. If the cause is the old camera class no longer being valid, how should I modify this code in the AppManifest file to fix the problem?
<uses-feature android:glEsVersion='0x00020000'/>
<uses-feature android:name="android.hardware.camera" android:required="true"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="true"/>
<uses-feature android:name="android.hardware.camera.front" android:required="true"/>

How to figure out why an Android device is not compatible with an APK

In the Google Play Developer Console I can check which devices are compatible/supported for my APK. How do I find out why a device is unsupported?
For example, the Google Nexus 7 "tilapia" and "grouper" are not supported. But Nexus 7, Google Nexus 7 "deb" and Google Nexus 7 "flo" are supported.
Is there a way to know which feature in the manifest is causing the problem?
Features:
android.hardware.CAMERA
android.hardware.LOCATION
android.hardware.location.GPS
android.hardware.location.NETWORK
android.hardware.screen.LANDSCAPE
android.hardware.TOUCHSCREEN
API Level 10+
On AndroidManifest.xml:
<uses-permission
android:name="android.permission.CAMERA"
android:required="false"/>
<uses-feature
android:name="android.hardware.camera"
android:required="false"/>
<uses-feature
android:name="android.hardware.camera.front"
android:required="false"/>
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false"/>
This should help. By default, declared permission are required. Nexus 7 (2012) doesn't have front camera, that's why this device isn't compatible.
http://developer.android.com/distribute/googleplay/quality/tablet.html#hardware-requirements
I think it is due to the lack of a rear camera on older nexus 7s. The tilapia and grouper are the 2012 version and have no rear camera (only front camera), flo is 2013 and has both types of camera.

Why is my app incompatible with Nexus 4?

My app is incompatible with Google Nexus 4. Why? Here's my manifest (all of it except for <application/> part):
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-feature
android:name="android.hardware.location"
android:required="false" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-feature
android:name="android.hardware.usb.host"
android:required="true" />
P. S. I've had reports that Samsung Galaxy S3 stopped detecting USB devices after updating to Jelly Bean. I wonder if it is related.
On the other hand, Nexus 10 also runs Jelly Bean and works perfectly.
<uses-feature
android:name="android.hardware.usb.host"
android:required="true" />
Set this to false and it should work. Not always, but generally usb hosts need to have the full USB port, not a micro one.

App not coming in ICS market android

I have added these permissions in the android market place.
<!-- Camera -->
<!-- Required to be able to access the camera device. -->
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
and then i have uploaded the app to Android Market. But my is not visible in the Android 4.0.3 tablet market. But visible in Android HoneyComb market place.
Minsdkversion: 12
Target : 12
Is any thing that i made mistake???
The target sdk version should always be the highest available. So use the 4.1 sdk and set target to 16.

Categories

Resources