yy1717
2020-01-13 9ec3be18580f7c2f4ee58e63753deb813532ddb0
Merge branch 'master' of https://gitee.com/endian11/DriveJudge
8个文件已修改
8个文件已添加
516 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/Constant.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/gps/GPSInfo.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/gps/GpsInfoDao.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/gps/GpsInfoRepository.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/gps/GpsInfoViewModel.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/gps/GpsInfoWorker.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/adapter/GpsInfoAdapter.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/app.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/util/FileUtil.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/gps_info_item.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_gps_info.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_home_fragment.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_rtk_setting.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -55,4 +55,5 @@
    public static final String BIND_RTKCONFIG_TOPIC = "rtkconfig_topic";
    public static final String BIND_CONNECT_RTK_TOPIC = "rtk_connect_login_topic";
    public static final String GPS_INFO_DATA = "gps_info_data";
}
app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
@@ -24,6 +24,8 @@
import safeluck.drive.evaluation.DB.failitems.FailProjDao;
import safeluck.drive.evaluation.DB.failitems.FailedProj;
import safeluck.drive.evaluation.DB.failitems.FailedProjWorker;
import safeluck.drive.evaluation.DB.gps.GPSInfo;
import safeluck.drive.evaluation.DB.gps.GpsInfoDao;
import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
import safeluck.drive.evaluation.DB.rtktb.RTKConfigDao;
import safeluck.drive.evaluation.DB.rtktb.RTKConfigWork;
@@ -35,7 +37,7 @@
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class},version = 1,exportSchema = false)
@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class, GPSInfo.class},version = 1,exportSchema = false)
public abstract class WorkRoomDataBase extends RoomDatabase {
    private static final String TAG = "WorkRoomDataBase";
    public abstract StudentDao getstudentDao();
@@ -99,4 +101,6 @@
    public abstract RTKConfigDao getRTKConfigDao();
    public abstract GpsInfoDao getGpsInoDao();
}
app/src/main/java/safeluck/drive/evaluation/DB/gps/GPSInfo.java
New file
@@ -0,0 +1,101 @@
package safeluck.drive.evaluation.DB.gps;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
/**
 * MyApplication2
 * Created by lzw on 2020/1/10. 16:39:18
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
@Entity(tableName = "gps_info")
public class GPSInfo {
@PrimaryKey
    private int id;
    private String utc;
    private int sat_num;
    private int qf;
    private double latitude;
    private double longitude;
    private double altitude;
    private double speed;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUtc() {
        return utc;
    }
    public void setUtc(String utc) {
        this.utc = utc;
    }
    public int getSat_num() {
        return sat_num;
    }
    public void setSat_num(int sat_num) {
        this.sat_num = sat_num;
    }
    public int getQf() {
        return qf;
    }
    public void setQf(int qf) {
        this.qf = qf;
    }
    public double getLatitude() {
        return latitude;
    }
    public void setLatitude(double latitude) {
        this.latitude = latitude;
    }
    public double getLongitude() {
        return longitude;
    }
    public void setLongitude(double longitude) {
        this.longitude = longitude;
    }
    public double getAltitude() {
        return altitude;
    }
    public void setAltitude(double altitude) {
        this.altitude = altitude;
    }
    public double getSpeed() {
        return speed;
    }
    public void setSpeed(double speed) {
        this.speed = speed;
    }
    @Override
    public String toString() {
        return "GPSInfo{" +
                "id=" + id +
                ", utc='" + utc + '\'' +
                ", sat_num=" + sat_num +
                ", qf=" + qf +
                ", latitude=" + latitude +
                ", longitude=" + longitude +
                ", altitude=" + altitude +
                ", speed=" + speed +
                '}';
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/gps/GpsInfoDao.java
New file
@@ -0,0 +1,24 @@
package safeluck.drive.evaluation.DB.gps;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
/**
 * MyApplication2
 * Created by lzw on 2020/1/10. 16:44:57
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
@Dao
public interface GpsInfoDao {
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insert(GPSInfo  gpsInfo);
    @Query("SELECT * from gps_info")
    LiveData<GPSInfo> getGpsInfo();
}
app/src/main/java/safeluck/drive/evaluation/DB/gps/GpsInfoRepository.java
New file
@@ -0,0 +1,37 @@
package safeluck.drive.evaluation.DB.gps;
import android.app.Application;
import androidx.lifecycle.LiveData;
import safeluck.drive.evaluation.DB.WorkRoomDataBase;
/**
 * MyApplication2
 * Created by lzw on 2020/1/10. 16:46:57
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class GpsInfoRepository {
    private GpsInfoDao gpsInfoDao;
    private LiveData<GPSInfo> gpsInfo;
    public GpsInfoRepository(Application application) {
        gpsInfoDao = WorkRoomDataBase.getWorkRoomDataBase(application).getGpsInoDao();
        gpsInfo = gpsInfoDao.getGpsInfo();
    }
    public void insertGpsInfo(final GPSInfo gpsInfo) {
        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
            @Override
            public void run() {
                gpsInfoDao.insert(gpsInfo);
            }
        });
    }
    public LiveData<GPSInfo> getGpsInfo(){
        return gpsInfo;
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/gps/GpsInfoViewModel.java
New file
@@ -0,0 +1,32 @@
package safeluck.drive.evaluation.DB.gps;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
/**
 * MyApplication2
 * Created by lzw on 2020/1/10. 16:46:30
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class GpsInfoViewModel extends AndroidViewModel {
   private  GpsInfoRepository gpsInfoRepository;
    public GpsInfoViewModel(@NonNull Application application) {
        super(application);
        gpsInfoRepository = new GpsInfoRepository(application);
    }
    public void insert(GPSInfo  gpsInfo){
        gpsInfoRepository.insertGpsInfo(gpsInfo);
    }
    public  LiveData<GPSInfo> getGpsInfo(){
        return gpsInfoRepository.getGpsInfo();
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/gps/GpsInfoWorker.java
New file
@@ -0,0 +1,55 @@
package safeluck.drive.evaluation.DB.gps;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.work.Worker;
import androidx.work.WorkerParameters;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.List;
import safeluck.drive.evaluation.Constant;
import safeluck.drive.evaluation.DB.Student;
import safeluck.drive.evaluation.DB.WorkRoomDataBase;
/**
 * MyApplication2
 * Created by lzw on 2020/1/10. 17:01:08
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class GpsInfoWorker extends Worker {
    private static final String TAG = "GpsInfoWorker";
    public GpsInfoWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }
    @NonNull
    @Override
    public Result doWork() {
        try {
            Log.i(TAG, "doWork: ");
            Gson gson = new Gson();
            Type type = new TypeToken<GPSInfo>(){}.getType();
            GPSInfo mstus=gson.fromJson(getInputData().getString(Constant.GPS_INFO_DATA),   type);
            WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getGpsInoDao().insert(mstus);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.failure();
        }
        return Result.success();
    }
}
app/src/main/java/safeluck/drive/evaluation/adapter/GpsInfoAdapter.java
New file
@@ -0,0 +1,83 @@
package safeluck.drive.evaluation.adapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import safeluck.drive.evaluation.R;
/**
 * MyApplication2
 * Created by lzw on 2020/1/10. 16:33:13
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class GpsInfoAdapter extends BaseAdapter {
    private List<String> persons = new ArrayList<>();//gps信息
    private final static String TAG = "anyun_info";
    private Context mContext;
    @Override
    public int getCount() {
        return persons.size();
    }
    @Override
    public String getItem(int i) {
        return persons.get(i);
    }
    @Override
    public long getItemId(int i) {
        return i;
    }
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        InfoHodler infoHodler = null;
        if (view == null){
            view = LayoutInflater.from(mContext).inflate(R.layout.gps_info_item,null);
            infoHodler = new InfoHodler();
            infoHodler.name = view.findViewById(R.id.text_check_info);
            view.setTag(infoHodler);
        }else{
            infoHodler = (InfoHodler) view.getTag();
        }
        infoHodler.name.setText(getItem(i));
        return view;
    }
    public GpsInfoAdapter(Context mContext) {
        this.mContext = mContext;
    }
    /**
     * //先清掉原来的所有数据再添加新加进来所有的数据
     * @param ps
     */
    public void addAll(List<String> ps){
        persons.clear();//先清掉原来的所有数据
        persons.addAll(ps);//再添加新加进来所有的数据
        notifyDataSetChanged();//刷新界面
    }
    static class InfoHodler {
        public TextView name;//姓名
    }
}
app/src/main/java/safeluck/drive/evaluation/app.java
@@ -1,11 +1,15 @@
package safeluck.drive.evaluation;
import android.app.Application;
import android.os.Environment;
import android.text.TextUtils;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.work.Data;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
import com.anyun.exam.lib.AYSdk;
import com.anyun.exam.lib.IAYExamListener;
@@ -29,6 +33,7 @@
import safeluck.drive.evaluation.DB.failitems.FailedProj;
import safeluck.drive.evaluation.DB.failitems.FailedProjRepository;
import safeluck.drive.evaluation.DB.gps.GpsInfoWorker;
import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
import safeluck.drive.evaluation.DB.rtktb.RTKWorkRepository;
import safeluck.drive.evaluation.cEventCenter.CEvent;
@@ -76,6 +81,7 @@
            //数据库操作
            MyLog.i(TAG, "onCreate111");
            FileUtil.createdirs(getApplicationContext());
            failedProjRepository = new FailedProjRepository(this);
            rtkWorkRepository = new RTKWorkRepository(this);
        }
