1 package ai.suanzi.rtmpclient;
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;
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;
15 import android.content.Intent;
18 public class CheckVersionInfoTask extends AsyncTask<Void, Void, String> {
20 private static Logger gLogger = Logger.getLogger("CheckVersionInfoTask");
21 private Context mContext;
23 private static final String VERSION_INFO_URL = "http://downloads.suanzi.ai/RtmpClient/update.json";
25 public CheckVersionInfoTask(Context context){
26 this.mContext = context;
30 protected String doInBackground(Void... params){
31 gLogger.debug("doInBackground");
32 return getVersionInfo(VERSION_INFO_URL);
36 protected void onPreExecute(){
37 gLogger.debug("onPreExecute");
41 protected void onPostExecute(String result) {
42 gLogger.debug("onPostExecute, update.json " + result);
47 private String getVersionInfo(String urlStr) {
48 HttpURLConnection urlConnection = null;
49 InputStream is = null;
50 BufferedReader buffer = null;
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();
59 while ((line = buffer.readLine()) != null) {
60 strBuilder.append(line);
62 result = strBuilder.toString();
63 } catch (Exception e){
64 gLogger.error("getVersionInfo - error: " + e.getMessage());
70 } catch (IOException e){
74 if (urlConnection != null){
75 urlConnection.disconnect();
81 private void parseJson(String result) {
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);
96 } catch (JSONException e){
97 gLogger.error("parseJson - error " + e.getMessage());
102 private int getCurrentVersionCode(){
103 return BuildConfig.VERSION_CODE;
106 private void goToDownloadApk(String downloadUrl){
107 Intent intent = new Intent(mContext, DownloadApkService.class);
108 intent.putExtra("apkUrl", downloadUrl);
109 mContext.startService(intent);