是否有任何方法可以过滤清单文件中、Play Console 或其他任何地方不支持“计步器传感器”或“步数检测器传感器”的设备,但将该应用安装在支持以下功能的设备上:支持其中一个传感器吗?
当然,在 Google Play 控制台中,我可以检查所有可用设备的硬件支持列表,并禁用不支持任何这些传感器的每个设备,但这似乎非常错误且耗时,所以我正在寻找更多方便的方式。
我从头开始创建了我的第一个应用程序,Simple Stepper,它是一个步数跟踪应用程序。到目前为止效果很好。在代码中,我区分了安装应用程序的设备是否支持“步数计数器传感器”或“步数检测器传感器”。然后使用找到的传感器来检测脚步。如果两者都存在,则使用“计步传感器”。
但是,我发现有些下载了我的应用程序的人无法使用它,因为没有找到上述传感器。为了避免其他用户遭受这种糟糕的体验,我实现了运行时检查,在第一次启动时告诉用户,如果两个传感器都不存在,他们将无法使用该应用程序。到目前为止效果很好。
但我对这个解决方案并不满意,因为它给下载该应用程序的用户带来了应用程序无法运行的糟糕体验。为了确保没有其他用户感到沮丧,我想知道是否有一种方法可以确保这些传感器之一在用户的设备上安装之前可用,如果没有,则不要让用户下载应用程序首先,或者更好的是,完全向他们隐藏它。
所以我发现,可以在清单文件中使用以下标志:
<uses-feature
android:name="android.hardware.sensor.stepcounter"
android:required="true" />
还有
<uses-feature
android:name="android.hardware.sensor.stepdetector"
android:required="true" />
但我找不到一种方法来检查一个或另一个传感器是否可用。看来我只能检查两者是否可用(将两者都设置为 true)或都不可用(将两者设置为 false)。
或者也许有人知道,当“步数传感器”可用时“步数检测器传感器”是否始终可用,但反之则不然。在这种情况下,我只会使用“计步传感器”标志来过滤 Google Play 中的应用程序。在运行时,只需使用“计步传感器”(如果可用)。但我找不到这方面的信息。
欢迎任何帮助!
我们可以使用
SensorManager
检查传感器可用性。我们可以使用 getSensorList
方法检查并获取所有可用传感器的列表,并迭代该列表以检查所需传感器的可用性。
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// Check for pedometer sensor
Sensor pedometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
boolean hasPedometer = pedometerSensor != null;
// Check for step detector sensor
Sensor stepDetectorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
boolean hasStepDetector = stepDetectorSensor != null;
然后根据你的应用业务逻辑进行处理。
if (hasPedometer || hasStepDetector) {
// Allow the app to function
} else {
// Display a message to the user indicating the sensor requirements
}
指向我的存储库的 GitHub 链接,用于检查运行时传感器的可用性。 检查传感器可用性