From a046d5a804d6842796a718fba4e98c3259340a60 Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Sat, 04 Jun 2022 12:42:04 +0000
Subject: [PATCH] 接口参数问题 标题栏 添加收藏功能
---
app/src/main/java/com/auto/lyric/MainActivity.java | 61 ++++++--------
app/src/main/java/com/auto/lyric/base/model/BaseViewModel.java | 22 +++++
app/src/main/res/values-night/themes.xml | 2
app/src/main/java/com/auto/lyric/ui/collect/CollectActivity.java | 6 +
app/src/main/java/com/auto/lyric/vm/MainViewModel.java | 35 +++-----
app/src/main/res/values/themes.xml | 2
app/src/main/AndroidManifest.xml | 1
app/src/main/java/com/auto/lyric/ui/collect/CollectViewModel.java | 21 +++++
app/src/main/java/com/auto/lyric/retrofit/api/FieldData.java | 10 ++
app/src/main/res/layout/activity_collect.xml | 4
app/src/main/java/com/auto/lyric/base/activities/BaseActivity.java | 41 ++++++++++
app/src/main/java/com/auto/lyric/retrofit/api/CollectApiCenter.java | 27 ++----
12 files changed, 153 insertions(+), 79 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 611afe8..03e9360 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,6 +44,7 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
+ <activity android:name=".ui.collect.CollectActivity" />
<service
android:name=".service.AutoInputService"
android:enabled="true"
diff --git a/app/src/main/java/com/auto/lyric/MainActivity.java b/app/src/main/java/com/auto/lyric/MainActivity.java
index 2bee5ac..8bed626 100644
--- a/app/src/main/java/com/auto/lyric/MainActivity.java
+++ b/app/src/main/java/com/auto/lyric/MainActivity.java
@@ -6,12 +6,7 @@
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
-import android.view.ViewGroup;
-import android.widget.EditText;
-import android.widget.LinearLayout;
import android.widget.Toast;
-
-import androidx.appcompat.app.AlertDialog;
import com.auto.lyric.base.activities.BaseActivity;
import com.auto.lyric.data.ActiveResult;
@@ -22,7 +17,7 @@
import com.auto.lyric.retrofit.observable.LoadingHttpObserver;
import com.auto.lyric.service.AutoInputService;
import com.auto.lyric.service.FloatingWindowService;
-import com.auto.lyric.util.DeviceUtil;
+import com.auto.lyric.ui.collect.CollectActivity;
import com.auto.lyric.vm.MainViewModel;
import com.google.gson.Gson;
@@ -35,27 +30,31 @@
public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewModel> {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
-
+ UserInfo userInfo;
@Override
public void initViews() {
Intent floatService = new Intent(getApplicationContext(), FloatingWindowService.class);
String key = getStringProjectPrefrence("activeKey");
- UserInfo result = new Gson().fromJson(key,UserInfo.class);
+ userInfo = new Gson().fromJson(key,UserInfo.class);
try {
- if(TextUtils.isEmpty(key) || TextUtils.isEmpty(result.keyDateValid)||
- new Date().getTime() > dateFormat.parse(result.keyDateValid).getTime()){
+ if(TextUtils.isEmpty(key) || TextUtils.isEmpty(userInfo.keyDateValid)||
+ new Date().getTime() > dateFormat.parse(userInfo.keyDateValid).getTime()){
activeDialog();
}else{
- viewModel.checkActive(result.userId,result.activeKey,new LoadingHttpObserver<ActiveResult>(this) {
+ viewModel.checkActive(userInfo.userId,userInfo.activeKey,new LoadingHttpObserver<ActiveResult>(this) {
@Override
public void onError(ActiveResult error) {
super.onError(error);
+ if(error.result.equals("108")){
+ activeDialog();
+ }
}
@Override
public void onComplete(ActiveResult result) {
+ userInfo = result.userInfo;
}
});
}
@@ -113,6 +112,8 @@
//startService(floatService);
}
});
+ binding.collect.setOnClickListener(v -> addCollectDailog(userInfo.userId,userInfo.activeKey,binding.edit.getText().toString()));
+ binding.txtFavorite.setOnClickListener(v -> startActivity(new Intent(mContext, CollectActivity.class)));
}
public boolean isAccessibilitySettingsOn() {
@@ -153,39 +154,31 @@
return false;
}
+ private void addCollectDailog(String userId,String activeKey,String lrc ){
+
+ showInputDialog("收藏歌词","填写歌词名称","收藏","取消",(dialog1,editText, which) -> {
+ viewModel.addToCollect(userId, activeKey, editText.getText().toString(), lrc, new LoadingHttpObserver<ActiveResult>(this) {
+ @Override
+ public void onComplete(ActiveResult error) {
+
+ }
+ });
+ },(dialog1,editText, which) -> {});
+ }
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) -> {
+ showInputDialog("软件尚未激活或已过期", "请输入激活码", "激活", "退出程序", (dialog1,editText, 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) {
+ dialog1.dismiss();
+ userInfo = result.userInfo;
putStringProjectPrefrence("activeKey",new Gson().toJson(result.userInfo));
}
});
- });
- dialg.setButton(AlertDialog.BUTTON_POSITIVE,"退出程序",(dialog,which) ->{
+ }, (dialog1,editText, which) -> {
System.exit(0);
});
- dialg.show();
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/auto/lyric/base/activities/BaseActivity.java b/app/src/main/java/com/auto/lyric/base/activities/BaseActivity.java
index 23a5cac..d4dfaff 100644
--- a/app/src/main/java/com/auto/lyric/base/activities/BaseActivity.java
+++ b/app/src/main/java/com/auto/lyric/base/activities/BaseActivity.java
@@ -10,9 +10,11 @@
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
+import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.annotation.ColorRes;
@@ -25,6 +27,7 @@
import com.auto.lyric.R;
import com.auto.lyric.base.model.BaseViewModel;
import com.auto.lyric.base.model.ViewModelFactory;
+import com.auto.lyric.util.DeviceUtil;
import com.auto.lyric.util.PreferencesUtils;
import java.io.File;
@@ -271,6 +274,44 @@
}
/**
+ * inputdialog
+ * @param title 标题文本
+ * @param hint 提示文本
+ * @param confirm 确认文本
+ * @param cancle 取消文本
+ * @param confirmClick 确认事件
+ * @param cancleClick 取消事件
+ * @return
+ */
+ public void showInputDialog(String title, String hint, String confirm, String cancle, InputDialogClick confirmClick, InputDialogClick cancleClick){
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(title);
+ EditText editText = new EditText(this);
+ editText.setHint(hint);
+ 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.setCanceledOnTouchOutside(false);
+ dialg.setCancelable(false);
+ dialg.setButton(AlertDialog.BUTTON_NEGATIVE, confirm, (dialog, which) -> {
+ confirmClick.onClick(dialg,editText,which);
+ });
+ dialg.setButton(AlertDialog.BUTTON_POSITIVE,cancle,(dialog, which) -> {
+ cancleClick.onClick(dialg,editText,which);
+ });
+ dialg.show();
+ }
+
+ protected interface InputDialogClick{
+ void onClick(AlertDialog dialog,EditText editText,int whitch);
+ }
+
+ /**
* 获取文件保存路径 sdcard根目录/download/文件名称
* @param fileUrl
* @return
diff --git a/app/src/main/java/com/auto/lyric/base/model/BaseViewModel.java b/app/src/main/java/com/auto/lyric/base/model/BaseViewModel.java
index 83badfd..90a0797 100644
--- a/app/src/main/java/com/auto/lyric/base/model/BaseViewModel.java
+++ b/app/src/main/java/com/auto/lyric/base/model/BaseViewModel.java
@@ -4,7 +4,16 @@
import com.auto.lyric.base.activities.BaseActivity;
import com.auto.lyric.retrofit.AndroidScheduler;
+import com.auto.lyric.retrofit.api.FieldData;
import com.auto.lyric.retrofit.observable.HttpObserver;
+import com.auto.lyric.util.DeviceIdUtils;
+import com.auto.lyric.util.NetWorkUtils;
+import com.auto.lyric.util.SHA1UTIL;
+import com.google.gson.Gson;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.UUID;
import io.reactivex.Observable;
import io.reactivex.schedulers.Schedulers;
@@ -32,6 +41,19 @@
.subscribe(observer);
}
+ public Map getApiFileds(String userId,String activeKey){
+ FieldData data = new FieldData();
+ data.userID = userId;
+ data.ip = NetWorkUtils.getNetIp();
+ data.random = UUID.randomUUID().toString();
+ data.timeStamp = new Date().getTime()/1000+"";
+ data.phoneID = DeviceIdUtils.getAndroidId(activity);
+ data.activeKey = activeKey;
+ String sign = String.format("%s%s%s%s%s%s",activeKey,data.ip,data.phoneID ,data.random,data.timeStamp,userId);
+ data.sign = SHA1UTIL.MD5(SHA1UTIL.getSHA(sign));
+ Gson gson = new Gson();
+ return gson.fromJson(gson.toJson(data), Map.class);
+ }
}
diff --git a/app/src/main/java/com/auto/lyric/retrofit/api/CollectApiCenter.java b/app/src/main/java/com/auto/lyric/retrofit/api/CollectApiCenter.java
index 0be526c..04c4eba 100644
--- a/app/src/main/java/com/auto/lyric/retrofit/api/CollectApiCenter.java
+++ b/app/src/main/java/com/auto/lyric/retrofit/api/CollectApiCenter.java
@@ -3,8 +3,11 @@
import com.auto.lyric.data.ActiveResult;
import com.auto.lyric.ui.collect.CollectListResult;
+import java.util.Map;
+
import io.reactivex.Observable;
import retrofit2.http.Field;
+import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
@@ -20,7 +23,7 @@
*/
@FormUrlEncoded
@POST("index.php?route=lrc/favorites/getFavoritesList")
- Observable<CollectListResult> getCollectList();
+ Observable<CollectListResult> getCollectList(@FieldMap Map<String,String> obj);
/**
* 歌词详情
@@ -43,37 +46,23 @@
* @return
*/
@FormUrlEncoded
- @POST("index.php?route=lrc/favorites/delLrc")
- Observable<CollectListResult> addLrcToCollect(@Field("lrc_title") String lrc_title,@Field("lrc_text") String lrc_text);
+ @POST("index.php?route=lrc/favorites/addLrc")
+ Observable<CollectListResult> addLrcToCollect(@Field("lrc_title") String lrc_title,@Field("lrc_text") String lrc_text,@FieldMap Map<String,String> obj);
/**
* 激活软件
- * @param activeKey
- * @param ip
- * @param random
- * @param time
- * @param userId
- * @param sign
* @return
*/
@FormUrlEncoded
@POST("index.php?route=lrc/login_check")
- 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);
+ Observable<ActiveResult> loginCheck(@FieldMap Map<String,String> obj);
/**
* 激活软件
- * @param activeKey
- * @param ip
- * @param random
- * @param time
- * @param userId
- * @param sign
* @return
*/
@FormUrlEncoded
@POST("index.php?route=lrc/register")
- Observable<ActiveResult> register(@Field("activeKey") String activeKey, @Field("ip") String ip,@Field("phoneID") String phoneID, @Field("random") String random,
- @Field("timeStamp") long time, @Field("userID") int userId, @Field("sign") String sign);
+ Observable<ActiveResult> register(@FieldMap Map<String,String> obj);
}
diff --git a/app/src/main/java/com/auto/lyric/retrofit/api/FieldData.java b/app/src/main/java/com/auto/lyric/retrofit/api/FieldData.java
new file mode 100644
index 0000000..eac499f
--- /dev/null
+++ b/app/src/main/java/com/auto/lyric/retrofit/api/FieldData.java
@@ -0,0 +1,10 @@
+package com.auto.lyric.retrofit.api;
+
+/**
+ * 接口请求数据
+ * Created by Runt (qingingrunt2010@qq.com) on 2022/6/4.
+ */
+public class FieldData {
+ public String activeKey, ip, phoneID, random, sign;
+ public String timeStamp , userID;
+}
diff --git a/app/src/main/java/com/auto/lyric/ui/collect/CollectActivity.java b/app/src/main/java/com/auto/lyric/ui/collect/CollectActivity.java
index fb255a7..1aaba78 100644
--- a/app/src/main/java/com/auto/lyric/ui/collect/CollectActivity.java
+++ b/app/src/main/java/com/auto/lyric/ui/collect/CollectActivity.java
@@ -2,6 +2,7 @@
import com.auto.lyric.base.activities.BaseTitleBarActivity;
import com.auto.lyric.databinding.ActivityCollectBinding;
+import com.auto.lyric.retrofit.observable.LoadingHttpObserver;
/**
* Created by Runt (qingingrunt2010@qq.com) on 2022/5/29.
@@ -11,6 +12,11 @@
@Override
public void initViews() {
+ viewModel.getLrcList(new LoadingHttpObserver<CollectListResult>(this) {
+ @Override
+ public void onComplete(CollectListResult error) {
+ }
+ });
}
}
diff --git a/app/src/main/java/com/auto/lyric/ui/collect/CollectViewModel.java b/app/src/main/java/com/auto/lyric/ui/collect/CollectViewModel.java
index 40d2382..c1e54c2 100644
--- a/app/src/main/java/com/auto/lyric/ui/collect/CollectViewModel.java
+++ b/app/src/main/java/com/auto/lyric/ui/collect/CollectViewModel.java
@@ -1,15 +1,34 @@
package com.auto.lyric.ui.collect;
+import com.auto.lyric.base.activities.BaseActivity;
import com.auto.lyric.base.model.BaseViewModel;
+import com.auto.lyric.data.UserInfo;
+import com.auto.lyric.retrofit.api.CollectApiCenter;
import com.auto.lyric.retrofit.observable.LoadingHttpObserver;
+import com.auto.lyric.retrofit.utils.RetrofitUtils;
+import com.google.gson.Gson;
/**
* Created by Runt (qingingrunt2010@qq.com) on 2022/5/29.
*/
public class CollectViewModel extends BaseViewModel {
- public void getLrcList(LoadingHttpObserver<CollectListResult> observer){
+ CollectApiCenter apiCenter;
+ UserInfo userInfo;
+ public CollectViewModel(){
+ apiCenter = RetrofitUtils.getInstance().getRetrofit(CollectApiCenter.class);
+ }
+
+ @Override
+ public void onCreate(BaseActivity activity) {
+ super.onCreate(activity);
+ String key = activity.getStringProjectPrefrence("activeKey");
+ userInfo = new Gson().fromJson(key,UserInfo.class);
+ }
+
+ public void getLrcList(LoadingHttpObserver<CollectListResult> observer){
+ httpObserverOn(apiCenter.getCollectList(getApiFileds(userInfo.userId,userInfo.activeKey)),observer);
}
}
diff --git a/app/src/main/java/com/auto/lyric/vm/MainViewModel.java b/app/src/main/java/com/auto/lyric/vm/MainViewModel.java
index e83144f..4e3ec42 100644
--- a/app/src/main/java/com/auto/lyric/vm/MainViewModel.java
+++ b/app/src/main/java/com/auto/lyric/vm/MainViewModel.java
@@ -5,12 +5,6 @@
import com.auto.lyric.retrofit.api.CollectApiCenter;
import com.auto.lyric.retrofit.observable.LoadingHttpObserver;
import com.auto.lyric.retrofit.utils.RetrofitUtils;
-import com.auto.lyric.util.DeviceIdUtils;
-import com.auto.lyric.util.NetWorkUtils;
-import com.auto.lyric.util.SHA1UTIL;
-
-import java.util.Date;
-import java.util.UUID;
import io.reactivex.Observable;
@@ -26,26 +20,25 @@
}
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;
- 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.loginCheck(activeKey, ip,deviceId, random, time, userId, SHA1UTIL.MD5(SHA1UTIL.getSHA(sign)));
+ Observable<ActiveResult> observable = apiCenter.loginCheck(getApiFileds(userId,activeKey));
httpObserverOn(observable,observer);
}
public void register(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.register(getApiFileds("0",activeKey));
httpObserverOn(observable,observer);
}
+ /**
+ *
+ * @param userId
+ * @param activeKey
+ * @param title 歌词标题
+ * @param lrc 歌词内容
+ * @param observer
+ */
+ public void addToCollect(String userId,String activeKey,String title,String lrc,LoadingHttpObserver<ActiveResult> observer){
+ httpObserverOn(apiCenter.addLrcToCollect(title,lrc,getApiFileds(userId,activeKey)),observer);
+ }
+
}
diff --git a/app/src/main/res/layout/activity_collect.xml b/app/src/main/res/layout/activity_collect.xml
index d1772ef..f1394a2 100644
--- a/app/src/main/res/layout/activity_collect.xml
+++ b/app/src/main/res/layout/activity_collect.xml
@@ -6,7 +6,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.auto.lyric.widgets.TitleBarView
- android:id="@+id/titlebar"
+ android:id="@+id/titleBar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/black"
@@ -21,7 +21,7 @@
<include layout="@layout/refresh_recycler"
android:layout_width="match_parent"
android:layout_height="0dp"
- app:layout_constraintTop_toBottomOf="@id/titlebar"
+ app:layout_constraintTop_toBottomOf="@id/titleBar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 40d9949..20a6728 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -1,6 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
- <style name="Theme.AutoLyric" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+ <style name="Theme.AutoLyric" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryVariant">@color/color_gray</item>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index f7a09d4..4ac838e 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,6 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
- <style name="Theme.AutoLyric" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+ <style name="Theme.AutoLyric" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/black</item>
<item name="colorPrimaryVariant">@color/gray_normal</item>
--
Gitblit v1.9.1