From ea6ce17bf3272259295adccbad85583079b5bac0 Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Wed, 22 Feb 2023 14:14:41 +0000
Subject: [PATCH] api调用
---
app/src/main/java/com/auto/lyric/data/DeviceInfo.java | 78 +++++++++++++++++++
app/src/main/java/com/auto/lyric/MainActivity.java | 12 ++
app/src/main/java/com/auto/lyric/base/model/BaseViewModel.java | 6 +
app/src/main/java/com/auto/lyric/vm/MainViewModel.java | 48 ++++++++++++
app/src/main/java/com/auto/lyric/retrofit/api/CommonApiCenter.java | 19 ++++
app/src/main/java/com/auto/lyric/util/DeviceUtil.java | 58 ++++++++++++++
app/src/main/java/com/auto/lyric/service/FloatingWindowService.java | 2
app/build.gradle | 16 ++++
8 files changed, 236 insertions(+), 3 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 6a19aa5..a45b542 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,18 +15,34 @@
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
+ signingConfigs {
+ release {
+ keyAlias 'hefan'
+ keyPassword '34210000'
+ storeFile file('../../hefan.jks')
+ storePassword '34210000'
+ }
+ debug {
+ keyAlias 'hefan'
+ keyPassword '34210000'
+ storeFile file('../../hefan.jks')
+ storePassword '34210000'
+ }
+ }
buildTypes {
debug {
minifyEnabled false
buildConfigField 'String','HOST_IP_ADDR','"https://test1.mydetao.cn/"'
resValue "string", "app_name", "歌词工具测试"
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ signingConfig signingConfigs.debug
}
release {
minifyEnabled false
buildConfigField 'String','HOST_IP_ADDR','"https://test1.mydetao.cn/"'
resValue "string", "app_name", "歌词工具"
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ signingConfig signingConfigs.release
}
}
compileOptions {
diff --git a/app/src/main/java/com/auto/lyric/MainActivity.java b/app/src/main/java/com/auto/lyric/MainActivity.java
index 90e69f3..182d0b5 100644
--- a/app/src/main/java/com/auto/lyric/MainActivity.java
+++ b/app/src/main/java/com/auto/lyric/MainActivity.java
@@ -31,9 +31,11 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Date;
import java.util.regex.Pattern;
public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewModel> {
+ SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
UserInfo userInfo;
@Override
@@ -63,11 +65,19 @@
}
});
Intent floatService = new Intent(getApplicationContext(), FloatingWindowService.class);
+ String deviceInfoStr = getStringProjectPrefrence("deviceInfo");
+ if(TextUtils.isEmpty(deviceInfoStr)){
+ viewModel.registerDevice();
+ }
+ long date = getLongProjectPrefrence("launchDate");
+ if(date == 0 || !dateFormat.format(new Date()).equals(dateFormat.format(new Date(date))) ){
+ viewModel.launchApp();
+ }
String key = getStringProjectPrefrence("activeKey");
/*userInfo = new Gson().fromJson(key,UserInfo.class);
try {
if(TextUtils.isEmpty(key) || TextUtils.isEmpty(userInfo.keyDateValid)||
- new Date().getTime() > dateFormat.parse(userInfo.keyDateValid).getTime()){
+ new Date().getTime() > dateTimeFormat.parse(userInfo.keyDateValid).getTime()){
activeDialog();
}else{
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 a511ae5..d0c186f 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
@@ -18,6 +18,8 @@
import io.reactivex.Observable;
import io.reactivex.schedulers.Schedulers;
+import okhttp3.FormBody;
+import okhttp3.MediaType;
import okhttp3.RequestBody;
/**
@@ -31,6 +33,10 @@
this.activity = activity;
}
+ protected RequestBody createJsonBody(Object obj){
+ return FormBody.create(MediaType.parse("application/json; charset=utf-8"),obj instanceof String?obj.toString(): new Gson().toJson(obj));
+ }
+
/**
* 网络请求观察
* @param observable
diff --git a/app/src/main/java/com/auto/lyric/data/DeviceInfo.java b/app/src/main/java/com/auto/lyric/data/DeviceInfo.java
new file mode 100644
index 0000000..dc30a28
--- /dev/null
+++ b/app/src/main/java/com/auto/lyric/data/DeviceInfo.java
@@ -0,0 +1,78 @@
+package com.auto.lyric.data;
+
+import android.content.Context;
+import android.os.Build;
+import android.util.DisplayMetrics;
+import android.util.Log;
+
+import com.auto.lyric.util.DeviceIdUtils;
+import com.auto.lyric.util.DeviceUtil;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * @purpose 设备信息
+ * @author Runt (qingingrunt2010@qq.com)
+ * @date 2022/4/13.
+ */
+public class DeviceInfo {
+
+ //("系统:android, ios")
+ public String os;
+ //("系统版本")
+ public String osVersion;
+ //("设备品牌")
+ public String brand;
+ //("手机型号")
+ public String model;
+
+ //("屏幕宽度")
+ public int screenWidth;
+ //("屏幕高度")
+ public int screenHeight;
+ //("屏幕DPI")
+ public int screenDensityDpi;
+
+ public String deviceId; // imei or idfa, deviceId 如果有多个,按照字母序调整
+ public String deviceId2; // android 补充
+ public String deviceId3; // android 补充
+
+ public String oaid;
+ public String androidId;
+
+ public static DeviceInfo getInstance(Context context){
+ DeviceInfo info = new DeviceInfo();
+ info.os = DeviceUtil.isHarmonyOS()?"harmony":"android";
+ info.osVersion = DeviceUtil.isHarmonyOS()?DeviceUtil.getProp("hw_sc.build.platform.version", ""): Build.VERSION.RELEASE;
+ info.brand = Build.BRAND;
+ info.model = Build.MODEL;
+ DisplayMetrics screenPixel = DeviceUtil.getScreenPixel(context);
+ info.screenWidth = screenPixel.widthPixels;
+ info.screenHeight = screenPixel.heightPixels;
+ info.screenDensityDpi = screenPixel.densityDpi;
+ JSONObject json = DeviceIdUtils.getDeviceIds(context);
+ Log.e("DataCenter","deviceInfo:"+json);
+ try {
+ if(json.has("1")){
+ info.deviceId = json.getString("1");
+ }
+ if(json.has("2")){
+ info.deviceId2 = json.getString("2");
+ }
+ if(json.has("3")){
+ info.deviceId3 = json.getString("3");
+ }
+ if(json.has("6")){
+ info.androidId = json.getString("6");
+ }
+ if(json.has("7")){
+ info.oaid = json.getString("7");
+ }
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ return info;
+ }
+
+}
diff --git a/app/src/main/java/com/auto/lyric/retrofit/api/CommonApiCenter.java b/app/src/main/java/com/auto/lyric/retrofit/api/CommonApiCenter.java
index 84bed84..f2bce3a 100644
--- a/app/src/main/java/com/auto/lyric/retrofit/api/CommonApiCenter.java
+++ b/app/src/main/java/com/auto/lyric/retrofit/api/CommonApiCenter.java
@@ -1,13 +1,14 @@
package com.auto.lyric.retrofit.api;
-
-import com.auto.lyric.data.ActiveResult;
import com.auto.lyric.data.ApkUpGradeResult;
+import com.auto.lyric.data.BaseApiResult;
import java.util.Map;
import io.reactivex.Observable;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
@@ -63,6 +64,20 @@
@GET("system/appupgrade/tourist/get/2")
Observable<ApkUpGradeResult> getAppUpdate();
+ /**
+ * 注册设备
+ * @return
+ */
+ @POST
+ Observable<BaseApiResult> registerDevice(@Url String url,@Body RequestBody body);
+
+
+ /**
+ * 设备启动
+ * @return
+ */
+ @POST
+ Observable<BaseApiResult> launchApp(@Url String url,@Body RequestBody body);
}
diff --git a/app/src/main/java/com/auto/lyric/service/FloatingWindowService.java b/app/src/main/java/com/auto/lyric/service/FloatingWindowService.java
index 865ebe0..a2fc685 100644
--- a/app/src/main/java/com/auto/lyric/service/FloatingWindowService.java
+++ b/app/src/main/java/com/auto/lyric/service/FloatingWindowService.java
@@ -218,6 +218,7 @@
try {
timer.cancel();
}catch (Exception e){}
+ timer = new Timer();
timer.schedule(new ServiceTask(),0,10);
binding.btnStart.setText("停止");
binding.btnPause.setText("暂停");
@@ -243,6 +244,7 @@
private void stop(){
pause();
+ progress = LyricServer.getLrc_map().get(0).begintime;
binding.btnStart.setText("开启");
binding.btnPause.setEnabled(false);
}
diff --git a/app/src/main/java/com/auto/lyric/util/DeviceUtil.java b/app/src/main/java/com/auto/lyric/util/DeviceUtil.java
index b6128a3..75d7049 100644
--- a/app/src/main/java/com/auto/lyric/util/DeviceUtil.java
+++ b/app/src/main/java/com/auto/lyric/util/DeviceUtil.java
@@ -363,4 +363,62 @@
}
return "";
}
+
+
+ /**
+ * check the system is harmony os
+ *
+ * @return true if it is harmony os
+ */
+ public static boolean isHarmonyOS() {
+ try {
+ Class clz = Class.forName("com.huawei.system.BuildEx");
+ Method method = clz.getMethod("getOsBrand");
+ return "harmony".equals(method.invoke(clz));
+ } catch (ClassNotFoundException e) {
+ Log.e(TAG, "occured ClassNotFoundException");
+ } catch (NoSuchMethodException e) {
+ Log.e(TAG, "occured NoSuchMethodException");
+ } catch (Exception e) {
+ Log.e(TAG, "occur other problem");
+ }
+ return false;
+ }
+
+ /**
+ * 获取鸿蒙系统版本号
+ */
+ public static String getHarmonyOsVersion() {
+ if (isHarmonyOS()) {
+ try {
+ Class cls = Class.forName("android.os.SystemProperties");
+ Method method = cls.getMethod("get", String.class);
+ return method.invoke(cls, "ro.huawei.build.display.id").toString();
+ //android.os.Build.DISPLAY
+ } catch ( Exception e) {
+ }
+ }
+ return "-1";
+ }
+
+ /**
+ * 获取属性
+ * @param property
+ * @param defaultValue
+ * @return
+ */
+ public static String getProp(String property, String defaultValue) {
+ try {
+ Class spClz = Class.forName("android.os.SystemProperties");
+ Method method = spClz.getDeclaredMethod("get", String.class);
+ String value = (String) method.invoke(spClz, property);
+ if (TextUtils.isEmpty(value)) {
+ return defaultValue;
+ }
+ return value;
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ return defaultValue;
+ }
}
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 d646f38..4a024fd 100644
--- a/app/src/main/java/com/auto/lyric/vm/MainViewModel.java
+++ b/app/src/main/java/com/auto/lyric/vm/MainViewModel.java
@@ -2,11 +2,17 @@
import com.auto.lyric.base.model.BaseViewModel;
import com.auto.lyric.data.ActiveResult;
+import com.auto.lyric.data.BaseApiResult;
+import com.auto.lyric.data.DeviceInfo;
import com.auto.lyric.retrofit.api.CollectApiCenter;
+import com.auto.lyric.retrofit.api.CommonApiCenter;
+import com.auto.lyric.retrofit.observable.HttpObserver;
import com.auto.lyric.retrofit.observable.LoadingHttpObserver;
import com.auto.lyric.retrofit.utils.RetrofitUtils;
+import com.google.gson.Gson;
import java.io.File;
+import java.util.Date;
import io.reactivex.Observable;
import okhttp3.MediaType;
@@ -19,9 +25,11 @@
public class MainViewModel extends BaseViewModel {
CollectApiCenter apiCenter;
+ CommonApiCenter commonApi;
public MainViewModel(){
apiCenter = RetrofitUtils.getInstance().getRetrofit(CollectApiCenter.class);
+ commonApi = RetrofitUtils.getInstance().getRetrofit(CommonApiCenter.class);
}
public void checkActive(String userId,String activeKey,LoadingHttpObserver<ActiveResult> observer){
@@ -29,6 +37,46 @@
httpObserverOn(observable,observer);
}
+ public void registerDevice(){
+ httpObserverOn(commonApi.registerDevice("https://api.hefan.space/autolyric/registerDevice",createJsonBody(DeviceInfo.getInstance(activity))), new HttpObserver() {
+ @Override
+ public void onError(BaseApiResult result) {
+
+ }
+
+ @Override
+ public void onComplete(BaseApiResult error) {
+
+ }
+
+ @Override
+ public void onComplete() {
+ super.onComplete();
+ activity.putStringProjectPrefrence("deviceInfo",new Gson().toJson(DeviceInfo.getInstance(activity)));
+ }
+ });
+ }
+
+ public void launchApp(){
+ httpObserverOn(commonApi.launchApp("https://api.hefan.space/autolyric/launchApp",createJsonBody(DeviceInfo.getInstance(activity))), new HttpObserver() {
+ @Override
+ public void onError(BaseApiResult result) {
+
+ }
+
+ @Override
+ public void onComplete(BaseApiResult error) {
+
+ }
+
+ @Override
+ public void onComplete() {
+ super.onComplete();
+ activity.putLongProjectPrefrence("launchApp",new Date().getTime());
+ }
+ });
+ }
+
public void register(String activeKey,LoadingHttpObserver<ActiveResult> observer){
Observable<ActiveResult> observable = apiCenter.register(getApiFileds("0",activeKey));
httpObserverOn(observable,observer);
--
Gitblit v1.9.1