当前位置 : 主页 > 编程语言 > java >

【Android】BroadCast用法简示

来源:互联网 收集:自由互联 发布时间:2022-06-30
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 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


上一篇:【Andrid】去掉android中EditText的下划线
下一篇:没有了
网友评论