动态加载so,稍微修改了一下
This commit is contained in:
parent
1f66204031
commit
a3b4fe3d03
@ -26,13 +26,10 @@ import com.facebook.appevents.AppEventsLogger;
|
|||||||
import com.fm.openinstall.OpenInstall;
|
import com.fm.openinstall.OpenInstall;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.pdlive.lib_so.DynamicSoLauncher;
|
import com.pdlive.lib_so.DynamicSoLauncher;
|
||||||
import com.yunbao.common.utils.LogUtils;
|
|
||||||
import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
|
import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
|
||||||
import com.tencent.imsdk.v2.V2TIMManager;
|
import com.tencent.imsdk.v2.V2TIMManager;
|
||||||
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
|
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
|
||||||
import com.tencent.imsdk.v2.V2TIMUserInfo;
|
import com.tencent.imsdk.v2.V2TIMUserInfo;
|
||||||
import com.yunbao.common.manager.OpenAdManager;
|
|
||||||
import com.yunbao.common.utils.MobclickAgent;
|
|
||||||
import com.yunbao.common.BuildConfig;
|
import com.yunbao.common.BuildConfig;
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.CommonAppContext;
|
import com.yunbao.common.CommonAppContext;
|
||||||
@ -40,6 +37,7 @@ import com.yunbao.common.Constants;
|
|||||||
import com.yunbao.common.bean.AnchorStartLiveBean;
|
import com.yunbao.common.bean.AnchorStartLiveBean;
|
||||||
import com.yunbao.common.bean.CrashSaveBean;
|
import com.yunbao.common.bean.CrashSaveBean;
|
||||||
import com.yunbao.common.event.SudGameSocketImEvent;
|
import com.yunbao.common.event.SudGameSocketImEvent;
|
||||||
|
import com.yunbao.common.manager.OpenAdManager;
|
||||||
import com.yunbao.common.manager.imrongcloud.InstructorSendReward;
|
import com.yunbao.common.manager.imrongcloud.InstructorSendReward;
|
||||||
import com.yunbao.common.manager.imrongcloud.InstructorSendRewardProvider;
|
import com.yunbao.common.manager.imrongcloud.InstructorSendRewardProvider;
|
||||||
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
|
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
|
||||||
@ -49,6 +47,9 @@ import com.yunbao.common.utils.AppManager;
|
|||||||
import com.yunbao.common.utils.Bus;
|
import com.yunbao.common.utils.Bus;
|
||||||
import com.yunbao.common.utils.GoogleUtils;
|
import com.yunbao.common.utils.GoogleUtils;
|
||||||
import com.yunbao.common.utils.L;
|
import com.yunbao.common.utils.L;
|
||||||
|
import com.yunbao.common.utils.LoadSoUtil;
|
||||||
|
import com.yunbao.common.utils.LogUtils;
|
||||||
|
import com.yunbao.common.utils.MobclickAgent;
|
||||||
import com.yunbao.common.utils.SpUtil;
|
import com.yunbao.common.utils.SpUtil;
|
||||||
import com.yunbao.live.socket.SocketReceiveBean;
|
import com.yunbao.live.socket.SocketReceiveBean;
|
||||||
import com.yunbao.live.socket.SocketRyClient;
|
import com.yunbao.live.socket.SocketRyClient;
|
||||||
@ -145,11 +146,11 @@ public class AppContext extends CommonAppContext {
|
|||||||
if (!isMainProcess()) {
|
if (!isMainProcess()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String path = getFilesDir().getAbsolutePath() + "/dynamic_so/";
|
//如果第三方的SDK自己不支持动态加载so文件时,需要自己主动加载so
|
||||||
|
String path = LoadSoUtil.so_path + "/";
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
boolean b= file.mkdir();
|
file.mkdir();
|
||||||
Log.i("mLog","创建文件 "+b);
|
|
||||||
}
|
}
|
||||||
// 在合适的时候将自定义路径插入so检索路径 需要使用者自己负责在这个路径上有写入权限
|
// 在合适的时候将自定义路径插入so检索路径 需要使用者自己负责在这个路径上有写入权限
|
||||||
DynamicSoLauncher.INSTANCE.initDynamicSoConfig(this, path, s -> {
|
DynamicSoLauncher.INSTANCE.initDynamicSoConfig(this, path, s -> {
|
||||||
|
@ -82,6 +82,7 @@ repositories {
|
|||||||
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation project(':lib_so')
|
||||||
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
|
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||||
api files('libs/jcc-bate-0.7.3.jar')
|
api files('libs/jcc-bate-0.7.3.jar')
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package com.yunbao.common.utils;
|
package com.yunbao.common.utils;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.AssetManager;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.pdlive.lib_so.DynamicSoLauncher;
|
||||||
|
import com.yunbao.common.CommonAppContext;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
@ -30,41 +32,24 @@ import okhttp3.Response;
|
|||||||
|
|
||||||
public class LoadSoUtil {
|
public class LoadSoUtil {
|
||||||
|
|
||||||
public static void loadSo(Context context, onLoadSoListener listener) {
|
//so保存的路径
|
||||||
try {
|
public static final String so_path = CommonAppContext.sInstance.getFilesDir().getAbsolutePath() + "/" + LoadSoUtil.so_path;
|
||||||
String path = context.getFilesDir().getAbsolutePath() + "/dynamic_so";
|
|
||||||
File file = new File(path);
|
|
||||||
AssetManager assetManager = context.getAssets();
|
|
||||||
String[] files = assetManager.list("libso");
|
|
||||||
if (!file.exists()) {
|
|
||||||
boolean b = file.mkdir();
|
|
||||||
Log.i("mLog", "创建文件 " + b);
|
|
||||||
}
|
|
||||||
if (file.listFiles().length != files.length) {//说明之前已经保存了
|
|
||||||
file.delete();
|
|
||||||
file.mkdir();
|
|
||||||
Log.i("mLog", "需要拷贝so文件 ");
|
|
||||||
// 获取AssetManager对象
|
|
||||||
for (int i = 0; i < files.length; i++) {
|
|
||||||
loadLibrary(context, "libso/" + files[i], files[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
listener.ok();
|
|
||||||
Log.i("mLog", "拷贝so成功------------------------");
|
|
||||||
} catch (IOException e) {
|
|
||||||
Log.e("mLog", "拷贝so错误++++++++++++++++++++");
|
|
||||||
e.printStackTrace();
|
|
||||||
listener.error();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void loadSo2(Context context, onLoadSoListener listener) {
|
/**
|
||||||
|
* 先加载so文件,再去做初始化的操作
|
||||||
|
* 1.正常的流程,判断手机的类型 加载不同的so(SUPPORTED_ABIS[0].contains("64"),代码中还未实现 )
|
||||||
|
* 2.通过不同的url去下载对应的so的zip文件
|
||||||
|
* 3.解压zip到指定位置
|
||||||
|
* 4.加载解压完成的so文件
|
||||||
|
*/
|
||||||
|
public static void downloadSoAndLoad(Context context, onLoadSoListener listener) {
|
||||||
|
//检查本地是否创建了zip的缓存文件
|
||||||
String path = context.getFilesDir().getAbsolutePath() + "/so_zip";
|
String path = context.getFilesDir().getAbsolutePath() + "/so_zip";
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
file.mkdir();
|
file.mkdir();
|
||||||
} else if (isLoadSo(context)) {
|
} else if (isLoadSo()) {//这里去验证so文件是否已经下载过了
|
||||||
listener.ok();
|
loadSo(listener);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
OkHttpClient.Builder builder = new OkHttpClient.Builder()
|
OkHttpClient.Builder builder = new OkHttpClient.Builder()
|
||||||
@ -92,7 +77,7 @@ public class LoadSoUtil {
|
|||||||
@Override
|
@Override
|
||||||
public void ok() {
|
public void ok() {
|
||||||
//下载完成开始解压 解压完成之后 区初始化声网数据
|
//下载完成开始解压 解压完成之后 区初始化声网数据
|
||||||
zip(context, path + "/" + "libSo.zip", listener);
|
zip(path + "/" + "libSo.zip", listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -102,13 +87,16 @@ public class LoadSoUtil {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void zip(Context context, String path, onLoadSoListener listener) {
|
/**
|
||||||
|
* 下载完成解压zip文件
|
||||||
|
*/
|
||||||
|
private static void zip(String path, onLoadSoListener listener) {
|
||||||
ZipInputStream zis = null;
|
ZipInputStream zis = null;
|
||||||
FileOutputStream fos = null;
|
FileOutputStream fos = null;
|
||||||
try {
|
try {
|
||||||
zis = new ZipInputStream(new FileInputStream(path));
|
zis = new ZipInputStream(new FileInputStream(path));
|
||||||
ZipEntry ze;
|
ZipEntry ze;
|
||||||
String soPath = context.getFilesDir().getAbsolutePath() + "/dynamic_so";
|
String soPath = so_path;
|
||||||
File file = new File(soPath);
|
File file = new File(soPath);
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
file.mkdir();
|
file.mkdir();
|
||||||
@ -125,7 +113,7 @@ public class LoadSoUtil {
|
|||||||
fos.close();
|
fos.close();
|
||||||
zis.closeEntry();
|
zis.closeEntry();
|
||||||
}
|
}
|
||||||
listener.ok();
|
loadSo(listener);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
listener.error();
|
listener.error();
|
||||||
@ -138,6 +126,10 @@ public class LoadSoUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 去下载so的zip文件
|
||||||
|
* 可以在下载之前去做zip是否已经下载的验证,还可以根据版本做区分(是否是最新版本,要不要做断点续传)
|
||||||
|
*/
|
||||||
private static void downloadFile(OkHttpClient mOkHttpClient, String url, File file, onLoadSoListener listener) {
|
private static void downloadFile(OkHttpClient mOkHttpClient, String url, File file, onLoadSoListener listener) {
|
||||||
Request request = new Request.Builder()
|
Request request = new Request.Builder()
|
||||||
.get()
|
.get()
|
||||||
@ -181,9 +173,11 @@ public class LoadSoUtil {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isLoadSo(Context context) {
|
public static boolean isLoadSo() {
|
||||||
String pathSo = context.getFilesDir().getAbsolutePath() + "/dynamic_so";
|
File fileSo = new File(so_path);
|
||||||
File fileSo = new File(pathSo);
|
if (!fileSo.exists()) {
|
||||||
|
fileSo.mkdir();
|
||||||
|
}
|
||||||
if (fileSo.listFiles().length == 22) {//说明之前已经保存了
|
if (fileSo.listFiles().length == 22) {//说明之前已经保存了
|
||||||
Log.i("mLog", "已经下载了so 所有直接加载就行 ");
|
Log.i("mLog", "已经下载了so 所有直接加载就行 ");
|
||||||
return true;
|
return true;
|
||||||
@ -191,44 +185,19 @@ public class LoadSoUtil {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean loadLibrary(Context context, String oldFileName, String libName) throws IOException {
|
/**
|
||||||
// 获取应用的私有模式的libs目录(真实的目录是app-libs)
|
* 调用自己实现的加载so的方式
|
||||||
String path = context.getFilesDir().getAbsolutePath() + "/dynamic_so/";
|
*/
|
||||||
// 可以获取到assets资源文件的数据流
|
public static void loadSo(onLoadSoListener listener) {
|
||||||
InputStream open = context.getAssets().open(oldFileName);
|
File fileSo = new File(so_path);
|
||||||
String new_file_name = path + libName;
|
if (!fileSo.exists()) {
|
||||||
// 把资源文件的数据流写入到app-libs目录下
|
fileSo.mkdir();
|
||||||
if (!copyLibrary(open, new_file_name)) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
File file[] = fileSo.listFiles();
|
||||||
}
|
for (int i = 0; i < file.length; i++) {
|
||||||
|
DynamicSoLauncher.INSTANCE.loadSoDynamically(file[i]);
|
||||||
//从assets资源目录下复制到app-libs目录下
|
|
||||||
public static boolean copyLibrary(InputStream fileInputStream, String new_file) {
|
|
||||||
FileOutputStream fos = null;
|
|
||||||
try {
|
|
||||||
File file = new File(new_file);
|
|
||||||
fos = new FileOutputStream(file);
|
|
||||||
int dataSize;
|
|
||||||
byte[] dataBuffer = new byte[2048];
|
|
||||||
|
|
||||||
while ((dataSize = fileInputStream.read(dataBuffer)) != -1) {
|
|
||||||
fos.write(dataBuffer, 0, dataSize);
|
|
||||||
}
|
|
||||||
fos.flush();
|
|
||||||
return true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
Log.e("mLog", e.getMessage());
|
|
||||||
} finally {
|
|
||||||
try {
|
|
||||||
if (fos != null) fos.close();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
listener.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface onLoadSoListener {
|
public interface onLoadSoListener {
|
||||||
|
@ -2,33 +2,16 @@ package io.agora.beautyapi.faceunity.agora;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.opengl.EGL14;
|
|
||||||
import android.opengl.EGLConfig;
|
|
||||||
import android.opengl.EGLContext;
|
|
||||||
import android.opengl.EGLDisplay;
|
|
||||||
import android.opengl.EGLSurface;
|
|
||||||
import android.opengl.GLES20;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.view.Surface;
|
|
||||||
import android.view.TextureView;
|
import android.view.TextureView;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
|
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.CommonAppContext;
|
import com.yunbao.common.CommonAppContext;
|
||||||
import com.yunbao.common.bean.BaseModel;
|
|
||||||
import com.yunbao.common.bean.LiveBean;
|
import com.yunbao.common.bean.LiveBean;
|
||||||
import com.yunbao.common.bean.UserBean;
|
|
||||||
import com.yunbao.common.http.API;
|
|
||||||
import com.yunbao.common.http.ResponseModel;
|
|
||||||
import com.yunbao.common.manager.MicUserManager;
|
|
||||||
import com.yunbao.common.manager.MicedUserManager;
|
|
||||||
import com.yunbao.common.manager.base.BaseCacheManager;
|
import com.yunbao.common.manager.base.BaseCacheManager;
|
||||||
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
|
|
||||||
import com.yunbao.common.utils.L;
|
import com.yunbao.common.utils.L;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -40,15 +23,6 @@ import io.agora.rtc2.RtcConnection;
|
|||||||
import io.agora.rtc2.RtcEngineConfig;
|
import io.agora.rtc2.RtcEngineConfig;
|
||||||
import io.agora.rtc2.RtcEngineEx;
|
import io.agora.rtc2.RtcEngineEx;
|
||||||
import io.agora.rtc2.video.VideoCanvas;
|
import io.agora.rtc2.video.VideoCanvas;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
||||||
import io.reactivex.functions.Consumer;
|
|
||||||
import io.reactivex.schedulers.Schedulers;
|
|
||||||
import io.rong.imkit.IMCenter;
|
|
||||||
import io.rong.imlib.IRongCallback;
|
|
||||||
import io.rong.imlib.RongIMClient;
|
|
||||||
import io.rong.imlib.model.Conversation;
|
|
||||||
import io.rong.imlib.model.Message;
|
|
||||||
import io.rong.message.TextMessage;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 声网主播管理类
|
* 声网主播管理类
|
||||||
@ -115,7 +89,6 @@ public class SWAuManager extends BaseCacheManager {
|
|||||||
config.mContext = mContext;
|
config.mContext = mContext;
|
||||||
config.mAppId = CommonAppConfig.getSwAppId();
|
config.mAppId = CommonAppConfig.getSwAppId();
|
||||||
config.mEventHandler = mRtcEventHandler;
|
config.mEventHandler = mRtcEventHandler;
|
||||||
config.mNativeLibPath=mContext.getFilesDir().getAbsolutePath() + "/dynamic_so/";
|
|
||||||
// 创建并初始化 RtcEngine
|
// 创建并初始化 RtcEngine
|
||||||
mRtcEngine = (RtcEngineEx) RtcEngineEx.create(config);
|
mRtcEngine = (RtcEngineEx) RtcEngineEx.create(config);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -51,11 +51,6 @@ import com.tencent.imsdk.v2.V2TIMManager;
|
|||||||
import com.tencent.imsdk.v2.V2TIMSDKConfig;
|
import com.tencent.imsdk.v2.V2TIMSDKConfig;
|
||||||
import com.tencent.imsdk.v2.V2TIMSDKListener;
|
import com.tencent.imsdk.v2.V2TIMSDKListener;
|
||||||
import com.tencent.imsdk.v2.V2TIMUserFullInfo;
|
import com.tencent.imsdk.v2.V2TIMUserFullInfo;
|
||||||
import com.yunbao.common.bean.QiniuLog;
|
|
||||||
import com.yunbao.common.glide.ImgLoader;
|
|
||||||
import com.yunbao.common.utils.AppManager;
|
|
||||||
import com.yunbao.common.utils.LogUtil;
|
|
||||||
import com.yunbao.common.utils.MobclickAgent;
|
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.Constants;
|
import com.yunbao.common.Constants;
|
||||||
import com.yunbao.common.activity.AbsActivity;
|
import com.yunbao.common.activity.AbsActivity;
|
||||||
@ -68,6 +63,7 @@ import com.yunbao.common.bean.ConfigBean;
|
|||||||
import com.yunbao.common.bean.IMLoginModel;
|
import com.yunbao.common.bean.IMLoginModel;
|
||||||
import com.yunbao.common.bean.LiveBean;
|
import com.yunbao.common.bean.LiveBean;
|
||||||
import com.yunbao.common.bean.LiveSvgGiftBean;
|
import com.yunbao.common.bean.LiveSvgGiftBean;
|
||||||
|
import com.yunbao.common.bean.QiniuLog;
|
||||||
import com.yunbao.common.bean.SwTokenModel;
|
import com.yunbao.common.bean.SwTokenModel;
|
||||||
import com.yunbao.common.bean.UpdataListBean;
|
import com.yunbao.common.bean.UpdataListBean;
|
||||||
import com.yunbao.common.bean.UserBean;
|
import com.yunbao.common.bean.UserBean;
|
||||||
@ -84,6 +80,7 @@ import com.yunbao.common.event.NoviceInstructorEvent;
|
|||||||
import com.yunbao.common.event.RongIMConnectionStatusEvent;
|
import com.yunbao.common.event.RongIMConnectionStatusEvent;
|
||||||
import com.yunbao.common.event.SudGameUserEvent;
|
import com.yunbao.common.event.SudGameUserEvent;
|
||||||
import com.yunbao.common.event.UpdateTablePointMe;
|
import com.yunbao.common.event.UpdateTablePointMe;
|
||||||
|
import com.yunbao.common.glide.ImgLoader;
|
||||||
import com.yunbao.common.http.CommonHttpConsts;
|
import com.yunbao.common.http.CommonHttpConsts;
|
||||||
import com.yunbao.common.http.CommonHttpUtil;
|
import com.yunbao.common.http.CommonHttpUtil;
|
||||||
import com.yunbao.common.http.HttpCallback;
|
import com.yunbao.common.http.HttpCallback;
|
||||||
@ -97,12 +94,16 @@ import com.yunbao.common.manager.IMLoginManager;
|
|||||||
import com.yunbao.common.manager.NoviceInstructorManager;
|
import com.yunbao.common.manager.NoviceInstructorManager;
|
||||||
import com.yunbao.common.manager.OpenAdManager;
|
import com.yunbao.common.manager.OpenAdManager;
|
||||||
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
|
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
|
||||||
|
import com.yunbao.common.utils.AppManager;
|
||||||
import com.yunbao.common.utils.DialogUitl;
|
import com.yunbao.common.utils.DialogUitl;
|
||||||
import com.yunbao.common.utils.DpUtil;
|
import com.yunbao.common.utils.DpUtil;
|
||||||
import com.yunbao.common.utils.GiftCacheUtil;
|
import com.yunbao.common.utils.GiftCacheUtil;
|
||||||
import com.yunbao.common.utils.GoogleUtils;
|
import com.yunbao.common.utils.GoogleUtils;
|
||||||
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
|
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
|
||||||
|
import com.yunbao.common.utils.LoadSoUtil;
|
||||||
import com.yunbao.common.utils.LocationUtil;
|
import com.yunbao.common.utils.LocationUtil;
|
||||||
|
import com.yunbao.common.utils.LogUtil;
|
||||||
|
import com.yunbao.common.utils.MobclickAgent;
|
||||||
import com.yunbao.common.utils.ProcessResultUtil;
|
import com.yunbao.common.utils.ProcessResultUtil;
|
||||||
import com.yunbao.common.utils.RouteUtil;
|
import com.yunbao.common.utils.RouteUtil;
|
||||||
import com.yunbao.common.utils.SpUtil;
|
import com.yunbao.common.utils.SpUtil;
|
||||||
@ -225,16 +226,14 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
OpenAdManager.getInstance().dismiss();
|
OpenAdManager.getInstance().dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isLoadSo=false;
|
public static boolean isLoadSo = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void main() {
|
protected void main() {
|
||||||
//初始化声网
|
//初始化声网
|
||||||
String path = getFilesDir().getAbsolutePath() + "/dynamic_so";
|
if (LoadSoUtil.isLoadSo()) {
|
||||||
File file = new File(path);
|
|
||||||
if (file.listFiles().length==22){
|
|
||||||
//说明已经有了可以直接初始化
|
//说明已经有了可以直接初始化
|
||||||
isLoadSo=true;
|
isLoadSo = true;
|
||||||
SWAuManager.get().initRtcEngine(this);
|
SWAuManager.get().initRtcEngine(this);
|
||||||
}
|
}
|
||||||
ActivityCompat.postponeEnterTransition(this);
|
ActivityCompat.postponeEnterTransition(this);
|
||||||
@ -288,8 +287,8 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
|
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
|
||||||
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw) {
|
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk, boolean isSw) {
|
||||||
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal),isSw);
|
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal), isSw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -503,8 +502,8 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
|
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
|
||||||
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw) {
|
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk, boolean isSw) {
|
||||||
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal),isSw);
|
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal), isSw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -877,12 +876,12 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(RongIMClient.ConnectionErrorCode e) {
|
public void onError(RongIMClient.ConnectionErrorCode e) {
|
||||||
ToastUtil.show(R.string.net_error+""+e.toString());
|
ToastUtil.show(R.string.net_error + "" + e.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) {
|
public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) {
|
||||||
ToastUtil.show(R.string.net_error+""+code);
|
ToastUtil.show(R.string.net_error + "" + code);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1168,9 +1167,9 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
public void watchLive(LiveBean liveBean, String key, int position) {
|
public void watchLive(LiveBean liveBean, String key, int position) {
|
||||||
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw) {
|
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk, boolean isSw) {
|
||||||
MobclickAgent.onEvent(mContext, "home_page_enter_room", "首页点击直播间");
|
MobclickAgent.onEvent(mContext, "home_page_enter_room", "首页点击直播间");
|
||||||
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal),isSw);
|
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal), isSw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1606,7 +1605,7 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
public void onLiveFloatEvent(LiveFloatEvent event) {
|
public void onLiveFloatEvent(LiveFloatEvent event) {
|
||||||
if (event != null && event.getmLiveBean() != null && !TextUtils.isEmpty(event.getmLiveBean().getPull())) {
|
if (event != null && event.getmLiveBean() != null && !TextUtils.isEmpty(event.getmLiveBean().getPull())) {
|
||||||
new Handler().post(() -> LiveFloatView.getInstance().cacheLiveData(event.getmLiveBean(), event.getmLiveType(), event.getmLiveSDK() ==Constants.LIVE_SDK_SW, event.getmLiveTypeVal()).builderFloat(mContext, event.getmLiveBean().getPull(), LiveAudienceActivity.class));
|
new Handler().post(() -> LiveFloatView.getInstance().cacheLiveData(event.getmLiveBean(), event.getmLiveType(), event.getmLiveSDK() == Constants.LIVE_SDK_SW, event.getmLiveTypeVal()).builderFloat(mContext, event.getmLiveBean().getPull(), LiveAudienceActivity.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1656,12 +1655,13 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
private void initLogUpdate(){
|
|
||||||
|
private void initLogUpdate() {
|
||||||
LiveNetManager.get(mContext)
|
LiveNetManager.get(mContext)
|
||||||
.getLogUpdateStatus("1", new com.yunbao.common.http.base.HttpCallback<QiniuLog>() {
|
.getLogUpdateStatus("1", new com.yunbao.common.http.base.HttpCallback<QiniuLog>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(QiniuLog data) {
|
public void onSuccess(QiniuLog data) {
|
||||||
if(data.getLog_type()==1){
|
if (data.getLog_type() == 1) {
|
||||||
LogUtil.shareFile(mContext);
|
LogUtil.shareFile(mContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -492,7 +492,7 @@ public class MainHomeLiveViewHolder extends AbsMainHomeChildViewHolder implement
|
|||||||
onItemClick2(bean, position);
|
onItemClick2(bean, position);
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(mContext, "正在下载so文件,请稍后。。。", Toast.LENGTH_LONG).show();
|
Toast.makeText(mContext, "正在下载so文件,请稍后。。。", Toast.LENGTH_LONG).show();
|
||||||
LoadSoUtil.loadSo2(mContext, new LoadSoUtil.onLoadSoListener() {
|
LoadSoUtil.downloadSoAndLoad(mContext, new LoadSoUtil.onLoadSoListener() {
|
||||||
@Override
|
@Override
|
||||||
public void ok() {
|
public void ok() {
|
||||||
MainActivity.isLoadSo = true;
|
MainActivity.isLoadSo = true;
|
||||||
|
@ -9,4 +9,3 @@ include ':lib_google'
|
|||||||
include ':IAP6Helper'
|
include ':IAP6Helper'
|
||||||
include ':lib_faceunity'
|
include ':lib_faceunity'
|
||||||
include ':lib_so'
|
include ':lib_so'
|
||||||
include ':lib_so'
|
|
||||||
|
Loading…
Reference in New Issue
Block a user