我过去一周一直在研究这个逻辑,但没有运气。任何人都可以帮助我吗?所以我遇到的问题是我正在使用信标概念(Moko Beacon)使用bindService来扫描信标,直到应用程序被销毁。所以我一直得到信标数据。这是我的代码:public class MainActivity extends AppCompatActivity implements MokoScanDeviceCallback {private MokoService mMokoService;private HashMap<String, BeaconXInfo> beaconXInfoHashMap;public ArrayList<BeaconXInfo> beaconXInfos;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);bindService(intent, mServiceConnection, BIND_AUTO_CREATE); beaconXInfoHashMap = new HashMap<>(); beaconXInfos = new ArrayList<>();}public void onScanDevice(DeviceInfo device) { final BeaconXInfo beaconXInfo = beaconXInfoParseable.parseDeviceInfo(device); if (beaconXInfo == null) { return; } beaconXInfoHashMap.put(beaconXInfo.mac, beaconXInfo); updateDevices();}问题出在updateDevices()方法中,我不断获取值,直到我销毁应用程序。日志值如下:E/beaconXinfo: [BeaconXInfo{name='BeaconX', mac='F5:5E:B1:65:94:4B'}]E/beaconXinfo: [BeaconXInfo{name='BeaconX', mac='F5:5E:B1:65:94:4B'}, BeaconXInfo{name='UFO', mac='55:46:4F:D2:72:5A'}]E/beaconXinfo: [BeaconXInfo{name='BeaconX', mac='F5:5E:B1:65:94:4B'}, BeaconXInfo{name='UFO', mac='55:46:4F:D2:72:5A'}, BeaconXInfo{name='null', mac='C8:DE:FE:45:50:02'}] //change in the data如上所示,只有当hashmap中的数据发生更改时,我希望将数据发送到服务器的最后一个日志中的数据发生更改。所以首先我发送数据“F5:5E:B1:65:94:4B”,因为只有一个值。接下来,我需要将此hashmap与下一个hashmap进行比较,其中数据发生了变化,称为“55:46:4F:D2:72:5A”。我需要发送这些数据而忽略“F5:5E:B1:65:94:4B”。与此相同,如何仅将此“C8:DE:FE:45:50:02”值与之前的hashmap相比较发送到服务器。那么如何将hashmap数据的第一个日志与下一系列hashmap数据进行比较,我只能获取最新值并将其发送到服务器。我在发布之前已经研究过一堆问题,如下所示:如何从Android中的arraylist中删除重复值如何从ArrayList中删除重复的元素?从Java中删除HashMap中的重复值也许我可能会对我在代码中使用的上述内容感到困惑。如果需要在代码中添加任何内容,请在下面发表评论。任何建议和答案将受到高度赞赏。提前致谢。
1 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
你为什么不在每次扫描设备时检查它是否存在然后发送它?
public void onScanDevice(DeviceInfo device) { final BeaconXInfo beaconXInfo = beaconXInfoParseable.parseDeviceInfo(device); if (beaconXInfo == null) { return; } if (!beaconXInfoHashMap.containsKey(beaconXInfo.mac)) { // new, send it } beaconXInfoHashMap.put(beaconXInfo.mac, beaconXInfo); updateDevices();}
添加回答
举报
0/150
提交
取消