@@ -140,12 +146,28 @@
                break;
            case Constant.FETCH_MAP_INFO:
                StringBuffer buffer =FileUtil.readAssetTxtFile(this,Constant.MAP);
                StringBuffer buffer =FileUtil.readTxtFileFromSD(this,Constant.MAP);
                if (buffer != null){
                AYSdk.getInstance().sendCmd(Constant.PUSH_MAP_INFO,buffer.toString());
                }else{
                    MyLog.d(TAG,String.format("地图模型未拷入[%s]目录下", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName()));
                }
                break;
            case Constant.REQ_VECHILE_PROFILE:
                StringBuffer vebuffer =FileUtil.readAssetTxtFile(this,Constant.VEHICLE);
                StringBuffer vebuffer =FileUtil.readTxtFileFromSD(this,Constant.VEHICLE);
                if (vebuffer != null){
                AYSdk.getInstance().sendCmd(Constant.PUSH_VECHILE_PROFILE,vebuffer.toString());
                }else{
                    MyLog.d(TAG,String.format("车辆模型模型未拷入[%s]目录下", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName()));
                }
                break;
            case Constant.GPS_INFO:
                Data gpsData = new Data.Builder().putString(Constant.GPS_INFO_DATA,json).build();
                OneTimeWorkRequest gpsinfoWorkRequest = new OneTimeWorkRequest.Builder(GpsInfoWorker.class).setInputData(gpsData).build();
                WorkManager.getInstance(getApplicationContext()).enqueue(gpsinfoWorkRequest);
                break;
        }
