BroadCast用法简示 How To Use 注册 val intentFilter = IntentFilter() intentFilter.addAction(BroadcastActionConstants.MQTT_UPDATE) intentFilter.addAction(BroadcastActionConstants.RELEASE) intentFilter.addAction(BroadcastActi
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 timeprivate 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