|
|
@ -1,4 +1,4 @@ |
|
|
|
package com.example.beacondemo; |
|
|
|
package com.example.beacondemo.Activity; |
|
|
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity; |
|
|
|
import androidx.core.app.ActivityCompat; |
|
|
@ -19,11 +19,31 @@ import android.util.Log; |
|
|
|
import android.view.View; |
|
|
|
import android.widget.Toast; |
|
|
|
|
|
|
|
import com.example.beacondemo.BindView; |
|
|
|
import com.example.beacondemo.R; |
|
|
|
import com.example.beacondemo.adapter.RecycleAdapter; |
|
|
|
import com.example.beacondemo.adapter.RecycleViewDivider; |
|
|
|
import com.minew.beaconplus.sdk.MTCentralManager; |
|
|
|
import com.minew.beaconplus.sdk.MTFrameHandler; |
|
|
|
import com.minew.beaconplus.sdk.MTPeripheral; |
|
|
|
import com.minew.beaconplus.sdk.enums.BluetoothState; |
|
|
|
import com.minew.beaconplus.sdk.enums.ConnectionStatus; |
|
|
|
import com.minew.beaconplus.sdk.enums.FrameType; |
|
|
|
import com.minew.beaconplus.sdk.exception.MTException; |
|
|
|
import com.minew.beaconplus.sdk.frames.AccFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.ForceFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.HTFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.IBeaconFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.InfoFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.LightFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.MinewFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.PIRFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.TamperProofFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.TemperatureFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.TlmFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.TvocFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.UidFrame; |
|
|
|
import com.minew.beaconplus.sdk.frames.UrlFrame; |
|
|
|
import com.minew.beaconplus.sdk.interfaces.ConnectionStatueListener; |
|
|
|
import com.minew.beaconplus.sdk.interfaces.GetPasswordListener; |
|
|
|
import com.minew.beaconplus.sdk.interfaces.MTCentralManagerListener; |
|
|
@ -49,6 +69,8 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
public static MTPeripheral mtPeripheral; |
|
|
|
private static final int REQUEST_FINE_LOCATION = 125; |
|
|
|
|
|
|
|
ArrayList<MinewFrame> advFrames; |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onCreate(Bundle savedInstanceState) { |
|
|
|
super.onCreate(savedInstanceState); |
|
|
@ -63,6 +85,11 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
initManager(); |
|
|
|
getRequiredPermissions(); |
|
|
|
initListener(); |
|
|
|
scanDevice(); |
|
|
|
} |
|
|
|
|
|
|
|
private void scanDevice(){ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private boolean ensureBleExists() { |
|
|
@ -100,6 +127,87 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
private void initData() { |
|
|
|
//三星手机系统可能会限制息屏下扫描,导致息屏后无法获取到广播数据 |
|
|
|
mMtCentralManager.startScan(); |
|
|
|
mMtCentralManager.setMTCentralManagerListener(new MTCentralManagerListener() { |
|
|
|
@Override |
|
|
|
public void onScanedPeripheral(final List<MTPeripheral> peripherals) { |
|
|
|
for (MTPeripheral mtPeripheral : peripherals) { |
|
|
|
// get FrameHandler of a device. |
|
|
|
MTFrameHandler mtFrameHandler = mtPeripheral.mMTFrameHandler; |
|
|
|
String mac = mtFrameHandler.getMac(); //mac address of device |
|
|
|
String name = mtFrameHandler.getName(); // name of device |
|
|
|
int battery = mtFrameHandler.getBattery(); //battery |
|
|
|
int rssi = mtFrameHandler.getRssi(); //rssi |
|
|
|
// all data frames of device(such as:iBeacon,UID,URL...) |
|
|
|
advFrames = mtFrameHandler.getAdvFrames(); |
|
|
|
/*for (MinewFrame minewFrame : advFrames) { |
|
|
|
FrameType frameType = minewFrame.getFrameType(); |
|
|
|
switch (frameType) { |
|
|
|
case FrameiBeacon://iBeacon |
|
|
|
IBeaconFrame iBeaconFrame = (IBeaconFrame) minewFrame; |
|
|
|
Log.v("beaconplus", iBeaconFrame.getUuid() + iBeaconFrame.getMajor() + iBeaconFrame.getMinor()); |
|
|
|
break; |
|
|
|
case FrameUID://uid |
|
|
|
UidFrame uidFrame = (UidFrame) minewFrame; |
|
|
|
Log.v("beaconplus", uidFrame.getNamespaceId() + uidFrame.getInstanceId()); |
|
|
|
break; |
|
|
|
case FrameAccSensor: |
|
|
|
AccFrame accFrame = (AccFrame) minewFrame;//acc |
|
|
|
Log.v("beaconplus", String.valueOf(accFrame.getXAxis() + accFrame.getYAxis() + accFrame.getZAxis())); |
|
|
|
break; |
|
|
|
case FrameHTSensor: |
|
|
|
HTFrame htFrame = (HTFrame) minewFrame;//ht |
|
|
|
Log.v("beaconplus", String.valueOf(htFrame.getTemperature() + htFrame.getHumidity())); |
|
|
|
break; |
|
|
|
case FrameTLM: |
|
|
|
TlmFrame tlmFrame = (TlmFrame) minewFrame;//tlm |
|
|
|
Log.v("beaconplus", String.valueOf(tlmFrame.getTemperature() + tlmFrame.getBatteryVol() + tlmFrame.getSecCount() + tlmFrame.getAdvCount())); |
|
|
|
break; |
|
|
|
case FrameURL: |
|
|
|
UrlFrame urlFrame = (UrlFrame) minewFrame;//url |
|
|
|
Log.v("beaconplus", "Link:" + urlFrame.getUrlString() + "Rssi @ 0m:" + urlFrame.getTxPower()); |
|
|
|
break; |
|
|
|
case FrameLightSensor: |
|
|
|
LightFrame lightFrame = (LightFrame) minewFrame;//light |
|
|
|
Log.v("beaconplus", "battery:" + lightFrame.getBattery() + "%" + lightFrame.getLuxValue()); |
|
|
|
break; |
|
|
|
case FrameForceSensor: |
|
|
|
ForceFrame forceFrame = ((ForceFrame) minewFrame);//force |
|
|
|
Log.v("beaconplus", "battery:" + forceFrame.getBattery() + "%" + "force:" + forceFrame.getForce() + "gram"); |
|
|
|
break; |
|
|
|
case FramePIRSensor: |
|
|
|
PIRFrame pirFrame = ((PIRFrame) minewFrame);//pir |
|
|
|
Log.v("beaconplus", "battery:" + pirFrame.getBattery() + "%" + "PIR:", pirFrame.getValue()); |
|
|
|
break; |
|
|
|
case FrameTempSensor://temp |
|
|
|
TemperatureFrame temperatureFrame = (TemperatureFrame) minewFrame; |
|
|
|
Log.v("beaconplus", "battery:" + temperatureFrame.getBattery() + "%,temperature:" + String.format("%.2f", temperatureFrame.getValue()) + "°C"); |
|
|
|
break; |
|
|
|
case FrameTVOCSensor://tvoc |
|
|
|
TvocFrame tvocFrame = (TvocFrame) minewFrame; |
|
|
|
Log.v("beaconplus", "battery:" + tvocFrame.getBattery() + ",TVOC:"+ tvocFrame.getValue() + "ppb," + "battery:" +tvocFrame.getBattery() + "mV"); |
|
|
|
break; |
|
|
|
case FrameLineBeacon://FrameLineBeacon |
|
|
|
FrameLineBeacon lineBeacon = ((FrameLineBeacon) minewFrame); |
|
|
|
Log.v("beaconplus", "Hwid:" + lineBeacon.getHwid() |
|
|
|
+ ",Rssi@1m:", lineBeacon.getTxPower() |
|
|
|
+ ",authentication:"lineBeacon.getAuthentication() |
|
|
|
+ ",timesTamp:" + lineBeacon.getTimesTamp()); |
|
|
|
break; |
|
|
|
case TamperProofFrame://TamperProofFrame |
|
|
|
TamperProofFrame tamperProofFrame = ((TamperProofFrame) minewFrame);// |
|
|
|
Log.v("beaconplus", "battery:" + tamperProofFrame.getBattery()); |
|
|
|
break; |
|
|
|
case InfoFrame://InfoFrame |
|
|
|
InfoFrame infoFrame = ((InfoFrame) minewFrame);// |
|
|
|
Log.v("beaconplus", infoFrame.getMajor() + infoFrame.getMinor() + infoFrame.getBatteryVoltage()); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
}*/ |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
private void initView() { |
|
|
@ -107,8 +215,8 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
mRecycle.setLayoutManager(layoutManager); |
|
|
|
mAdapter = new RecycleAdapter(); |
|
|
|
mRecycle.setAdapter(mAdapter); |
|
|
|
mRecycle.addItemDecoration(new RecycleViewDivider(this, LinearLayoutManager |
|
|
|
.HORIZONTAL)); |
|
|
|
/*mRecycle.addItemDecoration(new RecycleViewDivider(this, LinearLayoutManager |
|
|
|
.HORIZONTAL));*/ |
|
|
|
} |
|
|
|
|
|
|
|
private void initManager() { |
|
|
@ -122,6 +230,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
break; |
|
|
|
case BluetoothStatePowerOff: |
|
|
|
Log.e("tag", "BluetoothStatePowerOff"); |
|
|
|
|
|
|
|
break; |
|
|
|
case BluetoothStatePowerOn: |
|
|
|
Log.e("tag", "BluetoothStatePowerOn"); |
|
|
@ -137,6 +246,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
break; |
|
|
|
case BluetoothStatePowerOff: |
|
|
|
Log.e("tag", "BluetoothStatePowerOff"); |
|
|
|
showBLEDialog(); |
|
|
|
break; |
|
|
|
case BluetoothStatePowerOn: |
|
|
|
Log.e("tag", "BluetoothStatePowerOn"); |