a8795d643098a11700751754e2b2ef23a2326e57
[rtmpclient.git] / app / src / main / java / ai / suanzi / rtmpclient / CheckVersionInfoTask.java
1 package ai.suanzi.rtmpclient;
2
3 import android.content.Context;
4 import android.os.AsyncTask;
5 import org.apache.log4j.Logger;
6 import org.json.JSONException;
7 import org.json.JSONObject;
8
9 import java.io.BufferedReader;
10 import java.io.IOException;
11 import java.io.InputStream;
12 import java.io.InputStreamReader;
13 import java.net.HttpURLConnection;
14 import java.net.URL;
15 import android.content.Intent;
16
17
18 public class CheckVersionInfoTask extends AsyncTask<Void, Void, String> {
19
20     private static Logger gLogger = Logger.getLogger("CheckVersionInfoTask");
21     private Context mContext;
22
23     private static final String VERSION_INFO_URL = "http://downloads.suanzi.ai/RtmpClient/update.json";
24
25     public CheckVersionInfoTask(Context context){
26         this.mContext = context;
27     }
28
29     @Override
30     protected String doInBackground(Void... params){
31         gLogger.debug("doInBackground");
32         return getVersionInfo(VERSION_INFO_URL);
33     }
34
35     @Override
36     protected void onPreExecute(){
37         gLogger.debug("onPreExecute");
38     }
39
40     @Override
41     protected void onPostExecute(String result) {
42         gLogger.debug("onPostExecute, update.json " + result);
43         parseJson(result);
44
45     }
46
47     private String getVersionInfo(String urlStr) {
48         HttpURLConnection urlConnection = null;
49         InputStream is = null;
50         BufferedReader buffer = null;
51         String result = null;
52         try {
53             URL url = new URL(urlStr);
54             urlConnection = (HttpURLConnection) url.openConnection();
55             is = urlConnection.getInputStream();
56             buffer = new BufferedReader(new InputStreamReader(is));
57             StringBuilder strBuilder = new StringBuilder();
58             String line;
59             while ((line = buffer.readLine()) != null) {
60                 strBuilder.append(line);
61             }
62             result = strBuilder.toString();
63         } catch (Exception e){
64             gLogger.error("getVersionInfo - error: " + e.getMessage());
65             e.printStackTrace();
66         } finally {
67             if (buffer != null) {
68                 try {
69                     buffer.close();
70                 } catch (IOException e){
71                     e.printStackTrace();
72                 }
73             }
74             if (urlConnection != null){
75                 urlConnection.disconnect();
76             }
77         }
78         return result;
79     }
80
81     private void parseJson(String result) {
82         try {
83             JSONObject obj = new JSONObject(result);
84             String apkUrl = obj.getString("url");
85             String updateMessage = obj.getString("updateMessage");
86             int apkCode = obj.getInt("versionCode");
87             int versionCode = getCurrentVersionCode();
88             gLogger.error("apkUrl: " + apkUrl);
89             gLogger.error("UpdateMessage: " + updateMessage);
90             gLogger.error("apkCode: " + apkCode);
91             gLogger.error("versionCode: " + versionCode);
92             if(apkCode > versionCode){
93                 gLogger.debug("Found new version, current is " + versionCode + ", will update to " + apkCode);
94                 goToDownloadApk(apkUrl);
95             }
96         } catch (JSONException e){
97             gLogger.error("parseJson - error " + e.getMessage());
98             e.printStackTrace();
99         }
100     }
101
102     private int getCurrentVersionCode(){
103         return BuildConfig.VERSION_CODE;
104     }
105
106     private void goToDownloadApk(String downloadUrl){
107         Intent intent = new Intent(mContext, DownloadApkService.class);
108         intent.putExtra("apkUrl", downloadUrl);
109         mContext.startService(intent);
110     }
111 }