Android 安卓警报不重复

Android 安卓警报不重复,android,service,alarmmanager,Android,Service,Alarmmanager,我已经在这里查看了许多解决方案,但我似乎仍然无法让闹钟每30秒启动一次服务。30秒仅用于测试。报警设置代码如下: Intent myIntent = new Intent(this, HeartRateService.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent, 0); AlarmManager alarmManager = (AlarmManag

我已经在这里查看了许多解决方案,但我似乎仍然无法让闹钟每30秒启动一次服务。30秒仅用于测试。报警设置代码如下:

    Intent myIntent = new Intent(this, HeartRateService.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this,  0, myIntent, 0);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND, 7); // first time

    long frequency= 60 * 500; // in ms
    alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
            (SystemClock.elapsedRealtime() + frequency),
            frequency, pendingIntent);
manifest.xml

<service android:name=".heart_rate.HeartRateService"/>

我有一个心脏传感器服务,可以读取可穿戴设备上的心率15秒,然后使用stopSelf()停止。我不认为这可能是原因,但即使我把它拿出来,它仍然不起作用

private void sendMessage(int heartRate, long dateTime) {
    Log.d(TAG, "sendMessage: ");
    PutDataMapRequest dataMap = PutDataMapRequest.create(WEARABLE_DATA_PATH);
    dataMap.getDataMap().putInt("reading", heartRate);
    dataMap.getDataMap().putLong("date_time", dateTime);
    dataMap.getDataMap().putInt("sensor_type", mHeartSensor.getType());
    PutDataRequest dataRequest = dataMap.asPutDataRequest();
    PendingResult<DataApi.DataItemResult> pendingResult =
            Wearable.DataApi.putDataItem(mGoogleApiClient, dataRequest);

    new HeartRateService.SendMessageToDataLayer(WEARABLE_DATA_PATH, dataRequest).start();

    stopSelf();
}
private void sendMessage(整数心率,长日期时间){
Log.d(标记“sendMessage:”);
PutDataMapRequestDataMap=PutDataMapRequest.create(可穿戴数据路径);
getDataMap().putInt(“读取”,心率);
getDataMap().putLong(“日期时间”,dateTime);
getDataMap().putInt(“传感器类型”,mHeartSensor.getType());
PutDataRequest dataRequest=dataMap.asPutDataRequest();
潘丁格勒潘丁格勒=
可穿戴.DataApi.putDataItem(mGoogleApiClient,dataRequest);
新建HeartRateService.SendMessageToDataLayer(可穿戴数据路径,dataRequest).start();
stopSelf();
}

原来我从来没有启动过我的服务,所以它醒着的时候什么也没做。我创建了这个简单的广播接收器,以在每个间隔启动服务。浪费了无数的时间,却得到了教训

public class HeartRateServiceStarter extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent service = new Intent(context, HeartRateService.class);
        context.startService(service);
    }
}

原来我从来没有开始过我的服务,所以它醒着的时候什么也没做。我创建了这个简单的广播接收器,以在每个间隔启动服务。浪费了无数的时间,却得到了教训

public class HeartRateServiceStarter extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent service = new Intent(context, HeartRateService.class);
        context.startService(service);
    }
}

你有什么问题?警报有重复吗?没有,没有重复。它在30秒后会响,然后应该每30秒响一次,但什么也没发生。你有什么问题吗?警报有重复吗?没有,没有重复。它会在30秒后熄灭,然后应该在30秒后每隔30秒熄灭一次,但什么也没发生。