SwitchControlActivity.java 9 KB
package com.qnbar.switchcontrol;

import android.graphics.Rect;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.adroplat.fist_switch.jni.Device;
import com.adroplat.fist_switch.jni.FistJni;
import com.adroplat.fist_switch.jni.SubDevice;
import com.adroplat.fist_switch.utils.protocol.one.FistProtocol;
import com.google.gson.Gson;
import com.qnbar.switchcontrol.adapter.DeviceListAdapter;
import com.qnbar.switchcontrol.adapter.SwitchListAdapter;
import com.qnbar.switchcontrol.model.SwitchMessageEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

import java.util.ArrayList;

public class SwitchControlActivity extends AppCompatActivity {
    private String deviceStrKey = "123456";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_main);
//        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//        setSupportActionBar(toolbar);
//        if (getSupportActionBar() != null) {
//            getSupportActionBar().setTitle("智能开关设置");
//        }
        EventBus.getDefault().register(this);
        //EventBus,List of Hub,List of Lights
        //TODO save DeviceNum,SubDeviceNum
        initList();
        FistJni fistJni = FistJni.getInstance();
        fistJni.startSdk();
        searchLocalDevice();
    }

    public void searchLocalDevice() {
        FistJni fistJni = FistJni.getInstance();
        fistJni.searchLocalDevice();
    }

    DeviceListAdapter hubAdapter;
    SwitchListAdapter switchAdapter;
    RecyclerView hubRv;
    RecyclerView switchRv;

    void initList() {
        hubRv = (RecyclerView) findViewById(R.id.hubsRv);
        hubAdapter = new DeviceListAdapter();

        GridLayoutManager layoutManager = new /*Focus*/GridLayoutManager(this, 5);
        GridLayoutManager layoutManager2 = new /*Focus*/GridLayoutManager(this, 5);
        hubRv.setLayoutManager(layoutManager);
        hubRv.addItemDecoration(new MovieItemDecoration());
        hubAdapter.setListener(new DeviceListAdapter.OnRecyclerViewItemClickListener() {
            @Override
            public void onItemClick(Device light, int position) {
                Device device = null;
                for (Device deviceCur : FistJni.getHubs()) {
                    if (deviceCur.getDeviceStrKey().equals(deviceStrKey)) {
                        device = deviceCur;
                    }
                }
                if (device == null) {
                    toast("没有发现当前配置主机");
                    return;
                }
                FistJni.getInstance().query(new Gson().toJson(light));
            }

            @Override
            public void onLongClick(Device light, int position) {

            }

            @Override
            public void onMenuClick(View v, int position) {
                deviceStrKey = FistJni.getHubs().get(position).getDeviceStrKey();
                toast("重设控制口令");
                Log.d("menu", "reset control hub:" + deviceStrKey);
            }
        });
        hubRv.setAdapter(hubAdapter);
        hubRv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);


        switchAdapter = new SwitchListAdapter();
        switchRv = (RecyclerView) findViewById(R.id.switchRv);

        switchRv.setLayoutManager(layoutManager2);
        switchRv.addItemDecoration(new MovieItemDecoration());
        switchAdapter.setListener(new SwitchListAdapter.OnRecyclerViewItemClickListener() {
            @Override
            public void onItemClick(SubDevice light, int position) {
                Device device = null;
                for (Device deviceCur : FistJni.getHubs()) {
                    if (deviceCur.getDeviceStrKey().equals(deviceStrKey)) {
                        device = deviceCur;
                    }
                }
                if (device == null) {
                    toast("当前控制口令出错,请重新选择控制主机按menu设置");
                    return;
                }
                if (light.getSubDeviceStatus() == 0) {
                    light.setSubDeviceStatus(1);
                } else {
                    light.setSubDeviceStatus(0);
                }
                ArrayList<SubDevice> subDevices = new ArrayList<>();
                subDevices.add(light);
                device.setSubDevices(subDevices);
                FistJni.getInstance().normalC(new Gson().toJson(device));
            }


            @Override
            public void onLongClick(SubDevice light, int position) {

            }

            @Override
            public void onMenuClick(View v, int position) {
                Device device = null;
                for (Device deviceCur : FistJni.getHubs()) {
                    if (deviceCur.getDeviceStrKey().equals(deviceStrKey)) {
                        device = deviceCur;
                    }
                }
                if (device == null) {
                    toast("当前控制口令出错,请重新选择控制主机按menu设置");
                    return;
                }

                ArrayList<SubDevice> subDevices = new ArrayList<>();
                subDevices.add(FistJni.getSubDevices().get(position));
                device.setSubDevices(subDevices);
                FistJni.getInstance().delSub(new Gson().toJson(device));
                FistJni.getSubDevices().clear();
                switchAdapter.notifyDataSetChanged();
            }
        });
        switchRv.setAdapter(switchAdapter);
        switchRv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
    }

    public void startAdd(View view) {
        FistJni fistJni = FistJni.getInstance();
        final Device device = FistJni.getHubs().get(0);
        fistJni.startAdd(new Gson().toJson(device));
    }

    public void stopAdd(View view) {
        FistJni fistJni = FistJni.getInstance();

        final Device device = FistJni.getHubs().get(0);
        fistJni.stopAdd(new Gson().toJson(device));
    }

    public void resetPwd(View view) {
        FistJni fistJni = FistJni.getInstance();
        Device device = FistJni.getHubs().get(0);
        fistJni.modifyPwd(new Gson().toJson(device), "123456");
    }

    public void getLinkStatus(View view) {
        FistJni fistJni = FistJni.getInstance();
        Device device = FistJni.getHubs().get(0);
        fistJni.getLinkStatus(new Gson().toJson(device));
    }

    public void setLinkMsg(View view) {
        FistJni fistJni = FistJni.getInstance();
        Device device = FistJni.getHubs().get(0);
//        fistJni.getlinkRouter(new Gson().toJson(device),"Xiaomi123","88888888");
        fistJni.getlinkRouter(new Gson().toJson(device), "LEMOMOFFICE2.4G", "88888888");
    }

    public void scanHubs(View view) {
        searchLocalDevice();
    }

    public void openSdk(View view) {
        FistJni fistJni = FistJni.getInstance();
        fistJni.startSdk();
    }

    public class MovieItemDecoration extends RecyclerView.ItemDecoration {
        @Override
        public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
                                   RecyclerView.State state) {
            outRect.top = 40;
            outRect.left = 15;
            outRect.right = 15;
            outRect.bottom = 40;
        }
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMoonEvent(SwitchMessageEvent switchMessageEvent) {
        switch (switchMessageEvent.getEventId()) {
            case FistJni.DEVICE_HUBS_ONLINE_NOTIFY:
            case FistProtocol.CommondType.CMD_TYPE_SEARCH_RESPONSE:
                Log.d("qnbar_switch", switchMessageEvent.getMessage());
                hubAdapter.notifyDataSetChanged();
                break;
            case FistJni.DEVICE_SWITCH_ONLINE_NOTIFY:
            case FistProtocol.CommondType.CMD_TYPE_QUERY_RESPONSE:
                Log.d("qnbar_switch", switchMessageEvent.getMessage());
                switchAdapter.notifyDataSetChanged();
                break;
            case FistJni.DEVICE_SWITCH_ADD_OVER:
            case FistProtocol.CommondType.CMD_TYPE_ADD_OVER:
                Log.d("qnbar_switch", switchMessageEvent.getMessage());
                toast("设备添加完成");
                break;
            case FistProtocol.CommondType.CMD_TYPE_ADD_OVER_RESPONSE:
                Log.d("qnbar_switch", switchMessageEvent.getMessage());
                toast("子设备有变动");
                break;
            default:
                Log.d("qnbar_switch", "default:" + switchMessageEvent.getMessage() + "," + switchMessageEvent.getEventId());
                break;
        }
    }

    private void toast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
}