MainActivity.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. package com.qingdaofushan.home.activity;
  2. import androidx.annotation.Nullable;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.os.Environment;
  7. import android.text.TextUtils;
  8. import android.util.Log;
  9. import android.view.View;
  10. import android.widget.EditText;
  11. import android.widget.TextView;
  12. import com.google.gson.Gson;
  13. import com.hjq.permissions.OnPermissionCallback;
  14. import com.hjq.permissions.Permission;
  15. import com.hjq.permissions.XXPermissions;
  16. import com.kongzue.dialogx.dialogs.WaitDialog;
  17. import com.lzy.okgo.OkGo;
  18. import com.lzy.okgo.model.Progress;
  19. import com.lzy.okgo.model.Response;
  20. import com.lzy.okgo.request.GetRequest;
  21. import com.lzy.okserver.OkDownload;
  22. import com.lzy.okserver.download.DownloadListener;
  23. import com.qingdaofushan.home.R;
  24. import com.qingdaofushan.home.bean.ExpandsBean;
  25. import com.qingdaofushan.home.bean.FetchUpBean;
  26. import com.qingdaofushan.home.bean.ItemCommonList;
  27. import com.qingdaofushan.home.bean.appVMBean;
  28. import com.qingdaofushan.home.component.ServerManager;
  29. import com.qingdaofushan.home.data.ConstantData;
  30. import com.qingdaofushan.home.data.JsonCallBack;
  31. import com.qingdaofushan.home.data.Url;
  32. import com.qingdaofushan.home.utils.CompressUtil;
  33. import com.qingdaofushan.home.utils.SharedPreferenceUtil;
  34. import com.qingdaofushan.home.utils.ToastUtil;
  35. import com.qingdaofushan.home.view.VersionCheckingUtil;
  36. import com.qingdaofushan.home.weiview.WebViewActivity;
  37. import com.tencent.trtc.videocall.VideoCallingEnterActivity;
  38. import java.io.File;
  39. import java.io.FileInputStream;
  40. import java.util.ArrayList;
  41. import java.util.LinkedList;
  42. import java.util.List;
  43. import io.reactivex.Observable;
  44. public class MainActivity extends AppCompatActivity {
  45. private String mRootUrl;
  46. private ServerManager mServerManager;
  47. private EditText editText;
  48. private TextView start;
  49. @Override
  50. protected void onCreate(Bundle savedInstanceState) {
  51. super.onCreate(savedInstanceState);
  52. setContentView(R.layout.activity_main);
  53. start = findViewById(R.id.start);
  54. editText = findViewById(R.id.ed_text);
  55. initPermission();
  56. start.setOnClickListener(new View.OnClickListener() {
  57. @Override
  58. public void onClick(View view) {
  59. // initApp("https://cq-1253658654.file.myqcloud.com/friday.zip", 1);
  60. // mServerManager.startServer();
  61. SharedPreferenceUtil.put(MainActivity.this, "webUrl", editText.getText().toString());
  62. Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
  63. intent.putExtra("url", editText.getText().toString());
  64. // intent.putExtra("url", "http://127.0.0.1:8080");
  65. startActivity(intent);
  66. }
  67. });
  68. }
  69. private void initPermission() {
  70. XXPermissions.with(this)
  71. .permission(Permission.WRITE_EXTERNAL_STORAGE)
  72. .permission(Permission.READ_EXTERNAL_STORAGE)
  73. .permission(Permission.CAMERA)
  74. .request(new OnPermissionCallback() {
  75. @Override
  76. public void onGranted(List<String> permissions, boolean all) {
  77. if (all) {
  78. // 初始化HTTP服务
  79. // mServerManager = new ServerManager(MainActivity.this);
  80. // mServerManager.register();
  81. // getVM();
  82. // initApp("https://cq-1253658654.cos.ap-shanghai.myqcloud.com/friday.zip", 1);
  83. // if (!TextUtils.isEmpty((String) SharedPreferenceUtil.get(MainActivity.this, "webUrl", ""))) {
  84. // Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
  85. // intent.putExtra("url", (String) SharedPreferenceUtil.get(MainActivity.this, "webUrl", ""));
  86. //// intent.putExtra("url", "http://debug.qingdaofushan.com/friday/fsmobile/#/main");
  87. // startActivity(intent);
  88. // } else {
  89. // editText.setVisibility(View.VISIBLE);
  90. // start.setVisibility(View.VISIBLE);
  91. // }
  92. Intent intent=new Intent(MainActivity.this, VideoCallingEnterActivity.class);
  93. startActivity(intent);
  94. } else {
  95. initPermission();
  96. ToastUtil.showToast("获取部分权限成功,但部分权限未正常授予");
  97. }
  98. }
  99. @Override
  100. public void onDenied(List<String> permissions, boolean never) {
  101. if (never) {
  102. ToastUtil.showToast("被永久拒绝授权,请手动授予录音和日历权限");
  103. // 如果是被永久拒绝就跳转到应用权限系统设置页面
  104. XXPermissions.startPermissionActivity(MainActivity.this, permissions);
  105. } else {
  106. ToastUtil.showToast("获取录音和日历权限失败");
  107. }
  108. }
  109. });
  110. }
  111. private void initApp(String appWebUrl, int updataType) {
  112. OkDownload.getInstance().setFolder(Environment.getExternalStorageDirectory().getAbsolutePath() + "/fshome/");
  113. File indexFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/fshome/friday/fsmobile/index.html");
  114. File zipFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/fshome/friday.zip");
  115. if (!indexFile.exists() || updataType == 1) {
  116. if (zipFile.exists()) {
  117. zipFile.delete();
  118. }
  119. WaitDialog.show("正在进行第一次加载...", 0f);
  120. // String url = "https://pwxmax.cn/homeLifemini.zip";
  121. GetRequest<File> requesta = OkGo.get(appWebUrl);
  122. OkDownload.request(appWebUrl, requesta)//
  123. .save()
  124. .register(new DownloadListener(appWebUrl) {
  125. @Override
  126. public void onStart(Progress progress) {
  127. // ToastUtil.showToast("开始下载");
  128. }
  129. @Override
  130. public void onProgress(Progress progress) {
  131. WaitDialog.show("正在进行第一次加载...", progress.fraction);
  132. }
  133. @Override
  134. public void onError(Progress progress) {
  135. ToastUtil.showToast("下载错误" + progress.exception.toString());
  136. Log.e("pwx", "onError: " + progress.exception.toString());
  137. WaitDialog.dismiss();
  138. }
  139. @Override
  140. public void onFinish(File file, Progress progress) {
  141. CompressUtil.unzip(file, Environment.getExternalStorageDirectory().getAbsolutePath() + "/fshome/");
  142. // ToastUtil.showToast("下载完成");
  143. mServerManager.startServer();
  144. Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
  145. intent.putExtra("url", "http://127.0.0.1:8080/friday/fsmobile");
  146. startActivity(intent);
  147. WaitDialog.dismiss();
  148. }
  149. @Override
  150. public void onRemove(Progress progress) {
  151. }
  152. }).start();
  153. }
  154. }
  155. private void getVM() {
  156. File versionFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/fshome/fsmobile/version");
  157. FetchUpBean fetchUpBean = new FetchUpBean();
  158. ArrayList<FetchUpBean.QuerysBean> querysBeans = new ArrayList<>();
  159. FetchUpBean.QuerysBean querysBean = new FetchUpBean.QuerysBean();
  160. FetchUpBean.QuerysBean.OrderbyBean orderbyBean = new FetchUpBean.QuerysBean.OrderbyBean();
  161. ArrayList<String> strings = new ArrayList<>();
  162. strings.add("createTime");
  163. orderbyBean.setColumns(strings);
  164. orderbyBean.setSeq("DESC");
  165. querysBean.setOrderby(orderbyBean);
  166. FetchUpBean.QuerysBean.LimitBean limitBean = new FetchUpBean.QuerysBean.LimitBean();
  167. limitBean.setStart(0);
  168. limitBean.setLength(1);
  169. querysBean.setLimit(limitBean);
  170. querysBean.setOrderby(orderbyBean);
  171. querysBeans.add(querysBean);
  172. fetchUpBean.setQuerys(querysBeans);
  173. OkGo.<ItemCommonList<appVMBean, ExpandsBean>>post(Url.URL_VERSION)
  174. .upJson(new Gson().toJson(fetchUpBean))
  175. .execute(new JsonCallBack<ItemCommonList<appVMBean, ExpandsBean>>() {
  176. @Override
  177. public void onSuccess(Response<ItemCommonList<appVMBean, ExpandsBean>> response) {
  178. super.onSuccess(response);
  179. ItemCommonList<appVMBean, ExpandsBean> body = response.body();
  180. if (body.getCode() == ConstantData.CODE_RESULT_SUCCESS) {
  181. if (body.getData() != null && body.getData().size() > 0) {
  182. if (body.getData().get(0).getUpdateType() == 2) {
  183. new VersionCheckingUtil().isChecking(MainActivity.this, body.getData().get(0), 0);
  184. } else if (body.getData().get(0).getUpdateType() == 1) {
  185. if (versionFile.exists()) {
  186. if (!readFileContent(versionFile).equals(body.getData().get(0).getWebVersion())) {
  187. initApp(body.getData().get(0).getAppWebUrl(), 1);
  188. }
  189. } else {
  190. initApp(body.getData().get(0).getAppWebUrl(), 1);
  191. }
  192. }
  193. }
  194. } else {
  195. ToastUtil.showToast("加载失败");
  196. }
  197. }
  198. @Override
  199. public void onError(Response<ItemCommonList<appVMBean, ExpandsBean>> response) {
  200. super.onError(response);
  201. }
  202. });
  203. }
  204. /**
  205. * Start notify.
  206. */
  207. public void onServerStart(String ip) {
  208. if (!TextUtils.isEmpty(ip)) {
  209. List<String> addressList = new LinkedList<>();
  210. mRootUrl = "http://127.0.0.1:8080/";
  211. addressList.add(mRootUrl);
  212. // ToastUtil.showToast("服务器启动");
  213. } else {
  214. mRootUrl = null;
  215. }
  216. }
  217. /**
  218. * 【读取文件内容】
  219. **/
  220. public static String readFileContent(File file) {
  221. try {
  222. if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
  223. byte[] buffer = new byte[32 * 1024];
  224. FileInputStream fis = new FileInputStream(file);
  225. int len = 0;
  226. StringBuffer sb = new StringBuffer("");
  227. while ((len = fis.read(buffer)) > 0) {
  228. sb.append(new String(buffer, 0, len));
  229. }
  230. fis.close();
  231. return sb.toString();
  232. }
  233. } catch (Exception e) {
  234. return "";
  235. }
  236. return null;
  237. }
  238. /**
  239. * Error notify.
  240. */
  241. public void onServerError(String message) {
  242. mRootUrl = null;
  243. }
  244. /**
  245. * Stop notify.
  246. */
  247. public void onServerStop() {
  248. mRootUrl = null;
  249. }
  250. @Override
  251. protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  252. super.onActivityResult(requestCode, resultCode, data);
  253. if (requestCode == XXPermissions.REQUEST_CODE) {
  254. if (XXPermissions.isGranted(this, Permission.WRITE_EXTERNAL_STORAGE)
  255. && XXPermissions.isGranted(this, Permission.READ_EXTERNAL_STORAGE)
  256. && XXPermissions.isGranted(this, Permission.CAMERA)) {
  257. } else {
  258. ToastUtil.showToast("权限未正常获取");
  259. initPermission();
  260. }
  261. }
  262. }
  263. @Override
  264. protected void onDestroy() {
  265. super.onDestroy();
  266. if (mServerManager != null) {
  267. mServerManager.unRegister();
  268. }
  269. }
  270. }