version:1.0

update:2021-10-13 18:52:13
fix:去除okgo,rxAndroid1,优化依赖
add:切换到奥乐云平台
This commit is contained in:
2021-10-13 18:54:20 +08:00
parent 13707fc96a
commit 3018660216
181 changed files with 2343 additions and 4445 deletions

View File

@@ -0,0 +1,89 @@
package com.aoleyun.sn.manager;
import android.content.Context;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.aoleyun.sn.utils.Logutils;
import com.aoleyun.sn.utils.SPUtils;
public class AmapManager {
private static AmapManager sInstance;
private Context mContext;
public static AMapLocationClient locationClient = null;
private String TAG = AmapManager.class.getSimpleName();
private AmapManager(Context context) {
this.mContext = context;
}
public static void init(Context context) {
if (sInstance == null) {
sInstance = new AmapManager(context);
}
}
public static AmapManager getInstance() {
if (sInstance == null) {
throw new IllegalStateException("You must be init AmapManager first");
}
return sInstance;
}
public AMapLocationClient getLocationClient() {
if (null == locationClient) {
initAmap();
}
return locationClient;
}
public void initAmap() {
locationClient = new AMapLocationClient(mContext);
AMapLocationClientOption option = new AMapLocationClientOption();
option.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
option.setNeedAddress(true);
//获取一次定位结果:
//该方法默认为false。
option.setOnceLocation(true);
//获取最近3s内精度最高的一次定位结果
//设置setOnceLocationLatest(boolean b)接口为true启动定位时SDK会返回最近3s内精度最高的一次定位结果。
// 如果设置其为truesetOnceLocation(boolean b)接口也会被设置为true反之不会默认为false。
option.setOnceLocationLatest(true);
locationClient.setLocationOption(option);
//设置定位模式为AMapLocationMode.Hight_Accuracy高精度模式。
//设置定位监听
locationClient.setLocationListener(new AMapLocationListener() {
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
StringBuilder sb = new StringBuilder();
//errCode等于0代表定位成功其他的为定位失败具体的可以参照官网定位错误码说明
if (aMapLocation.getErrorCode() == 0) {
Logutils.e(TAG, "onLocationChanged: " + "定位成功");
Logutils.e(TAG, "onLocationChanged: " + aMapLocation.getAddress());
sb.append(aMapLocation.getAddress()).append("\n");
SPUtils.put(mContext, "AmapAddress", aMapLocation.getAddress());
SPUtils.put(mContext, "longitude", aMapLocation.getLongitude());
SPUtils.put(mContext, "latitude", aMapLocation.getLatitude());
} else {
//定位失败
sb.append("定位失败" + "\n");
Logutils.e(TAG, "onLocationChanged: " + "定位失败");
SPUtils.put(mContext, "AmapError", String.valueOf(aMapLocation.getErrorInfo()));
}
Logutils.e(TAG, (String) SPUtils.get(mContext, "AmapAddress", "-"));
Logutils.e(TAG, (String) SPUtils.get(mContext, "AmapError", "-"));
Logutils.e(TAG, "amap: " + sb.toString());
}
});
//设置场景模式后最好调用一次stop再调用start以保证场景模式生效
locationClient.stopLocation();
locationClient.startLocation();
Logutils.e(TAG, "initAmap: " + "startLocation");
}
}

View File

@@ -0,0 +1,43 @@
package com.aoleyun.sn.manager;
import android.content.Context;
import com.blankj.utilcode.util.PathUtils;
import com.aoleyun.sn.utils.Logutils;
import java.io.File;
public class FileManager {
private static FileManager sInstance;
private Context mContext;
public FileManager(Context context) {
this.mContext = context;
}
public static void init(Context context) {
if (sInstance == null) {
sInstance = new FileManager(context);
initFolder();
}
}
public static FileManager getInstance() {
if (sInstance == null) {
throw new IllegalStateException("You must be init FileManager first");
}
return sInstance;
}
private static void initFolder() {
File file = new File(PathUtils.getExternalDownloadsPath() + File.separator + "jgy" + File.separator);
if (!file.exists()) {
if (file.mkdirs()) {
Logutils.e("initFolder", "initFolder: success");
} else {
Logutils.e("initFolder", "initFolder: failed");
}
}
}
}

