如何保持设备传感器唤醒?

时间:2019-11-19 18:14:49

标签: java android sensor android-sensors foreground-service

使用传感器时,我正在检测运动以进行一些计算,为此我将传感器注册在Service上。

sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION), SensorManager.SENSOR_DELAY_NORMAL);

为此,我已经在使用带有通知的前台服务来使传感器保持活动状态。

下面是我在Service类上使用的代码(通知优先级更高,可返回粘性)。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    registerSensor();

 Notification notification = new NotificationCompat.Builder(this, ServiceNotification.CHANNEL_1_ID)
           .setSmallIcon(R.drawable.ic_stat_name)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            //.setCategory(NotificationCompat.CATEGORY_SERVICE)
            //.setOngoing(true)
            //.setAutoCancel(true)
            //.setOnlyAlertOnce(true)
            .setColor(getResources().getColor(R.color.colorPrimaryDark))
            .setContentIntent(pendingIntent)
            .build();

    startForeground(13, notification);
    return START_STICKY;
}

Android System不会杀死我的应用程序,它会整夜运行。但是直到我打开屏幕,传感器才响应。

试图收购Wakelock来解决我的问题。

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MService: WakeLock");
    mWakeLock.acquire();

但是我不想这么长时间使用WakeLock

是否可以通过某种方式使电话的传感器长期处于活动状态,或者我的前台服务/通知有误? 但是,我对优先级较高的前台服务进行了很多研究。

0 个答案:

没有答案