陈力
2023-06-09 cca5f79b3af36e5a908c5dfecbd30110febe3baa
app/src/main/java/com/lotaai/canguiayw/SettingFragment.java
@@ -16,19 +16,40 @@
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import androidx.fragment.app.Fragment;
import com.alibaba.fastjson.JSONObject;
import com.bin.david.form.core.SmartTable;
import com.blankj.utilcode.util.CacheDiskUtils;
import com.blankj.utilcode.util.DeviceUtils;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.LogUtils;
import com.lotaai.canguiayw.common.HttpLoggerInterceptor;
import com.lotaai.canguiayw.common.HttpUrlDefine;
import com.lotaai.canguiayw.common.SettingConfig;
import com.pranavpandey.android.dynamic.toasts.DynamicToast;
import org.angmarch.views.NiceSpinner;
import org.angmarch.views.SpinnerTextFormatter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import android_serialport_api.SerialPortFinder;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
public class SettingFragment extends Fragment {
@@ -36,6 +57,11 @@
    private Context context;
    private SmartTable setTable;
    private NiceSpinner chuanKouSpinner;
    private EditText deviceCode;
    private EditText devicePwd;
    private Button jihuoBtn;
    private Button saveBtn;
    List<String> list = new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
@@ -53,6 +79,7 @@
        if (root == null) {
            root = inflater.inflate(R.layout.framgment_setting, container, false);
        }
        DynamicToast.Config.getInstance().setTextSize(30).apply();
        context = container.getContext();
        initSpinner();
@@ -64,36 +91,149 @@
        };
        // 将myTouchListener注册到分发列表
        ((ManageActivity)this.getActivity()).registerMyTouchListener(myTouchListener);
        ((ManageActivity) this.getActivity()).registerMyTouchListener(myTouchListener);
        //初始化
        deviceCode = root.findViewById(R.id.deviceCode);
        devicePwd = root.findViewById(R.id.devicePwd);
        deviceCode.setText(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code));
        // devicePwd.setText(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Pwd));
        jihuoBtn = root.findViewById(R.id.jihuo);
        saveBtn = root.findViewById(R.id.save);
        jihuoBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String code = deviceCode.getText().toString().trim();
                String pwd = devicePwd.getText().toString().trim();
                if ("".equals(code) || "".equals(pwd)) {
                    DynamicToast.makeError(context, "设备号和设备秘钥必填", 3).show();
                    return;
                }
                active();
            }
        });
        saveBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DynamicToast.Config.getInstance().setTextSize(30).apply();
                String code = deviceCode.getText().toString().trim();
                String pwd = devicePwd.getText().toString().trim();
                String tty = list.get(chuanKouSpinner.getSelectedIndex());
                if ("".equals(code)) {
                    DynamicToast.makeError(context, "设备号必填", 3).show();
                } else {
                    CacheDiskUtils.getInstance().put(SettingConfig.getInstance().Cache_Device_Code, code);
//                    CacheDiskUtils.getInstance().put(SettingConfig.getInstance().Cache_Device_Pwd,pwd);
                    CacheDiskUtils.getInstance().put(SettingConfig.getInstance().Cache_Device_Tty, tty);
                    DynamicToast.makeSuccess(context, "保存成功", 3).show();
                }
            }
        });
        return root;
    }
    public void initSpinner(){
    public void active() {
        HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true);
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间
                .readTimeout(20, TimeUnit.SECONDS)
                .callTimeout(20, TimeUnit.SECONDS)
                .addInterceptor(loggingInterceptor)//添加日志拦截器
                .build();
        RequestBody body = new FormBody.Builder()
                .add("equipmentCode", CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code))
                .add("equipmentSecret", devicePwd.getText().toString())
                .add("equipmentUid", DeviceUtils.getUniqueDeviceId()).build();
        final Request request = new Request.Builder()
                .url(HttpUrlDefine.equipmentBind)
                .addHeader("language", "zh-CN")
                .post(body)
                .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Message msg = new Message();
                msg.what = 0;
                msg.obj = "激活失败";
                showHandler.sendMessage(msg);
                LogUtils.e(e);
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result = response.body().string();
                LogUtils.i("获取到的数据:"+result);
                JSONObject obj = JSONObject.parseObject(result);
                if ("0".equals(obj.getString("code"))) {
                    JSONObject dataObj = obj.getJSONObject("data");
                    String name = dataObj.getString("name");
                    Message msg = new Message();
                    msg.what = 1;
                    msg.obj = "激活成功!" + name;
                    showHandler.sendMessage(msg);
                } else {
                    Message msg = new Message();
                    msg.what = 0;
                    msg.obj = "激活失败:" + obj.getString("msg");
                    showHandler.sendMessage(msg);
                }
            }
        });
    }
    private Handler showHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0) {
                DynamicToast.makeError(context, msg.obj.toString(), 3).show();
            } else if (msg.what == 1) {
                DynamicToast.makeSuccess(context, msg.obj.toString(), 3).show();
            } else {
                DynamicToast.makeWarning(context, msg.obj.toString(), 3).show();
            }
        }
    };
    public void initSpinner() {
        chuanKouSpinner = root.findViewById(R.id.chuankouhao);
        chuanKouSpinner.setBackgroundResource(R.drawable.round_editstyle);
        chuanKouSpinner.setTextSize(30);
        String ty = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Tty);
        int select = 0;
//        SerialPortFinder finder = new SerialPortFinder();
//        String[] ttysPath = finder.getAllDevicesPath();
//        int p = 0;
//        for (String sp : ttysPath){
//            if (sp.equals(ty)){
//                select = p;
//            }
//            list.add(sp);
//            p++;
//        }
        final List<String> list = new ArrayList<String>();
        for (int i = 1; i<10 ;i++){
            list.add("ttyS" + i);
        list.clear();
        for (int pp = 0; pp < 6; pp++) {
            list.add("/dev/ttyS" + pp);
            if (ty!=null && ty.equals("/dev/ttyS" + pp)) {
                select = pp;
            }
        }
        chuanKouSpinner.attachDataSource(list);
        chuanKouSpinner.addOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               LogUtils.i(list.get(position));
                LogUtils.i(list.get(position) + "position:" + position);
            }
        });
        chuanKouSpinner.setSelectedIndex(select);
    }
    public static void HideKeyboard(View v)
    {
        InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );
        if ( imm.isActive( ) ) {
            imm.hideSoftInputFromWindow( v.getApplicationWindowToken( ) , 0 );
    public static void HideKeyboard(View v) {
        InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm.isActive()) {
            imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0);
        }
    }