app/src/main/java/safeluck/drive/evaluation/fragment/GpsInfoFragment.java
@@ -8,6 +8,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -15,13 +16,23 @@
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.anyun.exam.lib.MyLog;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.DB.gps.GPSInfo;
import safeluck.drive.evaluation.DB.gps.GpsInfoViewModel;
import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.adapter.GpsInfoAdapter;
import safeluck.drive.evaluation.util.Utils;
/**FTP配置UI
/**
 * FTP配置UI
 * MyApplication2
 * Created by lzw on 2019/3/20. 11:22:39
 * 邮箱:632393724@qq.com
@@ -31,9 +42,10 @@
    private static final String TAG = "RTKConfigFragment";
    private EditText et_ip,et_port,et_city_id,et_city_province,et_phone;
    private RTKConfigViewModel rtkConfigViewModel;
    private RTKConfig mRtkConfig;
    private ListView lv;
    private GpsInfoAdapter gpsInfoAdapter;
    private List<String> gpsinfos = new ArrayList<>();
    public static SupportFragment newInstance(){
        return new GpsInfoFragment();
@@ -43,19 +55,44 @@
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return initView();
        View view = inflater.inflate(R.layout.layout_gps_info, container, false);
        initView(view);
        GpsInfoViewModel gpsInfoViewModel = ViewModelProviders.of(this).get(GpsInfoViewModel.class);
        gpsInfoViewModel.getGpsInfo().observe(this, new Observer<GPSInfo>() {
            @Override
            public void onChanged(GPSInfo gpsInfo) {
                if (gpsInfo != null) {
                    MyLog.i(TAG, "gpsinfo=" + gpsInfo == null ? "null" : gpsInfo.toString());
                    gpsinfos.clear();
                    Field[] fields = gpsInfo.getClass().getDeclaredFields();
                    for (int i = 0; i < fields.length; i++) {
                        //设置是否允许访问,不是修改原来的访问权限修饰词。
                        fields[i].setAccessible(true);
                        try {
                            if (fields[i].getName().equalsIgnoreCase("id")) {
                                continue;
                            }
                            gpsinfos.add(fields[i].getName() + ":" + fields[i].get(gpsInfo));
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        }
    }
    private View initView() {
        TextView textView = new TextView(_mActivity);
        ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        textView.setText("收到命令[3],Json内容为{\"connected\":0,\"ip\":\"47.93.80.84\",\"port\":12125}");
        textView.setTextSize(Utils.dp2Px(20));
        textView.setLayoutParams(layoutParams);
        textView.setGravity(Gravity.CENTER_VERTICAL);
        return textView;
                    gpsInfoAdapter.addAll(gpsinfos);
                }else{
                    MyLog.i(TAG,"未检测到GPS数据库信息");
                }
            }
        });
        return view;
    }
    private void initView(View view) {
        lv = view.findViewById(R.id.lv_gpsinfo);
        gpsInfoAdapter = new GpsInfoAdapter(_mActivity);
        lv.setAdapter(gpsInfoAdapter);
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -17,6 +17,8 @@
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
import com.google.android.material.textfield.TextInputEditText;
@@ -31,6 +33,7 @@
import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel;
import safeluck.drive.evaluation.DB.failitems.FailedProj;
import safeluck.drive.evaluation.DB.failitems.FailedProj_select;
import safeluck.drive.evaluation.DB.gps.GpsInfoWorker;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.im.IMSClientBootstrap;
import safeluck.drive.evaluation.im.MessageProcessor;
@@ -126,9 +129,12 @@
////                }
//
//                MessageProcessor.getInstance().sendMessage(sendEditText.getText().toString().trim());
//                sendEditText.getText().clear();
                MessageProcessor.getInstance().sendMessage(sendEditText.getText().toString().trim());
                sendEditText.getText().clear();
                break;
        }
app/src/main/java/safeluck/drive/evaluation/util/FileUtil.java
@@ -3,6 +3,10 @@
import android.app.Application;
import android.content.Context;
import android.content.res.Resources;
import android.os.Environment;
import android.util.Log;
import com.anyun.exam.lib.MyLog;
import java.io.BufferedReader;
import java.io.File;
@@ -14,6 +18,7 @@
import java.io.OutputStream;
public class FileUtil {
    private static final String TAG = "FileUtil";
    /**
     * 读取assert目录下 txt文本文件内容
     * @param context
@@ -47,6 +52,50 @@
        return stringBuffer;
    }
    public static void createdirs(Context context){
        String dir = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+context.getPackageName();
        File file = new File(dir);
        if (!file.exists()){
            file.mkdir();
        }else{
            Log.i(TAG, "createdirs: 目录已经存在");
        }
    }
    public static StringBuffer readTxtFileFromSD(Context context,String fileName){
        String lineTxt = null;
        StringBuffer stringBuffer = new StringBuffer();
        try {
            InputStream inputStream = null;
            String dir = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+context.getPackageName();
            File file = new File(dir,fileName);
            if (!file.exists()){
                MyLog.d(TAG,fileName+"文件不存在");
                return null;
            }
            try {
                inputStream = new FileInputStream(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            while((lineTxt = bufferedReader.readLine()) != null){
                System.out.println(lineTxt);
                stringBuffer.append(lineTxt);
            }
            inputStreamReader.close();
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringBuffer;
    }
    /**
     *
     * @param fromFile 源文件路径包括文件名(绝对路径)
app/src/main/res/layout/gps_info_item.xml
New file
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text_check_info"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall" />
app/src/main/res/layout/layout_gps_info.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/lv_gpsinfo"></ListView>
</LinearLayout>
app/src/main/res/layout/layout_home_fragment.xml
@@ -92,7 +92,6 @@
        android:text="@string/version_name"
        android:padding="10dp"
        android:id="@+id/tv_app_version"
        android:textSize="20sp"
        android:textColor="@color/home_version_show"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"/>
app/src/main/res/layout/layout_rtk_setting.xml
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
@@ -171,3 +173,4 @@
        android:id="@+id/btn_save_rtk"
        android:text="保存"/>
</LinearLayout>
</ScrollView>