完成service

This commit is contained in:
itgaojian163 2022-12-17 16:34:00 +08:00
parent 4bf1a498be
commit c438354e3a
7 changed files with 189 additions and 162 deletions

View File

@ -26,17 +26,45 @@
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<service
android:name=".push.ServerClient"
android:enabled="true"
android:exported="true" />
<meta-data
android:name="android.max_aspect"
android:value="2.4" />
<meta-data
android:name="android.notch_support"
android:value="true" />
<meta-data
android:name="notch.config"
android:value="portrait|landscape" />
<!-- <provider-->
<!-- android:name="androidx.core.content.FileProvider"-->
<!-- android:authorities="com.tengshisoft.displaysystem.provider"-->
<!-- android:exported="false"-->
<!-- android:grantUriPermissions="true">-->
<!-- <meta-data-->
<!-- android:name="android.support.FILE_PROVIDER_PATHS"-->
<!-- android:resource="@xml/provider_paths" />-->
<!-- </provider>-->
</application>
</manifest>

View File

@ -1,13 +1,35 @@
package com.tenlionsoft.xzdisplay;
import android.app.Application;
import android.content.Intent;
import android.os.Process;
import com.hjq.toast.ToastUtils;
public class BaseMyApplication extends Application {
private final Thread.UncaughtExceptionHandler restartHandler = BaseMyApplication.this::lambda$new$2$BaseMyApplication;
@Override
public void onCreate() {
super.onCreate();
ToastUtils.init(this);
Thread.setDefaultUncaughtExceptionHandler(this.restartHandler);
}
public /* synthetic */ void lambda$new$2$BaseMyApplication(Thread thread, Throwable th) {
try {
th.printStackTrace();
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
restartApp();
}
public void restartApp() {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
startActivity(intent);
Process.killProcess(Process.myPid());
}
}

View File

@ -40,6 +40,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.api.BaseApiService;
import com.tenlionsoft.baselib.core.retrofit_net.bean.VersionBean;
import com.tenlionsoft.baselib.core.widget.views.BottomSettingPwdView;
import com.tenlionsoft.baselib.core.widget.views.BottomSettingView;
import com.tenlionsoft.baselib.utils.AppUtils;
import com.tenlionsoft.baselib.utils.ExceptionHandler;
import com.tenlionsoft.baselib.utils.LogUtils;
import com.tenlionsoft.baselib.utils.ProiderUtil;
@ -50,6 +51,7 @@ import com.tenlionsoft.xzdisplay.beans.PlaceListBean;
import com.tenlionsoft.xzdisplay.beans.ShowDataBean;
import com.tenlionsoft.xzdisplay.beans.WebBottomTabDataBean;
import com.tenlionsoft.xzdisplay.net.ApiDisplay;
import com.tenlionsoft.xzdisplay.push.ServerClient;
import com.tenlionsoft.xzdisplay.widget.CustomWebView;
import java.io.DataOutputStream;
@ -336,10 +338,20 @@ public class MainActivity extends Activity {
});
}
@Override
protected void onStart() {
super.onStart();
if (!AppUtils.serviceIsRunning()) {
LogUtils.e("server打开");
ServerClient.start(getApplicationContext());
}
}
private void startDownloadApk() {
ToastUtils.show("开始下载");
Intent intent = new Intent((Context) this, DownloadService.class);
intent.putExtra("downloadUrl", "http://192.168.1.100:7001/usercenter/app/appversion/downloadapp/e2f64ae0-69a5-454c-8471" +
intent.putExtra("downloadUrl", "http://192.168.1.100:7001/usercenter/app/appversion/downloadapp/e2f64ae0-69a5" +
"-454c-8471" +
"-483291a7bfb1");
startService(intent);
}

View File

@ -0,0 +1,85 @@
package com.tenlionsoft.xzdisplay.beans;
public class ConfigBean {
private String baseUrl;
private String deviceCode;
private String deviceIp;
private String height;
private boolean playSound;
private String pwd;
private String resolution;
private String screenDirection;
private String width;
public String getPwd() {
return this.pwd;
}
public void setPwd(String str) {
this.pwd = str;
}
public String getBaseUrl() {
return this.baseUrl;
}
public void setBaseUrl(String str) {
this.baseUrl = str;
}
public String getDeviceCode() {
return this.deviceCode;
}
public void setDeviceCode(String str) {
this.deviceCode = str;
}
public String getDeviceIp() {
return this.deviceIp;
}
public void setDeviceIp(String str) {
this.deviceIp = str;
}
public boolean isPlaySound() {
return this.playSound;
}
public void setPlaySound(boolean z) {
this.playSound = z;
}
public String getScreenDirection() {
return this.screenDirection;
}
public void setScreenDirection(String str) {
this.screenDirection = str;
}
public String getWidth() {
return this.width;
}
public void setWidth(String str) {
this.width = str;
}
public String getHeight() {
return this.height;
}
public void setHeight(String str) {
this.height = str;
}
public String getResolution() {
return this.resolution;
}
public void setResolution(String str) {
this.resolution = str;
}
}

View File

@ -11,15 +11,19 @@ import android.os.Build;
import android.os.IBinder;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.koushikdutta.async.AsyncServer;
import com.koushikdutta.async.http.Multimap;
import com.koushikdutta.async.http.server.AsyncHttpServer;
import com.koushikdutta.async.http.server.AsyncHttpServerRequest;
import com.koushikdutta.async.http.server.AsyncHttpServerResponse;
import com.tenlionsoft.baselib.constant.PathConfig;
import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi;
import com.tenlionsoft.baselib.utils.LogUtils;
import com.tenlionsoft.baselib.utils.NetworkUtils;
import com.tenlionsoft.baselib.utils.SPUtils;
import com.tenlionsoft.xzdisplay.R;
import com.tenlionsoft.xzdisplay.beans.ConfigBean;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
@ -85,25 +89,6 @@ public class ServerClient extends Service {
}
return super.onStartCommand(intent, flags, startId);
}
// public static Notification buildNotification(Context paramContext) {
// Notification notification;
// if (Build.VERSION.SDK_INT >= 26) {
// NotificationChannel notificationChannel = new NotificationChannel("default", "展览系统", 3);
// notificationChannel.setLightColor(-16711936);
// notificationChannel.setLockscreenVisibility(0);
// getNotificationManager(paramContext).createNotificationChannel(notificationChannel);
// notification = (new Notification.Builder(paramContext, "default")).setContentTitle(").setContentText(")
// .setSmallIcon(2131230818).setAutoCancel(true).build();
// } else {
// Notification.Builder builder = new Notification.Builder((Context)notification);
// builder.setSmallIcon(2131230818);
// builder.setContentTitle(");
// builder.setContentText(").setWhen(System.currentTimeMillis());
// notification = builder.build();
// LogUtils.e(new Object[] { "});
// }
// return notification;
// }
public static Notification buildNotification(Context context) {
@ -166,149 +151,35 @@ public class ServerClient extends Service {
response.code(500).end();
}
});
// server.get("/ximengjianyu/getAppVersion", (request, response) -> {
// try {
// Multimap query = request.getQuery();
// String url = query.getString("url");
// String versioncode = query.getString("versioncode");
// String md5 = query.getString("md5");
// fileUploadHolder.setAppVersion(url, versioncode, md5);
// fileUploadHolder.reset();
// Intent intent = new Intent();
// intent.setAction(Constants.ACTION_PUSH_APP_INSTALL);
// sendBroadcast(intent);
// response.code(200);
// response.send("成功");
// } catch (Exception e) {
// e.printStackTrace();
// response.code(500);
// response.send("服务器错误");
// }
// });
// server.get("/cqjianqyu/getAppVersion", (request, response) -> {
// AsyncHttpRequestBody body = request.getBody();
// });
// /**
// * 推送设置
// */
// server.get("/ximengjianyu/setAppConfig", (request, response) -> {
// try {
// Multimap query = request.getQuery();
// String baseUrl = query.getString("baseUrl");//项目地址
// String title = new String(query.getString("title").getBytes(), "UTF-8");
// String spSec = query.getString("spSec");//延迟时间
// String settingPwd = query.getString("settingPwd");//设置密码
// String cmVersion = query.getString("cmVersion");//项目版本
// String loginType = query.getString("loginType");//登录方式
// String useType = query.getString("useType");
// String faceRate = query.getString("faceRate");//识别码率
// String count = query.getString("count");//限制跳转登录次数
// if (!TextUtils.isEmpty(count)) {
// PrefUtils.putInt(MyApplication.getInstance(), Constants.COUNT, Integer.parseInt(count));
// MyApplication.getInstance().mConfigCount = Integer.parseInt(count);
// }
// if (!TextUtils.isEmpty(faceRate)) {
// PrefUtils.putString(MyApplication.getInstance(), Constants.FACE_RATE, faceRate);
// MyApplication.getInstance().mFaceRate = Float.parseFloat(faceRate);
// }
// if (!TextUtils.isEmpty(useType)) {
// PrefUtils.putString(MyApplication.getInstance(), Constants.USE_TYPE, useType);
// MyApplication.getInstance().mUseType = useType;
// }
// if (!TextUtils.isEmpty(baseUrl)) {
// PrefUtils.putString(MyApplication.getInstance(), Constants.BASE_IP, baseUrl);
// MyApplication.getInstance().base_ip = baseUrl;
// }
// if (!TextUtils.isEmpty(title)) {
// PrefUtils.putString(MyApplication.getInstance(), Constants.PRISON_NAME, title);
// MyApplication.getInstance().mPrisonName = title;
// }
// if (!TextUtils.isEmpty(spSec)) {
// PrefUtils.putInt(MyApplication.getInstance(), Constants.SP_SEC, Integer.parseInt(spSec));
// MyApplication.getInstance().mSpSec = Integer.parseInt(spSec);
// }
// if (!TextUtils.isEmpty(settingPwd)) {
// PrefUtils.putString(MyApplication.getInstance(), Constants.SETTING_PWD, settingPwd);
// MyApplication.getInstance().mSettingPwd = settingPwd;
// }
// if (!TextUtils.isEmpty(cmVersion)) {
// PrefUtils.putString(MyApplication.getInstance(), Constants.CM_VERSION, cmVersion);
// MyApplication.getInstance().mCmVersion = cmVersion;
// }
// if (!TextUtils.isEmpty(loginType)) {
// PrefUtils.putString(MyApplication.getInstance(), Constants.LOGINTYPE, loginType);
// MyApplication.getInstance().mLoginType = loginType;
// }
// response.code(200);
// response.send("成功");
// } catch (Exception e) {
// e.printStackTrace();
// response.code(500);
// response.send("服务器错误");
// }
// });
// /**
// * 推送设置
// */
// server.get("/ximengjianyu/getAppConfigInfo", (request, response) -> {
// try {
// ConfigBean bean = new ConfigBean();
// bean.setBaseUrl(MyApplication.getInstance().base_ip);
// bean.setTitle(MyApplication.getInstance().mPrisonName);
// bean.setSpSec(MyApplication.getInstance().mSpSec + "");
// bean.setCmVersion(MyApplication.getInstance().mCmVersion);
// bean.setLoginType(MyApplication.getInstance().mLoginType);
// bean.setSettingPwd(MyApplication.getInstance().mSettingPwd);
// bean.setUseType(MyApplication.getInstance().mUseType);
// bean.setAppVersionName(AppUtils.getAppVersionName());
// bean.setAppVersionCode(AppUtils.getAppVersionCode() + "");
// bean.setFaceRate(MyApplication.getInstance().mFaceRate + "");
// Gson gson = new Gson();
// String res = gson.toJson(bean);
// response.code(200);
// response.send(res);
// } catch (Exception e) {
// e.printStackTrace();
// response.code(500);
// response.send("服务器错误");
// }
// });
//
//
//
// /**
// * 获取App版本以及appKey
// */
// server.get("/ximengjianyu/getAppConfigInfo", (request, response) -> {
// try {
//// AppUtils.AppInfo info = AppUtils.getAppInfo();
//// int versionCode = info.getVersionCode();
//// String versionName = info.getVersionName();
//// String appKey = getApplication().getString(R.string.appKey);
//// String sInfo = "versionCode=" + versionCode + ",versionName=" + versionName + ",appKey=" + appKey;
// response.code(200);
// response.send(sInfo);
// } catch (Exception e) {
// e.printStackTrace();
// response.code(500);
// response.send("服务器错误");
// }
//
// });
this.server.get("/onlineStatus", this::getOnlineStatus);
this.server.get("/updateShow", this::doUpdateShow);
this.server.get("/shutDown", this::doShutDown);
this.server.get("/appUpdate", this::doUpdateApp);
this.server.get("/setAppConfig", this::setAppConfig);
this.server.get("/getAppConfigInfo", this::getAppconfigInfo);
this.server.get("/getAppConfigInfo", this::getAppConfigInfo);
server.listen(mAsyncServer, 12345);
LogUtils.e("开始监听");
}
private void getAppconfigInfo(AsyncHttpServerRequest asyncHttpServerRequest,
private void getAppConfigInfo(AsyncHttpServerRequest asyncHttpServerRequest,
AsyncHttpServerResponse asyncHttpServerResponse) {
try {
ConfigBean configBean = new ConfigBean();
configBean.setBaseUrl(SPUtils.getInstance().getString("baseUrl"));
configBean.setDeviceCode(SPUtils.getInstance().getString("deviceCode"));
configBean.setDeviceIp(NetworkUtils.getIPAddress(true));
configBean.setScreenDirection(SPUtils.getInstance().getString("appType"));
configBean.setPlaySound(SPUtils.getInstance().getBoolean("playSound"));
configBean.setPwd(TextUtils.isEmpty(SPUtils.getInstance().getString("pwd")) ? BaseUrlApi.SETTING_PWD :
SPUtils.getInstance().getString("pwd"));
String json = new Gson().toJson((Object) configBean);
asyncHttpServerResponse.code(200);
asyncHttpServerResponse.send(json);
} catch (Exception e) {
e.printStackTrace();
asyncHttpServerResponse.code(500);
asyncHttpServerResponse.send("服务器错误");
}
}
private void setAppConfig(AsyncHttpServerRequest asyncHttpServerRequest,
@ -401,7 +272,14 @@ public class ServerClient extends Service {
* 获取设备状态
*/
private void getOnlineStatus(AsyncHttpServerRequest request, AsyncHttpServerResponse response) {
try {
response.code(200);
response.send("成功");
} catch (Exception e) {
e.printStackTrace();
response.code(500);
response.send("服务器错误");
}
}
/**

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
@ -18,18 +19,19 @@
android:orientation="vertical">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_width="200dp"
android:layout_height="200dp"
android:scaleType="fitXY"
android:src="@drawable/ic_setting" />
<com.tenlionsoft.baselib.core.widget.views.TypeFaceTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="设置"
android:textSize="16sp"
app:text_type_cus="1"
android:textSize="50sp"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>

View File

@ -125,11 +125,11 @@ public final class AppUtils {
Iterator iterator =
((ActivityManager) Utils.getApp()
.getApplicationContext()
.getSystemService("activity"))
.getSystemService(Context.ACTIVITY_SERVICE))
.getRunningServices(2147483647)
.iterator();
while (iterator.hasNext()) {
if ("com.tengshisoft.hanging.push.ServerClient".equals(((ActivityManager.RunningServiceInfo) iterator.next()).service.getClassName()))
if ("com.tenlionsoft.xzdisplay.push.ServerClient".equals(((ActivityManager.RunningServiceInfo) iterator.next()).service.getClassName()))
return true;
}
return false;