Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AlarmManager不在Android wear中工作_Android_Broadcastreceiver_Alarmmanager_Wear Os - Fatal编程技术网

AlarmManager不在Android wear中工作

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.

我正试图从我的Android wear项目中调用AlarmManager。但由于某些原因,它失败了。下面是我的代码。我确信我正在AlarmReceiver中调用setAlarm方法(我的日志正在打印),但之后什么也没有发生。我的目标是每30秒报警一次。调用AlarmReceiver onReceive时。SendBroadcast到我的服务,它将把消息发送到服务器。我做错了什么

舱单详情:

<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);
        }
    }
}