package com.example.beacondemo; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.TextView; import com.minew.beaconplus.sdk.MTCentralManager; import com.minew.beaconplus.sdk.MTConnectionHandler; import com.minew.beaconplus.sdk.MTPeripheral; import com.minew.beaconplus.sdk.enums.TriggerType; import com.minew.beaconplus.sdk.enums.Version; import com.minew.beaconplus.sdk.exception.MTException; import com.minew.beaconplus.sdk.interfaces.SetTriggerListener; import com.minew.beaconplus.sdk.model.Trigger; public class DetailActivity extends AppCompatActivity implements View.OnClickListener { private MTPeripheral mtPeripheral; private MTConnectionHandler mMTConnectionHandler; private MTCentralManager mMtCentralManager; private View ivBack; private TextView tvSet; int mCurSlot = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); initView(); initData(); initListener(); } private void initView() { ivBack = findViewById(R.id.iv_back); tvSet = findViewById(R.id.tv_set); } private void initData() { mtPeripheral = MainActivity.mtPeripheral; mMTConnectionHandler = mtPeripheral.mMTConnectionHandler; mMtCentralManager = MTCentralManager.getInstance(this); } private void initListener() { ivBack.setOnClickListener(this); tvSet.setOnClickListener(this); } public void saveTrigger() { Version version = this.mMTConnectionHandler.mTConnectionFeature.getVersion(); if (version.getValue() >= 4) { if (this.mMTConnectionHandler.mTConnectionFeature.supportTriggers.size() > 0 && this.mMTConnectionHandler.triggers.size() > 0) { Trigger trigger = new Trigger(); trigger.setCurSlot(mCurSlot);//选择设置那个通道 boolean isOpen = true; //代表是否开启了触发器 if (isOpen) { TriggerType triggerType = TriggerType.BTN_DTAP_EVT; trigger.setTriggerType(TriggerType.BTN_DTAP_EVT);//双击按键 switch (triggerType) { case TEMPERATURE_ABOVE_ALARM://温度高于 case TEMPERATURE_BELOW_ALARM://温度低于 case HUMIDITY_ABOVE_ALRM://湿度高于 case HUMIDITY_BELOW_ALRM://湿度低于 case LIGHT_ABOVE_ALRM://光感高于 case LIGHT_BELOW_ALARM://光感低于 case FORCE_ABOVE_ALRM://压感大于 case FORCE_BELOW_ALRM://压感低于 case TVOC_ABOVE_ALARM://TVOC大于 case TVOC_BELOW_ALARM://TVOC低于 trigger.setCondition(10);//这些触发条件,时长 mTemCondition 不需要乘 1000 break; default: trigger.setCondition(10 * 1000); } } else { trigger.setTriggerType(TriggerType.TRIGGER_SRC_NONE); trigger.setCondition(0); } if (version.getValue() > 4) { trigger.setAdvInterval(2000);//广播间隔 100 ms ~ 5000 ms trigger.setRadioTxpower(0);//广播功率:-40dBm ~ 4dBm trigger.setAlwaysAdvertising(false);//true:总是广播,false:不总是广播 } this.mMTConnectionHandler.setTriggerCondition(trigger, new SetTriggerListener() { @Override public void onSetTrigger(boolean success, MTException mtException) { //Monitor whether the write is successful Log.e("minew_tag","trigger success " + success); } }); } } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_back: mMtCentralManager.disconnect(mtPeripheral); finish(); break; case R.id.tv_set: saveTrigger(); break; default: break; } } }