java 多个设备,锁定先后顺序

本文介绍了一种对Android设备进行顺序锁定的方法,并通过Socket推送不同内容。具体实现包括根据指定顺序调整设备列表,为新加入的设备分配位置,并通过排序确保正确的推送顺序。

场景图:

 

4台android设备需要被锁定顺序,下次的时候按顺序socket推送数据到这4台不同的内容。当有新的一台机器加入时,如上图的E,则插入到原位置为C的地方。具体代码如下:

public static ArrayList<DeviceLoginEntity> setDeviceOrder(ArrayList<DeviceLoginEntity> devices,String orderStr)
    {
        if(StringUtil.isNullorEmpty(orderStr) || devices == null || devices.size() <= 0)
        {
            Log.v("DeviceUtil", "if(StringUtil.isNullorEmpty(orderStr) || devices == null || devices.size() > 0)直接返回devices");
            return devices;
        }
        else
        {
            Log.v("setDeviceOrder", "orderStr="+orderStr);
            String[] orderStrArr = orderStr.split("\\|");
            //优先将devices中存在的,
            for(int i=0;i<orderStrArr.length;i++)
            {
                for(int j=0;j<devices.size();j++)
                {
                    if(orderStrArr[i].equals(devices.get(j).android_id))
                    {
                        devices.get(j).sn = i;
                    }
                }
            }
            //将里面涉及到devices.get(j).sn=默认值100的情况设置为不在{1,2,3,4}里面的情况
            int flag = -1;
            for(int i=0;i<devices.size();i++)
            {
                int j = 0;
                for(j=0;j<devices.size();j++)
                {
                    if(devices.get(j).sn == i)
                    {break;}
                }
                if(j == devices.size())  //说明没有找到
                {
                    flag = i;
                    break;
                }
            }
            for(int i=0;i<devices.size();i++)
            {
                if(devices.get(i).sn == 100 && flag !=-1)
                {
                    //那么则将该sn置为devices.get(i).sn不存在的数字
                    devices.get(i).sn = flag;
                }
            }
            //再将devices的sn进行排序,越小越在前面
            Comparator<DeviceLoginEntity> comparator = new Comparator<DeviceLoginEntity>(){  
                    public int compare(DeviceLoginEntity s1, DeviceLoginEntity s2) {
                        if(s1.sn < s2.sn){
                            return -1;
                        }  
                        else
                            return 1;
                    }  
                };  
            Collections.sort(devices, comparator);//按照属性sn排序,从小到大
//            for(DeviceLoginEntity en:devices)
//            {
//                Log.e("setDeviceOrder", "DeviceLoginEntity="+en.android_id+";sn="+en.sn);
//            }
            return devices;
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值