Android 警报不重复
Android alarm not repeating
我在这里查看了很多解决方案,但我似乎仍然无法每 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();
}
事实证明我一直都没有启动我的服务,所以它在醒来时什么也没做。我创建了这个简单的广播接收器以在每个时间间隔启动服务。浪费了无数小时,但吸取了教训。
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 秒仅用于测试。闹钟设置代码如下,
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();
}
事实证明我一直都没有启动我的服务,所以它在醒来时什么也没做。我创建了这个简单的广播接收器以在每个时间间隔启动服务。浪费了无数小时,但吸取了教训。
public class HeartRateServiceStarter extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, HeartRateService.class);
context.startService(service);
}
}