小编ARL*_*abs的帖子

检查 Sensor.TYPE_SIGNIFICANT_MOTION 是否支持硬件

我将使用 Activity Recognition API 对应用程序进行一些优化。简而言之,我需要知道设备何时处于静止状态。但我不希望应用程序通过让传感器始终开启而耗尽电池电量。

据报道:

为了节省电池电量,当设备长时间处于“静止”状态时,活动报告可能会停止。一旦设备再次移动,它将恢复。这只发生在支持 Sensor.TYPE_SIGNIFICANT_MOTION 硬件的设备上。

我只会为支持硬件重大运动检测的设备注册 ActivityRecognitionAPI。但是我找不到一种方法来检查何时存在这种支持。

使用:

    SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);
    boolean supportSignificantMotion = (sensor != null);
Run Code Online (Sandbox Code Playgroud)

不区分支持是硬件还是软件(在大多数设备上,这可能仅通过加速度计传感器上的软件实现)。

有谁知道是否可以执行该检查?

谢谢

android android-sensors sensors

5
推荐指数
1
解决办法
2027
查看次数

SQLiteConstraintException:REAL字段上的NOT NULL约束失败

我收到了有关正常工作的一段代码的崩溃报告。

异常在insertOrThrow中启动,并且是:“异常android.database.sqlite.SQLiteConstraintException:NOT NULL约束失败:HISTORY.altitude(代码1299)”。

表中所有字段都声明为NOT NULL,特别是HISTORY.altitude字段声明为“ REAL NOT NULL”

我无法理解它为NULL的可能性,因为我在insert命令上填充了几行。

任何人都有可能的想法吗?

synchronized public void addSample( long time, int method, float altitude, int accuracy )
{
    ...
        ContentValues cv = new ContentValues();

        long day = new TimeUtils.Day(time).getMillis();
        cv.put(MetaData.COLUMN_DAY, day);
        cv.put(MetaData.COLUMN_TIME, time);
        cv.put(MetaData.COLUMN_ALTITUDE, altitude);
        cv.put(MetaData.COLUMN_METHOD, method);
        cv.put(MetaData.COLUMN_ACCURACY, accuracy);

        long id = latestSample.mId;
        id = mDb.insertOrThrow(MetaData.TABLE_NAME, null, cv);  // <--- Here crash
    ...
}
Run Code Online (Sandbox Code Playgroud)

这里是用来定义表格的代码:

/* Inner class that defines the table contents */
public static abstract class MetaData implements BaseColumns
{
    public static …
Run Code Online (Sandbox Code Playgroud)

sqlite null android nan android-sqlite

-1
推荐指数
1
解决办法
2912
查看次数

标签 统计

android ×2

android-sensors ×1

android-sqlite ×1

nan ×1

null ×1

sensors ×1

sqlite ×1