View File

@@ -0,0 +1,404 @@
package com.aoleyun.sn.manager;
import android.annotation.SuppressLint;
import android.content.Context;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.Appground;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.BrowserBookmarks;
import com.aoleyun.sn.bean.BrowserData;
import com.aoleyun.sn.bean.DefaultApp;
import com.aoleyun.sn.bean.ForceDownloadBean;
import com.aoleyun.sn.bean.ForceDownloadData;
import com.aoleyun.sn.bean.LogoImg;
import com.aoleyun.sn.bean.NetAndLaunchBean;
import com.aoleyun.sn.bean.StudentsInfo;
import com.aoleyun.sn.network.api.AppLimitApi;
import com.aoleyun.sn.network.api.DeselectIDApi;
import com.aoleyun.sn.network.api.ForceDownloadApi;
import com.aoleyun.sn.network.api.NetAndLaunchApi;
import com.aoleyun.sn.network.api.SystemSettingApi;
import com.aoleyun.sn.network.api.UploadAppInfoApi;
import com.aoleyun.sn.network.api.newapi.AppinsideWebApi;
import com.aoleyun.sn.network.api.newapi.BrowserBookmarksApi;
import com.aoleyun.sn.network.api.newapi.BrowserListApi;
import com.aoleyun.sn.network.api.newapi.CheckTestUpdateApi;
import com.aoleyun.sn.network.api.newapi.CheckUpdateApi;
import com.aoleyun.sn.network.api.newapi.CustomROMAppApi;
import com.aoleyun.sn.network.api.newapi.DefaultAppApi;
import com.aoleyun.sn.network.api.newapi.DesktopIconApi;
import com.aoleyun.sn.network.api.newapi.DevicesLockedStateApi;
import com.aoleyun.sn.network.api.newapi.GetAllAppApi;
import com.aoleyun.sn.network.api.newapi.GetAppLogApi;
import com.aoleyun.sn.network.api.newapi.GetBatchApi;
import com.aoleyun.sn.network.api.newapi.GetDesktopApi;
import com.aoleyun.sn.network.api.newapi.GetDeveloperApi;
import com.aoleyun.sn.network.api.newapi.GetEBagCodeApi;
import com.aoleyun.sn.network.api.newapi.GetLockStateApi;
import com.aoleyun.sn.network.api.newapi.GetJpushTagsApi;
import com.aoleyun.sn.network.api.newapi.LogoImgApi;
import com.aoleyun.sn.network.api.newapi.MACAddressApi;
import com.aoleyun.sn.network.api.newapi.NewAppinsideWebApi;
import com.aoleyun.sn.network.api.newapi.ScreenLockStateApi;
import com.aoleyun.sn.network.api.newapi.SendDownloadInfoApi;
import com.aoleyun.sn.network.api.newapi.SendDownloadTimesApi;
import com.aoleyun.sn.network.api.newapi.SendScreenshotApi;
import com.aoleyun.sn.network.api.newapi.SnTimeControlApi;
import com.aoleyun.sn.network.api.newapi.StudentsInfosApi;
import com.aoleyun.sn.network.api.newapi.TopAppControlApi;
import com.aoleyun.sn.network.api.newapi.UpdateDeviceInfoApi;
import com.aoleyun.sn.utils.Utils;
import java.io.File;
import java.util.List;
import java.util.concurrent.TimeUnit;
import cn.jpush.android.api.JPushInterface;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import okhttp3.ResponseBody;
import retrofit2.CallAdapter;
import retrofit2.Converter;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class NetInterfaceManager {
@SuppressLint("StaticFieldLeak")
private static NetInterfaceManager INSTANCE;
private Context mContext;
private Retrofit mRetrofit;
private OkHttpClient okHttpClient;
//超时时间
private int timeOut = 5;
// 缓存文件最大限制大小20M
private long cacheSize = 1024 * 1024 * 64;
private Converter.Factory gsonConverterFactory = GsonConverterFactory.create();
private CallAdapter.Factory rxJavaCallAdapterFactory = RxJava2CallAdapterFactory.create();
public static final String ROOT_URL = BuildConfig.ROOT_URL;
public static final String WEBSOCKET_URL = BuildConfig.WebsocketURL;
public static final String HTTP_KEY = "YTM3YTAxNTJmMmZmNzkyM2E2YzIwZjlhZTc0NzNmMGI=";
private NetInterfaceManager(Context context) {
this.mContext = context;
if (okHttpClient == null) {
//如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(timeOut, TimeUnit.SECONDS); // 设置连接超时时间
builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间
builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间
builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
// 设置缓存文件路径
String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache";
Cache cache = new Cache(new File(cacheDirectory), cacheSize);
builder.cache(cache);// 设置缓存
okHttpClient = builder.build();
}
if (null == mRetrofit) {
mRetrofit = new Retrofit.Builder()
.client(okHttpClient)
.baseUrl(ROOT_URL)
.addConverterFactory(gsonConverterFactory)
.addCallAdapterFactory(rxJavaCallAdapterFactory)
.build();
}
}
public static void init(Context context) {
if (INSTANCE == null) {
INSTANCE = new NetInterfaceManager(context);
}
}
public static NetInterfaceManager getInstance() {
if (INSTANCE == null) {
throw new IllegalStateException("You must be init NetworkManager first");
}
return INSTANCE;
}
public OkHttpClient getOkHttpClient() {
return okHttpClient;
}
/**
* 通过sn获取设备的信息
*
* @return
*/
public Observable<BaseResponse<StudentsInfo>> getStudesInfoObservable() {
return mRetrofit.create(StudentsInfosApi.class)
.getStudentsInfo(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/**
* 获取设备锁状态
*
* @return
*/
public Observable<BaseResponse> getDevicesLockedStateObservable() {
return mRetrofit.create(DevicesLockedStateApi.class)
.getLockedState(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/**
* 发送设备mac地址
*
* @return
*/
public Observable<BaseResponse> sendMACAddressObservable() {
return mRetrofit.create(MACAddressApi.class)
.sendMACaddress(Utils.getSerial(),
Utils.getAndroid10MAC(mContext),
JPushInterface.getRegistrationID(mContext),
Utils.getCustomVersion(),
BuildConfig.VERSION_NAME,
Utils.getAPPVersionName(mContext),
Utils.getAndroid7MAC()
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/**
* 获取极光推送的tag
*
* @return
*/
public Observable<BaseResponse> getJpushTagsObservable() {
return mRetrofit.create(GetJpushTagsApi.class)
.getJpushTags(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<BrowserData>> getBrowserListSettingObservable() {
return mRetrofit.create(BrowserListApi.class)
.getBrowserList(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<BrowserBookmarks>> getBrowserBookmarksObservable() {
return mRetrofit.create(BrowserBookmarksApi.class)
.getBrowserBookmarks(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getDesktopIconObservable() {
return mRetrofit.create(DesktopIconApi.class)
.getDesktopIcon(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<NetAndLaunchBean> getAppAutoStartUpdateAndNetObservable() {
return mRetrofit.create(NetAndLaunchApi.class)
.getNetAndLaunchApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<ResponseBody> getAppIDControlObservable() {
return mRetrofit.create(DeselectIDApi.class)
.getDeselectIDApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<List<Appground>>> getAppinsideWebObservable() {
return mRetrofit.create(AppinsideWebApi.class)
.getAppinsideWeb(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getNewAppinsideWebObservable() {
return mRetrofit.create(NewAppinsideWebApi.class)
.getAppinsideWeb(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<ResponseBody> getSystemSettingObservable() {
return mRetrofit.create(SystemSettingApi.class)
.getSystemSettingApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<ResponseBody> getAppLimitObservable() {
return mRetrofit.create(AppLimitApi.class)
.getAppLimitApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<ForceDownloadBean> getForceDownloadObservable() {
return mRetrofit.create(ForceDownloadApi.class)
.getForceDownloadApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdateObservable() {
return mRetrofit.create(CheckTestUpdateApi.class)
.getTestUpdate(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getSnTimeObservable() {
return mRetrofit.create(SnTimeControlApi.class)
.getSnTimeControl(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getScreenLockObservable() {
return mRetrofit.create(ScreenLockStateApi.class)
.getScreenLockState(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<ResponseBody> getDesktopObservable() {
return mRetrofit.create(GetDesktopApi.class)
.getDesktop(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<ResponseBody> getBatchObservable() {
return mRetrofit.create(GetBatchApi.class)
.getBatch(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<LogoImg>> getLogoImgObservable() {
return mRetrofit.create(LogoImgApi.class)
.getLogoImg(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getTopAppControl() {
return mRetrofit.create(TopAppControlApi.class)
.getSnAppControl(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getDeveloperControl() {
return mRetrofit.create(GetDeveloperApi.class)
.getDeveloperState(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getEBagCodeControl() {
return mRetrofit.create(GetEBagCodeApi.class)
.getEBagCode(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<DefaultApp>> getDefaultAppApi() {
return mRetrofit.create(DefaultAppApi.class)
.getDefaultApp(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/*
*
* API
*
* */
public UploadAppInfoApi getUploadAppInfoApi() {
return mRetrofit.create(UploadAppInfoApi.class);
}
public DeselectIDApi getDeselectIDApi() {
return mRetrofit.create(DeselectIDApi.class);
}
public AppLimitApi getAppLimitApi() {
return mRetrofit.create(AppLimitApi.class);
}
public SystemSettingApi getSystemSettingApi() {
return mRetrofit.create(SystemSettingApi.class);
}
public NetAndLaunchApi getNetAndLaunchApi() {
return mRetrofit.create(NetAndLaunchApi.class);
}
public ForceDownloadApi getForceDownloadApi() {
return mRetrofit.create(ForceDownloadApi.class);
}
public GetLockStateApi getLockState() {
return mRetrofit.create(GetLockStateApi.class);
}
public UpdateDeviceInfoApi getUpdateDeviceInfo() {
return mRetrofit.create(UpdateDeviceInfoApi.class);
}
public GetBatchApi getBatchApi() {
return mRetrofit.create(GetBatchApi.class);
}
public SnTimeControlApi getSnTimeControlApi() {
return mRetrofit.create(SnTimeControlApi.class);
}
public TopAppControlApi getTopAppControlApi() {
return mRetrofit.create(TopAppControlApi.class);
}
public CheckUpdateApi getUpdateApi() {
return mRetrofit.create(CheckUpdateApi.class);
}
public CustomROMAppApi getCustomROMAppApi() {
return mRetrofit.create(CustomROMAppApi.class);
}
public GetAllAppApi GetAllAppApi() {
return mRetrofit.create(GetAllAppApi.class);
}
public GetAppLogApi getAppLogApi() {
return mRetrofit.create(GetAppLogApi.class);
}
public SendDownloadTimesApi getSendTimesApi() {
return mRetrofit.create(SendDownloadTimesApi.class);
}
public SendDownloadInfoApi getSendInfoApi() {
return mRetrofit.create(SendDownloadInfoApi.class);
}
public SendScreenshotApi getScreenshotApi() {
return mRetrofit.create(SendScreenshotApi.class);
}
}