0
点赞
收藏
分享

微信扫一扫

【Android】BroadCast用法简示

陌岛 2022-06-23 阅读 232


BroadCast用法简示

  • How To Use

​注册​

val intentFilter = IntentFilter()
intentFilter.addAction(BroadcastActionConstants.MQTT_UPDATE)
intentFilter.addAction(BroadcastActionConstants.RELEASE)
intentFilter.addAction(BroadcastActionConstants.MQTT_PERSONIMAGE_FAIL)
ConstantsConfig.getContext().registerReceiver(mqttReceiver, intentFilter)
public class BroadcastActionConstants {//Java

...

//mqtt 人像下发失败通知
public static final String MQTT_PERSONIMAGE_FAIL = "android.intent.action.MQTT_person_img_fail";
}

​接收​

private val mqttReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
intent?.let {
val action = it.action
clientId = DeviceUtils.getSerialNumber()
when (action) {
BroadcastActionConstants.MQTT_UPDATE -> {
//逻辑
}
BroadcastActionConstants.MQTT_PERSONIMAGE_FAIL -> {
//publish(intent.getStringExtra("topic")!!, intent.getStringExtra("msg")!!)
//逻辑
}
BroadcastActionConstants.RELEASE -> {
//stopSelf()
//逻辑
}
}
}
}
}

​发送​

Intent intent = new Intent(BroadcastActionConstants.MQTT_PERSONIMAGE_FAIL);
intent.putExtra("topic","/v1/up/personIssuedStatus/");
intent.putExtra("msg",json);
ConstantsConfig.getContext().sendBroadcast(intent);

For Example: 监听系统时间改变广播

//开启广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_TICK);
intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
registerReceiver(timeReceiver, intentFilter);

timeReceiver

//region #observer os time
private final BroadcastReceiver timeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
switch (intent.getAction()) {
case Intent.ACTION_TIME_TICK:
if (isTimeIntegerPoint()) {
//逻辑
break;
case Intent.ACTION_TIME_CHANGED:
//逻辑
break;
}
}
}
};

//是否为整点数
private Boolean isTimeIntegerPoint() {
String date = DateUtil.formatDateToString(new Date(), DateUtil.format_hhmm);//12:00
if (date != null) {
String strMinute = date.split(":")[1];
return strMinute.equals("00") || strMinute.equals("30");
} else {
return false;
}
}
//endregion


举报

相关推荐

0 条评论