AlarmManager不在Android wear中工作
我正试图从我的Android wear项目中调用AlarmManager。但由于某些原因,它失败了。下面是我的代码。我确信我正在AlarmReceiver中调用setAlarm方法(我的日志正在打印),但之后什么也没有发生。我的目标是每30秒报警一次。调用AlarmReceiver onReceive时。SendBroadcast到我的服务,它将把消息发送到服务器。我做错了什么 舱单详情:AlarmManager不在Android wear中工作,android,broadcastreceiver,alarmmanager,wear-os,Android,Broadcastreceiver,Alarmmanager,Wear Os,我正试图从我的Android wear项目中调用AlarmManager。但由于某些原因,它失败了。下面是我的代码。我确信我正在AlarmReceiver中调用setAlarm方法(我的日志正在打印),但之后什么也没有发生。我的目标是每30秒报警一次。调用AlarmReceiver onReceive时。SendBroadcast到我的服务,它将把消息发送到服务器。我做错了什么 舱单详情: <uses-permission android:name="android.permission.
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
采样引导接收器:
public class SampleBootReceiver extends BroadcastReceiver {
AlarmReceiver alarm = new AlarmReceiver();
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
{
alarm.setAlarm(context);
}
}
}
您可能需要检查并确保您能够将手持设备与佩戴设备配对
在wear开发过程中,手持设备和可穿戴设备之间的适当通信/配对对于发送和接收消息非常重要。利用,向可穿戴设备发送消息以启动活动。要获得收到消息的通知,请实现接口以提供消息事件的侦听器
你也可以看到我的答案和另一个相关的问题。这里还有一个关于和的教程
希望有帮助 从API级别19开始,警报传递是不精确的:操作系统将切换警报,以尽量减少唤醒和电池使用 在低功耗模式下的可穿戴设备上尤其如此 保证交付使用 与设置精确(int、long、pendingent)类似,但即使系统处于低功耗空闲模式,也允许执行此警报。如果您不需要警报的精确调度,但仍然需要在空闲的时候执行,请考虑使用<代码> Stand and StaseWaveILIDLE(int,Lon,PendingIntent)< /C> >p>
我的android wear应用程序和移动应用程序在来回发送消息时没有任何问题。我需要对我从手表发送到手机的信息计时。对于计时,目前我使用的是Handler.postdayed,它工作得非常好,但我希望在CPU进入睡眠状态时始终发送消息。所以我选了这个。
public class AlarmReceiver extends WakefulBroadcastReceiver {
private static final String TAG = "AlarmReceiver";
// The app's AlarmManager, which provides access to the system alarm services.
private AlarmManager alarmMgr;
// The pending intent that is triggered when the alarm fires.
private PendingIntent alarmIntent;
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG,"AlarmReceiver onReceive*******");
Intent sensorIntent = new Intent("sensor");
LocalBroadcastManager.getInstance(context).sendBroadcast(sensorIntent);
}
public void setAlarm(Context context) {
Log.d(TAG,"Alarm Manager started");
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
System.currentTimeMillis()+1000,60000,alarmIntent);
ComponentName receiver = new ComponentName(context, SampleBootReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
}
public class SampleBootReceiver extends BroadcastReceiver {
AlarmReceiver alarm = new AlarmReceiver();
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
{
alarm.setAlarm(context);
}
}
}