123 lines
4.4 KiB
Java
123 lines
4.4 KiB
Java
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;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
} |