Runt
2022-06-03 55a5784c2d3f2f8a69c670294a64e65debaf4c53
注册
4 files modified
1 files added
113 ■■■■■ changed files
app/src/main/java/com/auto/lyric/MainActivity.java 78 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/auto/lyric/data/ActiveResult.java 4 ●●●● patch | view | raw | blame | history
app/src/main/java/com/auto/lyric/data/UserInfo.java 16 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/auto/lyric/retrofit/api/CollectApiCenter.java 10 ●●●● patch | view | raw | blame | history
app/src/main/java/com/auto/lyric/vm/MainViewModel.java 5 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/auto/lyric/MainActivity.java
@@ -17,6 +17,7 @@
import com.auto.lyric.data.ActiveResult;
import com.auto.lyric.data.LyricServer;
import com.auto.lyric.data.TextBean;
import com.auto.lyric.data.UserInfo;
import com.auto.lyric.databinding.ActivityMainBinding;
import com.auto.lyric.retrofit.observable.LoadingHttpObserver;
import com.auto.lyric.service.AutoInputService;
@@ -39,41 +40,24 @@
    public void initViews() {
        Intent floatService  = new Intent(getApplicationContext(), FloatingWindowService.class);
        String key = getStringProjectPrefrence("activeKey");
        ActiveResult result = new Gson().fromJson(key,ActiveResult.class);
        UserInfo result = new Gson().fromJson(key,UserInfo.class);
        try {
            if(TextUtils.isEmpty(key) || TextUtils.isEmpty(result.validDate)||
                    new Date().getTime() > dateFormat.parse(result.validDate).getTime()){
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("软件尚未激活或已过期");
                EditText editText = new EditText(this);
                editText.setHint("请输入激活码");
                ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                params.setMargins(DeviceUtil.convertDpToPixel(30,this),DeviceUtil.convertDpToPixel(20,this),DeviceUtil.convertDpToPixel(30,this),0);
                editText.setLayoutParams(params);
                LinearLayout lin = new LinearLayout(this);
                lin.addView(editText);
                builder.setView(lin);
                builder.setCancelable(false);
                AlertDialog dialg = builder.create();
                dialg.setButton(AlertDialog.BUTTON_NEGATIVE,"激活", (dialog, which) -> {
                    viewModel.checkActive(editText.getText().toString().trim(),new LoadingHttpObserver<ActiveResult>(this) {
            if(TextUtils.isEmpty(key) || TextUtils.isEmpty(result.keyDateValid)||
                    new Date().getTime() > dateFormat.parse(result.keyDateValid).getTime()){
                activeDialog();
            }else{
                        @Override
                        public void onError(ActiveResult error) {
                            super.onError(error);
                            dialg.show();
                        }
                viewModel.checkActive(result.userId,result.activeKey,new LoadingHttpObserver<ActiveResult>(this) {
                        @Override
                        public void onComplete(ActiveResult result) {
                    @Override
                    public void onError(ActiveResult error) {
                        super.onError(error);
                    }
                        }
                    });
                    @Override
                    public void onComplete(ActiveResult result) {
                    }
                });
                dialg.setButton(AlertDialog.BUTTON_POSITIVE,"退出程序",(dialog,which) ->{
                    System.exit(0);
                });
                dialg.show();
            }
        } catch (ParseException e) {
            e.printStackTrace();
@@ -170,4 +154,38 @@
    }
    private void activeDialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("软件尚未激活或已过期");
        EditText editText = new EditText(this);
        editText.setHint("请输入激活码");
        ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params.setMargins(DeviceUtil.convertDpToPixel(30,this),DeviceUtil.convertDpToPixel(20,this),DeviceUtil.convertDpToPixel(30,this),0);
        editText.setLayoutParams(params);
        LinearLayout lin = new LinearLayout(this);
        lin.addView(editText);
        builder.setView(lin);
        builder.setCancelable(false);
        AlertDialog dialg = builder.create();
        dialg.setButton(AlertDialog.BUTTON_NEGATIVE,"激活", (dialog, which) -> {
            viewModel.register(editText.getText().toString().trim(),new LoadingHttpObserver<ActiveResult>(this) {
                @Override
                public void onError(ActiveResult error) {
                    super.onError(error);
                    dialg.show();
                }
                @Override
                public void onComplete(ActiveResult result) {
                    putStringProjectPrefrence("activeKey",new Gson().toJson(result.userInfo));
                }
            });
        });
        dialg.setButton(AlertDialog.BUTTON_POSITIVE,"退出程序",(dialog,which) ->{
            System.exit(0);
        });
        dialg.show();
    }
}
app/src/main/java/com/auto/lyric/data/ActiveResult.java
@@ -1,9 +1,9 @@
package com.auto.lyric.data;
/**
 * 用户注册信息
 * Created by Runt (qingingrunt2010@qq.com) on 2022/5/29.
 */
public class ActiveResult extends BaseApiResult{
    public String userID,userClassName,validDate,permission;
    public int userClass;
    public UserInfo userInfo;
}
app/src/main/java/com/auto/lyric/data/UserInfo.java
New file
@@ -0,0 +1,16 @@
package com.auto.lyric.data;
/**
 * Created by Runt (qingingrunt2010@qq.com) on 2022/5/29.
 */
public class UserInfo {
    public String userId;
    public String phoneID;
    public String userDateAdded;
    public String activeKey;
    public String keyDateValid;
    public String className;
    public String permission;
}
app/src/main/java/com/auto/lyric/retrofit/api/CollectApiCenter.java
@@ -28,7 +28,7 @@
     */
    @FormUrlEncoded
    @POST("index.php?route=lrc/favorites/getLrc")
    Observable<CollectListResult> getLrcDetail(@Field("lrc_id") int lrc_id);
    Observable<CollectListResult> getLrcDetailFromCollect(@Field("lrc_id") int lrc_id);
    /**
     * 删除歌词
@@ -36,7 +36,7 @@
     */
    @FormUrlEncoded
    @POST("index.php?route=lrc/favorites/delLrc")
    Observable<CollectListResult> removeLrc(@Field("lrc_id") int lrc_id);
    Observable<CollectListResult> removeLrcFromCollect(@Field("lrc_id") int lrc_id);
    /**
     * 添加歌词歌词
@@ -44,7 +44,7 @@
     */
    @FormUrlEncoded
    @POST("index.php?route=lrc/favorites/delLrc")
    Observable<CollectListResult> addLrc(@Field("lrc_title") String lrc_title,@Field("lrc_text") String lrc_text);
    Observable<CollectListResult> addLrcToCollect(@Field("lrc_title") String lrc_title,@Field("lrc_text") String lrc_text);
    /**
     * 激活软件
@@ -58,8 +58,8 @@
     */
    @FormUrlEncoded
    @POST("index.php?route=lrc/login_check")
    Observable<ActiveResult> loginCheck(@Field("activeKey") String activeKey, @Field("ip") String ip, @Field("random") String random,
                                        @Field("timeStamp") long time, @Field("userId") int userId, @Field("sign") String sign);
    Observable<ActiveResult> loginCheck(@Field("activeKey") String activeKey, @Field("ip") String ip,@Field("phoneID") String phoneID, @Field("random") String random,
                                        @Field("timeStamp") long time, @Field("userID") String userId, @Field("sign") String sign);
    /**
     * 激活软件
app/src/main/java/com/auto/lyric/vm/MainViewModel.java
@@ -25,15 +25,14 @@
        apiCenter = RetrofitUtils.getInstance().getRetrofit(CollectApiCenter.class);
    }
    public void checkActive(String activeKey,LoadingHttpObserver<ActiveResult> observer){
    public void checkActive(String userId,String activeKey,LoadingHttpObserver<ActiveResult> observer){
        String ip = NetWorkUtils.getNetIp();
        String random = UUID.randomUUID().toString();
        long time = new Date().getTime()/1000;
        int userId = 0;
        String deviceId = DeviceIdUtils.getAndroidId(activity);
        String sign = String.format("%s%s%s%s%s%s",activeKey,ip,deviceId ,random,time,userId);
        Observable<ActiveResult> observable = apiCenter.register(activeKey, ip,deviceId, random, time, userId, SHA1UTIL.MD5(SHA1UTIL.getSHA(sign)));
        Observable<ActiveResult> observable = apiCenter.loginCheck(activeKey, ip,deviceId, random, time, userId, SHA1UTIL.MD5(SHA1UTIL.getSHA(sign)));
        httpObserverOn(observable,observer);
    }