android: device not supported by app- why?

I am currently developing a camera app. Now one of the users is complaining that his device is not supported. It's a Acer A200:

I don't see any reason why android market / google play marks the app as not supported for this device. Do you know what might be the reason?

Here is the manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.ttttrash.myapp"
    android:versionCode="32"
    android:versionName="3.2" >

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:hardwareAccelerated="true">
        <activity
            android:name=".CameraActivity"
            android:configChanges="keyboard|orientation|keyboardHidden"
            android:label="@string/app_name"
            android:windowSoftInputMode="adjustPan" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.media.action.IMAGE_CAPTURE" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name="net.ttttrash.myapp.PreferenceActivity"
            android:label="@string/set_preferences" >
        </activity>
        <activity 
            android:name="com.google.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize">
        </activity>

    </application>

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="8" />

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

</manifest>

Answers


Thanks to Entreco I found the answer. Just looked up the supported devices in my app settings. Then, by comparing the feature specifications of the not supported tablet (Acer Iconia A200) to a supported device (A510 tablet) I found the answer: The A200 does not have a rear camera. So what's def. missing is following entry in the manifest:

<uses-feature android:name="android.hardware.camera.front" android:required="false" />


Add this to your manifest:

<supports-screens android:smallScreens="true"
              android:normalScreens="true"
              android:largeScreens="true"
              android:xlargeScreens="true" />

I'm assumuing that leaving out explicit support for tablets (xlargeScreens) causes Google Play to consider it unsupported.


Ok, this is a long shot, but could it be the camera is disabled for some reason on that particular device?

It seems that the following permission:

<uses-permission android:name="android.permission.CAMERA" />

Implies that your app is using android.hardware.camera and android.hardware.camera.autofocus features. However you defined only android.hardware.camera.autofocus as non-mandatory. So try adding:

<uses-feature android:name="android.hardware.camera" android:required="false" />

Details about google play application filtering


I once had the same issue, when it turned out that the user installed a custom rom. This custom rom had a bug in the Camera (e.g. the camera was not supported, which is quite common for roms), and that was causing the app to not be compatible...

Also, double check in your google play developer account, if the Acer A200 is amongst the supported devices. E.g. in the developer console, check Device Catalogue under Release Management! There, you can search for your device, and you can see if the device is supported.


I was getting "supported by 150 devices" and changed this by lowering my minSdkVersion from 28 to 24.


Need Your Help

Advancing a SpriteKit physics simulation to a stable rest state

ios sprite-kit

I'm using SprikeKit's physics to simulate a fairly simple set of balls trapped in a containing circle. The initial world state is not stable, in that when the simulation starts, the balls will fall...

Surely schedulers aren't this harmful? Don't we have better APIs?

file-io io operating-system scheduling

I'm wondering what APIs are available to avoid the following problem.