From b18146f6992e0fed4672ac2abe38c6139c19d1a7 Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Tue, 6 Dec 2016 16:05:47 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=90=8C=E6=AD=A52.2=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E9=9D=9Eapk2=E3=80=81download=E5=BC=80=E5=A4=B4=E7=9A=84https?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E6=97=A0=E6=B3=95=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20=E8=A7=A3=E5=86=B3=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E5=8F=8D=E9=A6=88=E6=97=A0content=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/HttpsUtils.java | 35 ++++++++++--------- .../java/com/gh/gamecenter/SkipActivity.java | 6 +++- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/HttpsUtils.java b/app/src/main/java/com/gh/common/util/HttpsUtils.java index 1ba3c6677f..3e51ae42bb 100644 --- a/app/src/main/java/com/gh/common/util/HttpsUtils.java +++ b/app/src/main/java/com/gh/common/util/HttpsUtils.java @@ -78,8 +78,8 @@ public class HttpsUtils { } mSSLSocketFactory = sslContext.getSocketFactory(); - HttpsURLConnection.setDefaultSSLSocketFactory(mSSLSocketFactory); - HttpsURLConnection.setDefaultHostnameVerifier(mHostnameVerifier); +// HttpsURLConnection.setDefaultSSLSocketFactory(mSSLSocketFactory); +// HttpsURLConnection.setDefaultHostnameVerifier(mHostnameVerifier); } catch (Exception e) { e.printStackTrace(); } @@ -113,24 +113,25 @@ public class HttpsUtils { } public static HttpsURLConnection getHttpsURLConnection(URL url) throws Exception { - if (mSSLSocketFactory == null || mHostnameVerifier == null) { + HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection(); + if ("apk2.ghzhushou.com".equals(url.getHost()) + || "download.ghzhushou.com".equals(url.getHost())) { + if (mSSLSocketFactory == null || mHostnameVerifier == null) { + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, TRUST_MANAGERS, null); + mSSLSocketFactory = sslContext.getSocketFactory(); + + mHostnameVerifier = HOSTNAME_VERIFIER; + } + httpsURLConnection.setSSLSocketFactory(mSSLSocketFactory); + httpsURLConnection.setHostnameVerifier(mHostnameVerifier); + } else { SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, TRUST_MANAGERS, null); - mSSLSocketFactory = sslContext.getSocketFactory(); - - mHostnameVerifier = HOSTNAME_VERIFIER; - - HttpsURLConnection.setDefaultSSLSocketFactory(mSSLSocketFactory); - HttpsURLConnection.setDefaultHostnameVerifier(mHostnameVerifier); - } else { - if (HttpsURLConnection.getDefaultSSLSocketFactory() != mSSLSocketFactory) { - HttpsURLConnection.setDefaultSSLSocketFactory(mSSLSocketFactory); - } - if (HttpsURLConnection.getDefaultHostnameVerifier() != mHostnameVerifier) { - HttpsURLConnection.setDefaultHostnameVerifier(mHostnameVerifier); - } + httpsURLConnection.setSSLSocketFactory(sslContext.getSocketFactory()); + httpsURLConnection.setHostnameVerifier(HOSTNAME_VERIFIER); } - return (HttpsURLConnection) url.openConnection(); + return httpsURLConnection; } } diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index b9a0fcb438..9bee74d002 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -41,7 +41,11 @@ public class SkipActivity extends BaseActivity { intent.putExtra("id", id); intent.putExtra("name", getIntent().getData().getQueryParameter("name")); } else if ("suggestion".equals(host)) { - intent.putExtra("content", getIntent().getData().getQueryParameter("content")); + Uri uri = getIntent().getData(); + String content = "【" + uri.getQueryParameter("game_name") + + "-" + PlatformUtils.getInstance(this).getPlatformName(uri.getQueryParameter("platform")) + + "-V" + uri.getQueryParameter("version") + "】"; + intent.putExtra("content", content); intent.setClass(this, SuggestionActivity.class); } } else { From 3cbc850d125741acd0273462d843b9cda1129d40 Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Mon, 12 Dec 2016 16:34:19 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 +- .../main/java/com/gh/base/AppUncaHandler.java | 14 +- .../java/com/gh/base/BaseDetailActivity.java | 18 +- .../com/gh/base/GHPushMessageReceiver.java | 3 +- .../main/java/com/gh/base/HomeFragment.java | 28 +- .../gh/common/util/DataCollectionUtils.java | 160 ++++ .../java/com/gh/common/util/DataLogUtils.java | 91 +++ .../java/com/gh/common/util/DataUtils.java | 1 + .../java/com/gh/common/util/FileUtils.java | 15 + .../java/com/gh/common/util/GameUtils.java | 27 +- .../java/com/gh/common/util/PackageUtils.java | 6 +- .../com/gh/common/view/DownloadDialog.java | 16 +- .../java/com/gh/download/DownloadManager.java | 3 + .../com/gh/gamecenter/ConcernActivity.java | 6 +- .../gamecenter/DownloadManagerActivity.java | 3 + .../com/gh/gamecenter/GameDetailActivity.java | 18 +- .../java/com/gh/gamecenter/MainActivity.java | 700 ++++-------------- .../com/gh/gamecenter/NewsDetailActivity.java | 23 +- .../com/gh/gamecenter/NewsSearchActivity.java | 16 +- .../com/gh/gamecenter/SearchActivity.java | 17 +- .../com/gh/gamecenter/SettingActivity.java | 305 +------- .../gh/gamecenter/ShareCardPicActivity.java | 51 +- .../gh/gamecenter/SplashScreenActivity.java | 215 ++---- .../com/gh/gamecenter/SubjectActivity.java | 6 +- .../com/gh/gamecenter/SuggestionActivity.java | 3 + .../com/gh/gamecenter/ViewImageActivity.java | 13 +- .../gh/gamecenter/adapter/ConcernAdapter.java | 51 +- .../adapter/ConcernRecommendAdapter.java | 47 +- .../gamecenter/adapter/GameNewsAdapter.java | 9 +- .../gamecenter/adapter/ImagePagerAdapter.java | 49 +- .../adapter/MessageDetailAdapter.java | 9 +- .../gamecenter/adapter/PlatformAdapter.java | 31 - .../gh/gamecenter/adapter/PluginAdapter.java | 9 +- .../gh/gamecenter/adapter/SubjectAdapter.java | 29 +- .../download/GameDownLoadFragment.java | 18 +- .../download/GameDownloadFragmentAdapter.java | 32 +- .../download/GameUpdateFragment.java | 11 +- .../download/GameUpdateFragmentAdapter.java | 55 +- .../gamecenter/game/Game1FragmentAdapter.java | 23 +- .../gamecenter/game/Game2FragmentAdapter.java | 23 +- .../gamecenter/game/Game3FragmentAdapter.java | 9 +- .../gamedetail/GameDetailAdapter.java | 29 +- .../GameDetailNewsServerAdapter.java | 1 - .../gamedetail/GameGalleryAdapter.java | 8 +- .../gh/gamecenter/manager/FilterManager.java | 46 +- .../gh/gamecenter/manager/UpdateManager.java | 313 ++++++++ .../com/gh/gamecenter/news/News1Fragment.java | 32 +- .../gamecenter/news/News1FragmentAdapter.java | 9 +- .../gamecenter/news/News2FragmentAdapter.java | 23 +- .../gamecenter/news/News3FragmentAdapter.java | 23 +- .../gamecenter/news/News4FragmentAdapter.java | 16 +- .../newsdetail/NewsDetailAdapter.java | 36 +- .../personal/ConcernFragmentAdapter.java | 40 +- .../personal/InstallFragmentAdapter.java | 42 +- .../gamecenter/personal/PersonalFragment.java | 26 +- .../receiver/ActivitySkipReceiver.java | 32 +- .../gamecenter/receiver/InstallReceiver.java | 7 +- .../receiver/NotificationReceiver.java | 22 +- .../gamecenter/retrofit/ObservableUtil.java | 22 + .../SearchGameDetailFragmentAdapter.java | 21 +- .../search/SearchGameListFragmentAdapter.java | 34 +- .../main/res/layout/activity_splash_intro.xml | 2 +- ...iewpage_item.xml => splash_guide_item.xml} | 4 +- app/src/main/res/values/styles.xml | 18 +- 64 files changed, 1169 insertions(+), 1804 deletions(-) create mode 100644 app/src/main/java/com/gh/common/util/DataCollectionUtils.java create mode 100644 app/src/main/java/com/gh/common/util/DataLogUtils.java create mode 100644 app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java rename app/src/main/res/layout/{splash_viewpage_item.xml => splash_guide_item.xml} (84%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1d0bcac51f..0c49294a76 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -54,7 +54,7 @@ android:name="com.gh.base.AppController" android:icon="@drawable/logo" android:label="@string/app_name" - android:theme="@style/AppThemeNormal" > + android:theme="@style/AppNormalTheme" > diff --git a/app/src/main/java/com/gh/base/AppUncaHandler.java b/app/src/main/java/com/gh/base/AppUncaHandler.java index 0fddcd21e0..59cbcf35cc 100644 --- a/app/src/main/java/com/gh/base/AppUncaHandler.java +++ b/app/src/main/java/com/gh/base/AppUncaHandler.java @@ -10,10 +10,9 @@ import android.util.Log; import android.widget.Toast; import com.gh.common.constant.Config; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.FileUtils; -import com.gh.common.util.NetworkUtils; import com.gh.gamecenter.SplashScreenActivity; -import com.gh.gamecenter.manager.DataCollectionManager; import com.tencent.stat.StatService; import java.io.File; @@ -22,9 +21,7 @@ import java.io.IOException; import java.lang.Thread.UncaughtExceptionHandler; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.HashMap; import java.util.Locale; -import java.util.Map; public class AppUncaHandler implements UncaughtExceptionHandler { @@ -88,13 +85,8 @@ public class AppUncaHandler implements UncaughtExceptionHandler { // MTA主动上传错误 StatService.reportError(appController.getApplicationContext(), errorMsg); - // WIFI实时上传错误数据 - Map map = new HashMap<>(); - map.put("content", errorMsg); - map.put("type", android.os.Build.MODEL); - map.put("system", android.os.Build.VERSION.SDK_INT + "=" + android.os.Build.VERSION.RELEASE); - DataCollectionManager.onEvent(appController.getApplicationContext(), "error", map, - NetworkUtils.isWifiConnected(appController.getApplicationContext())); + // 上传错误数据 + DataCollectionUtils.uploadError(appController.getApplicationContext(), errorMsg); // 保存到本地 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.getDefault()); diff --git a/app/src/main/java/com/gh/base/BaseDetailActivity.java b/app/src/main/java/com/gh/base/BaseDetailActivity.java index e67eb06624..b721177c32 100644 --- a/app/src/main/java/com/gh/base/BaseDetailActivity.java +++ b/app/src/main/java/com/gh/base/BaseDetailActivity.java @@ -19,7 +19,6 @@ import com.gh.common.util.DisplayUtils; import com.gh.common.util.FileUtils; import com.gh.common.util.NetworkUtils; import com.gh.common.util.PackageUtils; -import com.gh.common.util.PlatformUtils; import com.gh.common.util.ShareUtils; import com.gh.common.view.DownloadDialog; import com.gh.download.DataWatcher; @@ -32,7 +31,6 @@ import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.PackageManager; import com.tencent.tauth.Tencent; @@ -87,6 +85,9 @@ public abstract class BaseDetailActivity extends BaseActivity implements View.On super.onCreate(savedInstanceState); entrance = getIntent().getStringExtra("entrance"); + if (getIntent().getBundleExtra("data") != null) { + entrance = getIntent().getBundleExtra("data").getString("entrance"); + } View contentView = View.inflate(this, R.layout.activity_detail, null); @@ -426,19 +427,6 @@ public abstract class BaseDetailActivity extends BaseActivity implements View.On kv3.put(entrance, "下载开始"); DataUtils.onEvent(BaseDetailActivity.this, "应用数据", gameEntity.getName(), kv3); - Map map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("method", method.equals("下载") ? "正常" : method); - map.put("platform", PlatformUtils.getInstance(getApplicationContext()) - .getPlatformName(gameEntity.getApk().get(0).getPlatform())); - map.put("status", "开始"); - map.put("location", name + ":" + title); - map.put("entrance", entrance); - map.put("btn_status", method); - map.put("network", NetworkUtils.getConnectedType(this)); - DataCollectionManager.onEvent(this, "download", map); - DownloadManager.createDownload(this, apkEntity, gameEntity, method, entrance, name + ":" + title); detail_tv_download.setVisibility(View.GONE); diff --git a/app/src/main/java/com/gh/base/GHPushMessageReceiver.java b/app/src/main/java/com/gh/base/GHPushMessageReceiver.java index aa42fe9182..55fd4f2ecc 100644 --- a/app/src/main/java/com/gh/base/GHPushMessageReceiver.java +++ b/app/src/main/java/com/gh/base/GHPushMessageReceiver.java @@ -228,8 +228,7 @@ public class GHPushMessageReceiver extends PushMessageReceiver { ArrayList list = new ArrayList<>(); List packageInfos = context.getPackageManager() .getInstalledPackages(0); - for (int i = 0, size = packageInfos.size(); i < size; i++) { - PackageInfo packageInfo = packageInfos.get(i); + for (PackageInfo packageInfo : packageInfos) { if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { list.add(packageInfo.packageName); } diff --git a/app/src/main/java/com/gh/base/HomeFragment.java b/app/src/main/java/com/gh/base/HomeFragment.java index 8b8a70eaaf..c4bfb47b12 100644 --- a/app/src/main/java/com/gh/base/HomeFragment.java +++ b/app/src/main/java/com/gh/base/HomeFragment.java @@ -18,6 +18,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.gh.common.constant.Config; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.download.DownloadManager; @@ -27,12 +28,9 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.SearchActivity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.PackageManager; -import java.util.HashMap; import java.util.List; -import java.util.Map; import de.greenrobot.event.EventBus; @@ -143,29 +141,17 @@ public class HomeFragment extends Fragment implements View.OnClickListener { final int id = v.getId(); if (id == R.id.actionbar_notification) { DataUtils.onEvent(getActivity(), "主页", "关注图标"); - - Map map = new HashMap<>(); - map.put("location", "关注图标"); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); + DataCollectionUtils.uploadClick(getActivity(), "关注图标", "主页"); startActivity(new Intent(getActivity(), ConcernActivity.class)); } else if (id == R.id.actionbar_rl_download) { DataUtils.onEvent(getActivity(), "主页", "下载图标"); - - Map map = new HashMap<>(); - map.put("location", "下载图标"); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); + DataCollectionUtils.uploadClick(getActivity(), "下载图标", "主页"); startActivity(new Intent(getActivity(), DownloadManagerActivity.class)); } else if (id == R.id.actionbar_search_input) { DataUtils.onEvent(getActivity(), "主页", "搜索框"); - - Map map = new HashMap<>(); - map.put("location", "搜索框"); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); + DataCollectionUtils.uploadClick(getActivity(), "搜索框", "主页"); Intent goSearch = new Intent(getActivity(), SearchActivity.class); goSearch.putExtra("clicked", false); @@ -173,11 +159,7 @@ public class HomeFragment extends Fragment implements View.OnClickListener { startActivity(goSearch); } else if (id == R.id.actionbar_iv_search) { DataUtils.onEvent(getActivity(), "主页", "搜索图标"); - - Map map = new HashMap<>(); - map.put("location", "搜索图标"); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); + DataCollectionUtils.uploadClick(getActivity(), "搜索图标", "主页"); Intent searchIntent = new Intent(getActivity(), SearchActivity.class); searchIntent.putExtra("clicked", true); diff --git a/app/src/main/java/com/gh/common/util/DataCollectionUtils.java b/app/src/main/java/com/gh/common/util/DataCollectionUtils.java new file mode 100644 index 0000000000..f47fb0602c --- /dev/null +++ b/app/src/main/java/com/gh/common/util/DataCollectionUtils.java @@ -0,0 +1,160 @@ +package com.gh.common.util; + +import android.content.Context; +import android.os.Build; + +import com.gh.download.DownloadEntity; +import com.gh.gamecenter.db.info.ConcernInfo; +import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.NewsDetailEntity; +import com.gh.gamecenter.manager.ConcernManager; +import com.gh.gamecenter.manager.DataCollectionManager; +import com.gh.gamecenter.manager.PackageManager; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by LGT on 2016/12/9. + * 数据收集 工具类(data.ghzhushou.com) + */ +public class DataCollectionUtils { + + // 上传助手奔溃数据 + public static void uploadError(Context context, String msg) { + Map map = new HashMap<>(); + map.put("content", msg); + map.put("type", android.os.Build.MODEL); + map.put("system", android.os.Build.VERSION.SDK_INT + "=" + android.os.Build.VERSION.RELEASE); + // WIFI实时 + DataCollectionManager.onEvent(context, "error", map, NetworkUtils.isWifiConnected(context)); + } + + // 上传下载数据(开始、完成) + public static void uploadDownload(Context context, DownloadEntity downloadEntity, String status) { + Map map = new HashMap<>(); + map.put("game", downloadEntity.getName()); + map.put("game_id", downloadEntity.getGameId()); + if (downloadEntity.isPluggable()) { + map.put("method", "插件化"); + map.put("btn_status", "插件化"); + } else if (downloadEntity.isUpdate()) { + map.put("method", "更新"); + map.put("btn_status", "更新"); + } else { + map.put("method", "正常"); + map.put("btn_status", "下载"); + } + map.put("platform", PlatformUtils.getInstance(context).getPlatformName(downloadEntity.getPlatform())); + map.put("status", status); + map.put("location", downloadEntity.getLocation()); + map.put("entrance", downloadEntity.getEntrance()); + map.put("installed", downloadEntity.getInstalled()); + map.put("network", NetworkUtils.getConnectedType(context)); + DataCollectionManager.onEvent(context, "download", map); + } + + // 上传点击数据 + public static void uploadClick(Context context, String... args) { + if (args.length < 2) { + return; + } + Map map = new HashMap<>(); + map.put("location", args[0]); + map.put("page", args[1]); + if (args.length == 3) { + map.put("title", args[2]); + } + DataCollectionManager.onEvent(context, "click-item", map); + } + + // 上传游戏数据 + public static void uploadGame(Context context, GameEntity gameEntity, int seconds, String from) { + Map map = new HashMap<>(); + map.put("game", gameEntity.getName()); + map.put("game_id", gameEntity.getId()); + map.put("time", seconds); + map.put("from", from); + DataCollectionManager.onEvent(context, "game", map); + } + + // 上传新闻数据 + public static void uploadNews(Context context, NewsDetailEntity newsDetailEntity, + GameEntity gameEntity, int seconds, String from) { + Map map = new HashMap<>(); + map.put("title", newsDetailEntity.getTitle()); + map.put("type", newsDetailEntity.getType()); + map.put("author", newsDetailEntity.getAuthor()); + if (gameEntity != null) { + map.put("game", gameEntity.getName()); + map.put("game_id", gameEntity.getId()); + } + map.put("time", seconds); + map.put("from", from); + DataCollectionManager.onEvent(context, "news", map); + } + + // 上传安装或卸载数据 + public static void uploadInorunstall(Context context, String type, String packageName) { + Map map = new HashMap<>(); + map.put("type", type); + map.put("packageName", packageName); + DataCollectionManager.onEvent(context, "inorunstall", map); + } + + // 上传劫持数据 + public static void uploadHijack(Context context, DownloadEntity downloadEntity) { + Map map = new HashMap<>(); + map.put("url", downloadEntity.getUrl()); + map.put("game", downloadEntity.getName()); + map.put("game_id", downloadEntity.getGameId()); + map.put("platform", downloadEntity.getPlatform()); + map.put("hijack_url", downloadEntity.getError()); + DataCollectionManager.onEvent(context, "hijack", map); + } + + // 上传用户数据 + public static void uploadUser(Context context) { + ConcernManager concernManager = new ConcernManager(context); + ArrayList concernList = new ArrayList<>(); + for (ConcernInfo entity : concernManager.getAllConcern()) { + if (entity.isConcern()) { + concernList.add(entity.getGameName()); + } + } + Map map = new HashMap<>(); + map.put("type", Build.MODEL); + map.put("system", Build.VERSION.SDK_INT + "=" + Build.VERSION.RELEASE); + map.put("install", PackageManager.getInstalledList()); + map.put("concern", concernList); + DataCollectionManager.upsert(context, "user", map); + } + + // 上传搜索数据 + public static void uploadSearch(Context context, String... args) { + if (args.length < 2) { + return; + } + Map map = new HashMap<>(); + map.put("key", args[0]); + map.put("from", args[1]); + if (args.length == 3) { + map.put("click", args[2]); + } + DataCollectionManager.onEvent(context, "search", map); + } + + // 上传关注数据 + public static void uploadConcern(Context context, String... args) { + if (args.length < 3) { + return; + } + Map map = new HashMap<>(); + map.put("game", args[0]); + map.put("game_id", args[1]); + map.put("type", args[2]); + DataCollectionManager.onEvent(context, "concern", map); + } + +} diff --git a/app/src/main/java/com/gh/common/util/DataLogUtils.java b/app/src/main/java/com/gh/common/util/DataLogUtils.java new file mode 100644 index 0000000000..7340337077 --- /dev/null +++ b/app/src/main/java/com/gh/common/util/DataLogUtils.java @@ -0,0 +1,91 @@ +package com.gh.common.util; + +import android.content.Context; + +import com.gh.download.DownloadEntity; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; + +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.Map; + +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okhttp3.ResponseBody; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +/** + * Created by LGT on 2016/12/8. + * 日志上传工具类 + */ +public class DataLogUtils { + + /** + * 上传日志 + */ + public static void uploadLog(Context context, String topic, Map map) { + String version = PackageUtils.getVersion(context); + String user = DeviceUtils.getDeviceID(context); + String channel = (String) PackageUtils.getMetaData(context, context.getPackageName(), "TD_CHANNEL_ID"); + map.put("version", version); + map.put("user", user); + map.put("device_id", TokenUtils.getDeviceId(context)); + map.put("channel", channel); + + Map params = new HashMap<>(); + params.put("topic", topic); + params.put("source", "GH-ASSIST-Client"); + params.put("time", String.valueOf(Utils.getTime(context))); + params.put("content", new JSONObject(map).toString()); + + RequestBody body = RequestBody.create(MediaType.parse("application/json"), + new JSONObject(params).toString()); + RetrofitManager.getData().postLog(body) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response()); + } + + // 轮播图 + public static void uploadLunbotuLog(Context context, String type, String title, String location) { + Map map = new HashMap<>(); + map.put("location", location); + map.put("type", type); + map.put("title", title); + map.put("form", "click"); + uploadLog(context, "lunbotu", map); + } + + // 网络错误 + public static void uploadNeterrorLog(Context context, DownloadEntity downloadEntity) { + Map map = new HashMap<>(); + map.put("url", downloadEntity.getUrl()); + map.put("game", downloadEntity.getName()); + map.put("game_id", downloadEntity.getGameId()); + map.put("platform", downloadEntity.getPlatform()); + map.put("error", downloadEntity.getError()); + uploadLog(context, "neterror", map); + } + + // 助手更新 + public static void uploadUpgradeLog(Context context, String step) { + Map map = new HashMap<>(); + map.put("step", step); + uploadLog(context, "upgrade", map); + } + + // 链接劫持 + public static void uploadHijack(Context context, DownloadEntity downloadEntity) { + Map map = new HashMap<>(); + map.put("url", downloadEntity.getUrl()); + map.put("game", downloadEntity.getName()); + map.put("game_id", downloadEntity.getGameId()); + map.put("platform", downloadEntity.getPlatform()); + map.put("hijack_url", downloadEntity.getError()); + uploadLog(context, "hijack", map); + } + +} diff --git a/app/src/main/java/com/gh/common/util/DataUtils.java b/app/src/main/java/com/gh/common/util/DataUtils.java index ebf4f776b4..08e39bea8d 100644 --- a/app/src/main/java/com/gh/common/util/DataUtils.java +++ b/app/src/main/java/com/gh/common/util/DataUtils.java @@ -15,6 +15,7 @@ import java.util.Properties; /** * Created by LGT on 2016/6/15. + * 数据收集 工具类 (TalkingData、MTA) */ public class DataUtils { diff --git a/app/src/main/java/com/gh/common/util/FileUtils.java b/app/src/main/java/com/gh/common/util/FileUtils.java index 7ac9ba50cf..2efd2c3928 100644 --- a/app/src/main/java/com/gh/common/util/FileUtils.java +++ b/app/src/main/java/com/gh/common/util/FileUtils.java @@ -102,6 +102,21 @@ public class FileUtils { } } + public static void deleteFolder(File folder) { + if (folder != null) { + if (folder.isDirectory()) { + for (File file : folder.listFiles()) { + if (file.isDirectory()) { + deleteFolder(file); + } else { + file.delete(); + } + } + } + folder.delete(); + } + } + public static boolean isEmptyFile(String path) { File file = new File(path); if (file.exists() && file.length() != 0) { diff --git a/app/src/main/java/com/gh/common/util/GameUtils.java b/app/src/main/java/com/gh/common/util/GameUtils.java index 12b1c22078..f1db8316fb 100644 --- a/app/src/main/java/com/gh/common/util/GameUtils.java +++ b/app/src/main/java/com/gh/common/util/GameUtils.java @@ -5,11 +5,11 @@ import android.content.Intent; import com.gh.base.AppController; import com.gh.gamecenter.GameDetailActivity; +import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.GameUpdateEntity; + -/** - * Created by LGT on 2016/9/29. - */ public class GameUtils { /** @@ -34,4 +34,25 @@ public class GameUtils { context.startActivity(intent); } + /** + * 获取GameUpdateEntity + */ + public static GameUpdateEntity getGameUpdateEntity(GameEntity gameEntity, ApkEntity apkEntity) { + GameUpdateEntity gameUpdateEntity = new GameUpdateEntity(); + gameUpdateEntity.setId(gameEntity.getId()); + gameUpdateEntity.setIcon(gameEntity.getIcon()); + gameUpdateEntity.setName(gameEntity.getName()); + gameUpdateEntity.setPackageName(apkEntity.getPackageName()); + gameUpdateEntity.setSize(apkEntity.getSize()); + gameUpdateEntity.setVersion(apkEntity.getVersion()); + gameUpdateEntity.setGhVersion(apkEntity.getGhVersion()); + gameUpdateEntity.setUrl(apkEntity.getUrl()); + gameUpdateEntity.setPlatform(apkEntity.getPlatform()); + gameUpdateEntity.setEtag(apkEntity.getEtag()); + gameUpdateEntity.setPluggable(true); + gameUpdateEntity.setTag(gameEntity.getTag()); + gameUpdateEntity.setBrief(gameEntity.getBrief()); + return gameUpdateEntity; + } + } diff --git a/app/src/main/java/com/gh/common/util/PackageUtils.java b/app/src/main/java/com/gh/common/util/PackageUtils.java index 443dff2c61..3e7d36a9cd 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -201,8 +201,7 @@ public class PackageUtils { FilterManager filterManager = new FilterManager(context); ArrayList list = new ArrayList<>(); List packageInfos = context.getPackageManager().getInstalledPackages(0); - for (int i = 0, size = packageInfos.size(); i < size; i++) { - PackageInfo packageInfo = packageInfos.get(i); + for (PackageInfo packageInfo : packageInfos) { if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { if (!context.getPackageName().equals(packageInfo.packageName)) { if (!filterManager.isFilter(packageInfo.packageName)) { @@ -271,8 +270,7 @@ public class PackageUtils { Uri uri = Uri.fromFile(new File(path)); Intent installIntent = new Intent(Intent.ACTION_VIEW); installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - installIntent.setDataAndType(uri, - "application/vnd.android.package-archive"); + installIntent.setDataAndType(uri, "application/vnd.android.package-archive"); return installIntent; } diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index 25e51ea562..a081cd8492 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -198,26 +198,26 @@ public class DownloadDialog implements OnCollectionCallBackListener { ConcurrentHashMap hashMap = new ConcurrentHashMap<>(); boolean isCollection; - for (int i = 0, size = gameApk.size(); i < size; i++) { + for (ApkEntity apkEntity : gameApk) { isCollection = false; for (GameCollectionEntity gameCollectionEntity : gameEntity.getCollection()) { for (String packageName : gameCollectionEntity.getPackage()) { - if (packageName.equals(gameApk.get(i).getPackageName())){ + if (packageName.equals(apkEntity.getPackageName())){ isCollection = true; if (hashMap.get(gameCollectionEntity.getName()) != null) { gameCollectionApk.get(hashMap.get(gameCollectionEntity.getName())) - .getApkCollection().getSaveApkEntity().add(gameApk.get(i)); + .getApkCollection().getSaveApkEntity().add(apkEntity); } else { - ApkEntity apkEntity = new ApkEntity(); + ApkEntity newApkEntity = new ApkEntity(); GameCollectionEntity collectionEntity = new GameCollectionEntity(); List saveApkList = new ArrayList<>(); - saveApkList.add(gameApk.get(i)); + saveApkList.add(apkEntity); collectionEntity.setSaveApkEntity(saveApkList); collectionEntity.setName(gameCollectionEntity.getName()); collectionEntity.setIcon(gameCollectionEntity.getIcon()); collectionEntity.setColor(gameCollectionEntity.getColor()); - apkEntity.setApkCollection(collectionEntity); - gameCollectionApk.add(apkEntity); + newApkEntity.setApkCollection(collectionEntity); + gameCollectionApk.add(newApkEntity); hashMap.put(gameCollectionEntity.getName(), gameCollectionApk.size() - 1); } @@ -225,7 +225,7 @@ public class DownloadDialog implements OnCollectionCallBackListener { } } if (!isCollection) { - gameCollectionApk.add(gameApk.get(i)); + gameCollectionApk.add(apkEntity); } } diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 23ca427881..27aa895c1d 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -8,6 +8,7 @@ import android.support.v4.util.ArrayMap; import android.widget.Toast; import com.gh.common.constant.Constants; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.FileUtils; import com.gh.common.util.MD5Utils; import com.gh.common.util.Utils; @@ -241,6 +242,8 @@ public class DownloadManager { } downloadEntity.setPlugin(gameEntity.getTag() != null && gameEntity.getTag().size() != 0); DownloadManager.getInstance(context.getApplicationContext()).add(downloadEntity); + // 收集下载数据 + DataCollectionUtils.uploadDownload(context, downloadEntity, "开始"); } /** diff --git a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java index f7b9ffd4af..181e556229 100644 --- a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java @@ -144,9 +144,9 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { } } else { concernRecommendAdapter.getRecommendGameList().clear(); - for (int i = 0, size = concernRecommendAdapter.getGameList().size(); i < size; i++) { - if (!concernManager.isConcern(concernRecommendAdapter.getGameList().get(i).getId())) { - concernRecommendAdapter.getRecommendGameList().add(concernRecommendAdapter.getGameList().get(i)); + for (GameEntity gameEntity : concernRecommendAdapter.getGameList()) { + if (!concernManager.isConcern(gameEntity.getId())) { + concernRecommendAdapter.getRecommendGameList().add(gameEntity); } } concernRecommendAdapter.notifyDataSetChanged(); diff --git a/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java b/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java index d465a580c3..4f5d2b3bdb 100644 --- a/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java +++ b/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java @@ -88,6 +88,9 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements currentItem = savedInstanceState.getInt("CurrentItem"); } else { currentItem = getIntent().getIntExtra("currentItem", -1); + if (getIntent().getBundleExtra("data") != null) { + currentItem = getIntent().getBundleExtra("data").getInt("currentItem", -1); + } } if (currentItem == -1) { if (updateSize != 0 && downloadSize == 0) { diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index 13af42504e..19bda7f051 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -9,13 +9,13 @@ import android.widget.RelativeLayout; import com.gh.base.AppController; import com.gh.base.BaseDetailActivity; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.gamecenter.changeskin.ChangeSkinUtils; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.eventbus.EBConcernChanged; import com.gh.gamecenter.gamedetail.GameDetailAdapter; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -57,6 +57,9 @@ public class GameDetailActivity extends BaseDetailActivity implements View.OnCli isSentReport = false; gameId = getIntent().getStringExtra("gameId"); + if (getIntent().getBundleExtra("data") != null) { + gameId = getIntent().getBundleExtra("data").getString("gameId"); + } if (gameId == null) { gameEntity = (GameEntity) AppController.get("GameEntity", true); if (gameEntity != null) { @@ -129,11 +132,7 @@ public class GameDetailActivity extends BaseDetailActivity implements View.OnCli kv.put("点击", "分享"); DataUtils.onEvent(this, "插件数据", gameEntity.getName(), kv); - Map map = new HashMap<>(); - map.put("location", "分享"); - map.put("news", gameEntity.getName()); - map.put("page", "游戏详情"); - DataCollectionManager.onEvent(this, "click-item", map); + DataCollectionUtils.uploadClick(this, "分享", "游戏详情", gameEntity.getName()); String url = "http://www.ghzhushou.com/game/" + adapter.getGameDetailEntity().getShareCode(); showShare(url, gameEntity.getName(), gameEntity.getIcon(), null, gameEntity.getTag(), entrance, "游戏"); @@ -209,12 +208,7 @@ public class GameDetailActivity extends BaseDetailActivity implements View.OnCli DataUtils.onEvent(this, "插件数据", gameEntity.getName(), kv); if (seconds > 0) { - Map map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("time", seconds); - map.put("from", entrance); - DataCollectionManager.onEvent(this, "game", map); + DataCollectionUtils.uploadGame(this, gameEntity, seconds, entrance); } } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index e62a59046e..df23c15840 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -1,6 +1,5 @@ package com.gh.gamecenter; -import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -21,28 +20,23 @@ import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; -import android.view.Window; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ProgressBar; import android.widget.TextView; import com.gh.base.BaseFragmentActivity; import com.gh.common.constant.Config; +import com.gh.common.util.DataCollectionUtils; +import com.gh.common.util.DataLogUtils; import com.gh.common.util.DataUtils; -import com.gh.common.util.DeviceUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.FileUtils; -import com.gh.common.util.MD5Utils; -import com.gh.common.util.NetworkUtils; +import com.gh.common.util.GameUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.RandomUtils; -import com.gh.common.util.SpeedUtils; import com.gh.common.util.TokenUtils; import com.gh.common.util.TrafficUtils; -import com.gh.common.util.Utils; import com.gh.download.DataWatcher; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; @@ -50,7 +44,6 @@ import com.gh.download.DownloadStatus; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.entity.ApkEntity; -import com.gh.gamecenter.entity.AppEntity; import com.gh.gamecenter.entity.GameDigestEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; @@ -65,25 +58,24 @@ import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.FilterManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.UpdateManager; import com.gh.gamecenter.news.NewsFragment; import com.gh.gamecenter.personal.PersonalFragment; import com.gh.gamecenter.retrofit.JSONObjectResponse; +import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import org.json.JSONException; import org.json.JSONObject; -import java.io.File; import java.io.IOException; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; +import java.util.concurrent.CountDownLatch; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -93,31 +85,24 @@ import okhttp3.RequestBody; import okhttp3.ResponseBody; import rx.Observable; import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Action1; import rx.schedulers.Schedulers; /** - * - * @author 温冠超 - * @email 294299195@qq.com - * @update 2015-8-11 - * @des 项目的主Activity,3个Fragment都嵌入在这里。 + * 项目的主Activity,3个Fragment都嵌入在这里。 */ public class MainActivity extends BaseFragmentActivity implements OnClickListener { private GameFragment gameFragment; private NewsFragment newsFragment; private PersonalFragment personalFragment; - private LinearLayout home1Layout; - private LinearLayout home2Layout; - private LinearLayout home3Layout; - private ImageView home1Image; - private ImageView home2Image; - private ImageView home3Image; - private TextView home1Title; - private TextView home2Title; - private TextView home3Title; + private ImageView ivGame; + private ImageView ivNews; + private ImageView ivPersonal; + private TextView tvGame; + private TextView tvNews; + private TextView tvPersonal; - private AppEntity appEntity; private SharedPreferences sp; private ConcernManager concernManager; @@ -125,7 +110,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene private int currentTab; - private boolean isShowDownload = false; private boolean isNewFirstLaunch; private boolean isSkipped; @@ -149,19 +133,13 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } else if (DownloadStatus.neterror.equals(downloadEntity.getStatus()) || DownloadStatus.timeout.equals(downloadEntity.getStatus())) { toast("网络不稳定,下载任务已暂停"); - uploadNeterrorLog(downloadEntity); - } - if (downloadEntity.getName().contains("光环助手") && isShowDownload) { - processGhAssistDownload(downloadEntity); + DataLogUtils.uploadNeterrorLog(MainActivity.this, downloadEntity); } if (DownloadStatus.done.equals(downloadEntity.getStatus())) { if (downloadEntity.getName().contains("光环助手")) { DataUtils.onEvent(MainActivity.this, "软件更新", "下载完成"); startActivity(PackageUtils.getInstallIntent(downloadEntity.getPath())); - uploadUpgradeLog("install");//上传更新安装数据 - if (appEntity != null && appEntity.isForce()) { - finish(); - } + DataLogUtils.uploadUpgradeLog(MainActivity.this, "install"); //上传更新安装数据 } else { statDoneEvent(downloadEntity); @@ -241,27 +219,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene DataUtils.onEvent(MainActivity.this, "插件化", downloadEntity.getName(), kv3); } - Map map = new HashMap<>(); - map.put("game", downloadEntity.getName()); - map.put("game_id", downloadEntity.getGameId()); - if (downloadEntity.isPluggable()) { - map.put("method", "插件化"); - map.put("btn_status", "插件化"); - } else if (downloadEntity.isUpdate()) { - map.put("method", "更新"); - map.put("btn_status", "更新"); - } else { - map.put("method", "正常"); - map.put("btn_status", "下载"); - } - map.put("platform", PlatformUtils.getInstance(getApplicationContext()) - .getPlatformName(downloadEntity.getPlatform())); - map.put("status", "完成"); - map.put("entrance", downloadEntity.getEntrance()); - map.put("location", downloadEntity.getLocation()); - map.put("installed", downloadEntity.getInstalled()); - map.put("network", NetworkUtils.getConnectedType(MainActivity.this)); - DataCollectionManager.onEvent(MainActivity.this, "download", map); + DataCollectionUtils.uploadDownload(this, downloadEntity, "完成"); if (downloadEntity.getEntrance().matches("^" + "\\(游戏\\-插件:滚动图\\[.+\\]\\)" + "$")) { // 首页轮播图数据统计 @@ -277,31 +235,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene entrance = entrance.substring(start + 1, end); String[] values = entrance.split("="); if (values.length == 3) { - Map map = new HashMap<>(); - map.put("location", values[2]); - map.put("type", values[1]); - map.put("title", values[0]); - map.put("form", "download"); - - String version = PackageUtils.getVersion(this); - String user = DeviceUtils.getDeviceID(this); - String channel = (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID"); - map.put("version", version); - map.put("user", user); - map.put("device_id", TokenUtils.getDeviceId(this)); - map.put("channel", channel); - Map params = new HashMap<>(); - params.put("topic", "lunbotu"); - params.put("source", "GH-ASSIST-Client"); - params.put("time", String.valueOf(Utils.getTime(this))); - params.put("content", new JSONObject(map).toString()); - - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - new JSONObject(params).toString()); - RetrofitManager.getData().postLog(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response()); + DataLogUtils.uploadLunbotuLog(this, values[1], values[0], values[2]); } } } @@ -313,68 +247,9 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene // 弹出提示框 EventBus.getDefault().post(new EBShowDialog("hijack")); // 记录链接被劫持 - Map map = new HashMap<>(); - map.put("url", downloadEntity.getUrl()); - map.put("game", downloadEntity.getName()); - map.put("game_id", downloadEntity.getGameId()); - map.put("platform", downloadEntity.getPlatform()); - map.put("hijack_url", downloadEntity.getError()); - DataCollectionManager.onEvent(MainActivity.this, "hijack", map); + DataCollectionUtils.uploadHijack(this, downloadEntity); // 上传劫持log - uploadHijackLog(new HashMap<>(map)); - } - - private void uploadHijackLog(Map map) { - String version = PackageUtils.getVersion(this); - String user = DeviceUtils.getDeviceID(this); - String channel = (String) PackageUtils.getMetaData(this, - getPackageName(), "TD_CHANNEL_ID"); - map.put("version", version); - map.put("user", user); - map.put("device_id", TokenUtils.getDeviceId(this)); - map.put("channel", channel); - Map params = new HashMap<>(); - params.put("topic", "hijack"); - params.put("source", "GH-ASSIST-Client"); - params.put("time", String.valueOf(Utils.getTime(this))); - params.put("content", new JSONObject(map).toString()); - - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - new JSONObject(params).toString()); - RetrofitManager.getData().postLog(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response()); - } - - // 上传网络错误log - private void uploadNeterrorLog(DownloadEntity downloadEntity) { - String version = PackageUtils.getVersion(this); - String user = DeviceUtils.getDeviceID(this); - String channel = (String) PackageUtils.getMetaData(this, - getPackageName(), "TD_CHANNEL_ID"); - Map map = new HashMap<>(); - map.put("url", downloadEntity.getUrl()); - map.put("game", downloadEntity.getName()); - map.put("game_id", downloadEntity.getGameId()); - map.put("platform", downloadEntity.getPlatform()); - map.put("version", version); - map.put("user", user); - map.put("device_id", TokenUtils.getDeviceId(this)); - map.put("channel", channel); - map.put("error", downloadEntity.getError()); - Map params = new HashMap<>(); - params.put("topic", "neterror"); - params.put("source", "GH-ASSIST-Client"); - params.put("time", String.valueOf(Utils.getTime(this))); - params.put("content", new JSONObject(map).toString()); - - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - new JSONObject(params).toString()); - RetrofitManager.getData().postLog(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response()); + DataLogUtils.uploadHijack(this, downloadEntity); } /* @@ -484,7 +359,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (!isNewFirstLaunch && sp.getBoolean("autoupdate", true)) { // 检查助手更新 - checkUpdate(); + UpdateManager.getInstance(this).checkUpdate(true); } if (isNewFirstLaunch) { getPluginUpdate(); @@ -515,7 +390,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } // 执行跳转事件 - handler.postDelayed(runnable, 500); + handler.postDelayed(skipRun, 500); Log.e("TD_CHANNEL_ID", (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID")); } @@ -533,24 +408,20 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene }); } - private int initConcernCount; - - private void addInitConcernCount() { - synchronized (MainActivity.class) { - initConcernCount++; - } - } - private void getConcernDigest(final List arrGameId) { final ArrayList concernDigest = new ArrayList<>(); - final int size = arrGameId.size(); - - if (size == 0) { + if (arrGameId.size() == 0) { EventBus.getDefault().post(new EBUISwitch("NewsFragment", -2)); // 没有关注 } - initConcernCount = 0; + final CountDownLatch latch = ObservableUtil.latch(arrGameId.size(), new Action1() { + @Override + public void call(Object o) { + concernManager.addByList(concernDigest); + } + }); + for (String gameId : arrGameId) { RetrofitManager.getApi().getGameDigest(gameId) .subscribeOn(Schedulers.io()) @@ -559,39 +430,28 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene @Override public void onResponse(GameEntity response) { concernDigest.add(response); - addInitConcernCount(); - if (size == initConcernCount && concernDigest.size() != 0) { - concernManager.addByList(concernDigest); - Utils.log("初始化关注成功=="); - } + + latch.countDown(); } @Override public void onFailure(Throwable e) { - addInitConcernCount(); - if (size == initConcernCount && concernDigest.size() != 0) { - concernManager.addByList(concernDigest); - Utils.log("初始化关注--有一个以上的游戏无法添加"); - } + latch.countDown(); } }); } - } private void initViews() { - home1Layout = (LinearLayout) findViewById(R.id.main_ll_game); - home2Layout = (LinearLayout) findViewById(R.id.main_ll_news); - home3Layout = (LinearLayout) findViewById(R.id.main_ll_personal); - home1Image = (ImageView) findViewById(R.id.main_iv_game); - home2Image = (ImageView) findViewById(R.id.main_iv_news); - home3Image = (ImageView) findViewById(R.id.main_iv_personal); - home1Title = (TextView) findViewById(R.id.main_tv_game); - home2Title = (TextView) findViewById(R.id.main_tv_news); - home3Title = (TextView) findViewById(R.id.main_tv_personal); - home1Layout.setOnClickListener(this); - home2Layout.setOnClickListener(this); - home3Layout.setOnClickListener(this); + findViewById(R.id.main_ll_game).setOnClickListener(this); + findViewById(R.id.main_ll_news).setOnClickListener(this); + findViewById(R.id.main_ll_personal).setOnClickListener(this); + ivGame = (ImageView) findViewById(R.id.main_iv_game); + ivNews = (ImageView) findViewById(R.id.main_iv_news); + ivPersonal = (ImageView) findViewById(R.id.main_iv_personal); + tvGame = (TextView) findViewById(R.id.main_tv_game); + tvNews = (TextView) findViewById(R.id.main_tv_news); + tvPersonal = (TextView) findViewById(R.id.main_tv_personal); } private void checkPermission() { @@ -617,14 +477,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } } - private int iCount; - - private void addInstalledCount() { - synchronized (MainActivity.class) { - iCount++; - } - } - // 获取已安装游戏 private void getInstalledListFromServer() { ArrayList list = PackageUtils.getAllPackageName(getApplicationContext()); @@ -642,9 +494,14 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene PackageManager.init(list); - final int size = list.size(); - iCount = 0; - for (int i = 0; i < size; i++) { + final CountDownLatch latch = ObservableUtil.latch(list.size(), new Action1() { + @Override + public void call(Object o) { + updateConcern(); + } + }); + + for (int i = 0, size = list.size(); i < size; i++) { final String packageName = list.get(i); RetrofitManager.getApi().getGameDigestByPackageName(packageName) .subscribeOn(Schedulers.io()) @@ -660,31 +517,17 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene concernManager.updateByEntity(gameInfo); } - addInstalledCount(); - if (iCount == size) { - updateConcern(); - } + latch.countDown(); } @Override public void onFailure(Throwable e) { - addInstalledCount(); - if (iCount == size) { - updateConcern(); - } + latch.countDown(); } }); } } - private int cCount; - - private void addConcernCount() { - synchronized (MainActivity.class) { - cCount++; - } - } - private void updateConcern() { ArrayList concernIdList = new ArrayList<>(); for (ConcernInfo entity : concernManager.getAllConcern()) { @@ -693,10 +536,15 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (concernIdList.isEmpty()) { update(); } else { - final int size = concernIdList.size(); - cCount = 0; - for (int i = 0; i < size; i++) { - RetrofitManager.getApi().getGameDigest(concernIdList.get(i)) + final CountDownLatch latch = ObservableUtil.latch(concernIdList.size(), new Action1() { + @Override + public void call(Object o) { + update(); + } + }); + + for (String id : concernIdList) { + RetrofitManager.getApi().getGameDigest(id) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response() { @@ -720,18 +568,12 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene concernManager.updateByConcern(concernInfo); } - addConcernCount(); - if (cCount == size) { - update(); - } + latch.countDown(); } @Override public void onFailure(Throwable e) { - addConcernCount(); - if (cCount == size) { - update(); - } + latch.countDown(); } }); } @@ -796,18 +638,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene handler.postDelayed(new Runnable() { @Override public void run() { - ArrayList concernList = new ArrayList<>(); - for (ConcernInfo entity : concernManager.getAllConcern()) { - if (entity.isConcern()) { - concernList.add(entity.getGameName()); - } - } - Map map = new HashMap<>(); - map.put("type", Build.MODEL); - map.put("system", Build.VERSION.SDK_INT + "=" + Build.VERSION.RELEASE); - map.put("install", PackageManager.getInstalledList()); - map.put("concern", concernList); - DataCollectionManager.upsert(MainActivity.this, "user", map); + DataCollectionUtils.uploadUser(MainActivity.this); } }, 1000); @@ -866,19 +697,17 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene }); } - private int count; - - private void addCount() { - synchronized (MainActivity.class) { - count++; - } - } - private void checkGamePlugin() { List infos = concernManager.getInstalledGame(); - final int size = infos.size(); final List list = new ArrayList<>(); - count = 0; + + final CountDownLatch latch = ObservableUtil.latch(infos.size(), new Action1() { + @Override + public void call(Object o) { + processPluginData(list); + } + }); + for (ConcernInfo info : infos) { RetrofitManager.getApi().getGameDigest(info.getId()) .subscribeOn(Schedulers.io()) @@ -888,18 +717,12 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene public void onResponse(GameEntity response) { list.add(response); - addCount(); - if (count == size) { - processPluginData(list); - } + latch.countDown(); } @Override public void onFailure(Throwable e) { - addCount(); - if (count == size) { - processPluginData(list); - } + latch.countDown(); } }); } @@ -911,10 +734,8 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } List infos = concernManager.getInstalledGame(); HashMap map; - GameEntity gameEntity; for (ConcernInfo info : infos) { - for (int i = 0, size = list.size(); i < size; i++) { - gameEntity = list.get(i); + for (GameEntity gameEntity : list) { if (gameEntity.getId().equals(info.getId()) && gameEntity.getTag() != null && gameEntity.getTag().size() != 0 && gameEntity.getApk() != null) { @@ -925,7 +746,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (apkEntity.getPackageName().equals(key) && !TextUtils.isEmpty(apkEntity.getGhVersion()) && !PackageUtils.isSignature(this, apkEntity.getPackageName())) { - PackageManager.addUpdate(getGameUpdateEntity(gameEntity, apkEntity)); + PackageManager.addUpdate(GameUtils.getGameUpdateEntity(gameEntity, apkEntity)); break; } } @@ -940,24 +761,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene EventBus.getDefault().post(new EBDownloadStatus("plugin")); } - private GameUpdateEntity getGameUpdateEntity(GameEntity gameEntity, ApkEntity apkEntity) { - GameUpdateEntity gameUpdateEntity = new GameUpdateEntity(); - gameUpdateEntity.setId(gameEntity.getId()); - gameUpdateEntity.setIcon(gameEntity.getIcon()); - gameUpdateEntity.setName(gameEntity.getName()); - gameUpdateEntity.setPackageName(apkEntity.getPackageName()); - gameUpdateEntity.setSize(apkEntity.getSize()); - gameUpdateEntity.setVersion(apkEntity.getVersion()); - gameUpdateEntity.setGhVersion(apkEntity.getGhVersion()); - gameUpdateEntity.setUrl(apkEntity.getUrl()); - gameUpdateEntity.setPlatform(apkEntity.getPlatform()); - gameUpdateEntity.setEtag(apkEntity.getEtag()); - gameUpdateEntity.setPluggable(true); - gameUpdateEntity.setTag(gameEntity.getTag()); - gameUpdateEntity.setBrief(gameEntity.getBrief()); - return gameUpdateEntity; - } - @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); @@ -996,6 +799,37 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene }); } + Runnable skipRun = new Runnable() { + @Override + public void run() { + if (getIntent() != null && getIntent().getExtras() != null && !isSkipped) { + isSkipped = true; + String to = getIntent().getStringExtra("to"); + if(!TextUtils.isEmpty(to)){ + Class clazz = intentClass(to); + if (clazz != null) { + Intent skipIntent = new Intent(MainActivity.this, clazz); + + Bundle bundle = getIntent().getBundleExtra("data"); + if (bundle != null) { + String entrance = bundle.getString("entrance"); + if (TextUtils.isEmpty(entrance) || !entrance.startsWith("(") || !entrance.endsWith(")")) { + bundle.putString("entrance", "(插件跳转)"); + } + String packageName = bundle.getString("packageName"); + if (packageName != null) { + bundle.putInt("currentItem", 1); + } + } + + skipIntent.putExtra("data", bundle); + startActivity(skipIntent); + } + } + } + } + }; + private Class intentClass(String to) { if ("NewsActivity".equals(to)) { to = "NewsDetailActivity"; @@ -1010,87 +844,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene return null; } - Runnable runnable = new Runnable() { - @Override - public void run() { - if (getIntent() != null && getIntent().getExtras() != null - && !isSkipped) { - isSkipped = true; - String to = getIntent().getExtras().getString("to"); - if(!TextUtils.isEmpty(to)){ - Class clazz = intentClass(to); - if (clazz != null) { - Intent toIntent = new Intent(MainActivity.this, clazz); - if ("NewsActivity".equals(to) || "NewsDetailActivity".equals(to)) { - toIntent.putExtra("newsId", getIntent().getExtras().getString("newsId")); - String entrance = getIntent().getExtras().getString("entrance"); - if (TextUtils.isEmpty(entrance) || !entrance.startsWith("(") || !entrance.endsWith(")")) { - entrance = "(插件跳转)"; - } - toIntent.putExtra("entrance", entrance); - } else if("DownloadManagerActivity".equals(to)) { - String packageName = getIntent().getExtras().getString("packageName"); - if (packageName != null) { - toIntent.putExtra("packageName" , getIntent().getExtras().getString("packageName")); - toIntent.putExtra("currentItem" , 1); - } - } else if ("GameDetailsActivity".equals(to) || "GameDetailActivity".equals(to)) { - toIntent.putExtra("gameId", getIntent().getExtras().getString("gameId")); - String entrance = getIntent().getExtras().getString("entrance"); - if (TextUtils.isEmpty(entrance) || !entrance.startsWith("(") || !entrance.endsWith(")")) { - entrance = "(插件跳转)"; - } - toIntent.putExtra("entrance", entrance); - } else if ("SubjectActivity".equals(to)) { - toIntent.putExtra("id", getIntent().getExtras().getString("id")); - toIntent.putExtra("name", getIntent().getExtras().getString("name")); - toIntent.putExtra("order", getIntent().getExtras().getBoolean("order")); - } else if ("ViewImageActivity".equals(to)) { - toIntent.putExtra("urls" , getIntent().getExtras().getStringArrayList("urls")); - toIntent.putExtra("current" , getIntent().getExtras().getInt("current",0)); - toIntent.putExtra("ScaleType" , getIntent().getExtras().getString("ScaleType")); - } else if ("SubjectActivity".equals(to)) { - toIntent.putExtra("id", getIntent().getExtras().getString("id")); - toIntent.putExtra("name", getIntent().getExtras().getString("name")); - } else if ("SuggestionActivity".equals(to)) { - toIntent.putExtra("content", getIntent().getExtras().getString("content")); - } - startActivity(toIntent); - } - } else { - String from = getIntent().getStringExtra("from"); - if (!TextUtils.isEmpty(from)) { - if (from.equals("plugin")) { - Intent intent = new Intent(MainActivity.this, DownloadManagerActivity.class); - intent.putExtra("currentItem", 1); - intent.putExtra("packageName", getIntent().getStringExtra("packageName")); - startActivity(intent); - } else if (from.equals("mipush_news")) { - Intent intent = new Intent(MainActivity.this, NewsDetailActivity.class); - intent.putExtra("entrance", "(小米推送)"); - intent.putExtra("newsId", getIntent().getStringExtra("newsId")); - startActivity(intent); - } else if (from.equals("mipush_new_game")) { - Intent intent = new Intent(MainActivity.this, GameDetailActivity.class); - intent.putExtra("entrance", "(小米推送)"); - startActivity(intent); - } else if (from.equals("mipush_plugin")) { - Intent intent = new Intent(MainActivity.this, DownloadManagerActivity.class); - intent.putExtra("currentItem", 1); - intent.putExtra("isPushIntent", true); - startActivity(intent); - } else if (from.equals("plugin_install")) { - Intent intent = new Intent(MainActivity.this, DownloadManagerActivity.class); - intent.putExtra("currentItem", 0); - intent.putExtra("path", getIntent().getStringExtra("path")); - startActivity(intent); - } - } - } - } - } - }; - private void getSearchHints() { RetrofitManager.getApi().getSearchHints() .subscribeOn(Schedulers.io()) @@ -1115,202 +868,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene }); } - private void checkUpdate() { - String TD_CHANNEL_ID = (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID"); - RetrofitManager.getApi().getUpdate(PackageUtils.getVersion(getApplicationContext()), TD_CHANNEL_ID) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onResponse(AppEntity response) { - appEntity = response; - - float version = Float.valueOf(response.getVersion()); - float currentVersion = Float.valueOf(PackageUtils.getVersion(getApplicationContext())); - if (version > currentVersion) { - // 光环助手 有更新 - GameUpdateEntity game = new GameUpdateEntity(); - game.setName("光环助手V" + response.getVersion()); - game.setPackageName(getPackageName()); - game.setSize(response.getSize()); - game.setVersion(response.getVersion()); - game.setUrl(response.getUrl()); - game.setPlatform("官方版"); - game.setId("5618b86e8ab49e17088b4575"); - PackageManager.addUpdate(0, game); - - String updateMD5 = MD5Utils.getUpdateMD5(response.getUrl(), response.getContent()); - if (response.isForce()) { - // 强制更新 - showUpdateDialog(updateMD5); - } else { - // 非强制更新 - if ("EVERY_TIME_OPEN".equals(response.getAlert())) { - // 每次都提示 - showUpdateDialog(updateMD5); - } else if (!"NEVER".equals(response.getAlert())){ - // 一天提示一次 - String showUpdateTime = sp.getString("show_update_tiem", null); - SimpleDateFormat format = new SimpleDateFormat( - "yyyy-MM-dd", Locale.getDefault()); - String today = format.format(new Date()); - if (!today.equals(showUpdateTime)) { - sp.edit().putString("show_update_tiem", today).apply(); - showUpdateDialog(updateMD5); - } - } - } - } - } - }); - } - - private void showUpdateDialog(final String md5) { - uploadUpgradeLog("notice"); //上传更新通知弹窗数据 - final Dialog updateDialog = new Dialog(this); - View view = View.inflate(this, R.layout.app_update_hint_dialog, null); - - TextView content = (TextView) view.findViewById(R.id.updeta_content); - content.setText(Html.fromHtml(appEntity.getContent())); - - TextView versison = (TextView) view.findViewById(R.id.update_app_version); - versison.setText(String.format("光环助手V%s更新内容:", appEntity.getVersion())); - - TextView size = (TextView) view.findViewById(R.id.update_app_size); - size.setText(String.format("大小:%s", appEntity.getSize())); - - view.findViewById(R.id.update_cannel).setOnClickListener( - new OnClickListener() { - @Override - public void onClick(View v) { - if (appEntity.isForce()) { - finish(); - } else { - updateDialog.dismiss(); - } - } - }); - - view.findViewById(R.id.updeta_confirm).setOnClickListener( - new OnClickListener() { - @Override - public void onClick(View v) { - updateDialog.dismiss(); - String path = FileUtils.getDownloadPath(MainActivity.this, - "光环助手V" + appEntity.getVersion() + "_" + md5 + ".apk"); - File file = new File(path); - if (file.exists() && file.length() > 0) { - uploadUpgradeLog("install");//上传更新安装数据 - startActivity(PackageUtils.getInstallIntent(path)); - } else { - DataUtils.onEvent(MainActivity.this, "软件更新", "下载开始"); - showDownloadDialog(md5); - } - } - }); - - if (appEntity.isForce()) { - updateDialog.setCanceledOnTouchOutside(false); - updateDialog.setCancelable(false); - } - updateDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - updateDialog.setContentView(view); - updateDialog.show(); - } - - private Dialog downloadDialog; - private ProgressBar app_pb_progress; - private TextView app_tv_speed; - private TextView app_tv_percent; - - private void showDownloadDialog(String md5) { - downloadDialog = new Dialog(this); - - View view = View.inflate(this, R.layout.app_updating_dialog, null); - - app_pb_progress = (ProgressBar) view.findViewById(R.id.app_pb_progress); - app_tv_speed = (TextView) view.findViewById(R.id.app_tv_speed); - app_tv_percent = (TextView) view.findViewById(R.id.app_tv_percent); - - view.findViewById(R.id.app_tv_cancel).setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DownloadManager.getInstance(getApplicationContext()).cancel(appEntity.getUrl()); - if (appEntity.isForce()) { - finish(); - } else { - downloadDialog.dismiss(); - isShowDownload = false; - } - } - }); - - downloadDialog.setCanceledOnTouchOutside(false); - downloadDialog.setCancelable(false); - downloadDialog.closeOptionsMenu(); - downloadDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - downloadDialog.setContentView(view); - downloadDialog.show(); - - isShowDownload = true; - - String path = FileUtils.getDownloadPath(MainActivity.this, - "光环助手V" + appEntity.getVersion() + "_" + md5 + ".apk"); - File file = new File(path); - if (file.exists()) { - file.delete(); - } - - DownloadEntity downloadEntity = new DownloadEntity(); - downloadEntity.setUrl(appEntity.getUrl()); - downloadEntity.setName("光环助手V" + appEntity.getVersion()); - downloadEntity.setPath(path); - downloadEntity.setPlatform("官方版"); - downloadEntity.setPackageName(getPackageName()); - DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntity.getUrl(), false); - DownloadManager.getInstance(getApplicationContext()).pauseAll(); - DownloadManager.getInstance(getApplicationContext()).add(downloadEntity); - } - - private void processGhAssistDownload(DownloadEntity downloadEntity) { - app_tv_speed.setText(String.format("%s(剩%s)", SpeedUtils.getSpeed(downloadEntity.getSpeed()), - SpeedUtils.getRemainTime(downloadEntity.getSize(), - downloadEntity.getProgress(), downloadEntity.getSpeed() * 1024))); - app_pb_progress.setProgress((int) (downloadEntity.getPercent() * 10)); - app_tv_percent.setText(downloadEntity.getPercent() + "%"); - if (DownloadStatus.done.equals(downloadEntity.getStatus())) { - DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntity.getUrl(), false); - if (downloadDialog != null) { - downloadDialog.dismiss(); - } - isShowDownload = false; - } - } - - private void uploadUpgradeLog(String step) { - Map map = new HashMap<>(); - String version = PackageUtils.getVersion(this); - String user = DeviceUtils.getDeviceID(this); - String channel = (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID"); - map.put("step", step); - map.put("version", version); - map.put("user", user); - map.put("device_id", TokenUtils.getDeviceId(this)); - map.put("channel", channel); - Map params = new HashMap<>(); - params.put("topic", "upgrade"); - params.put("source", "GH-ASSIST-Client"); - params.put("time", String.valueOf(Utils.getTime(this))); - params.put("content", new JSONObject(map).toString()); - - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - new JSONObject(params).toString()); - RetrofitManager.getData().postLog(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response()); - } - // 获取META-INF中的plugin_update 文件,判断是否从游戏插件中下载的app,是则获取游戏id,启动游戏更新,下载该游戏 private void getPluginUpdate() { ApplicationInfo appinfo = getApplicationInfo(); @@ -1365,8 +922,8 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene hideFragments(transaction); switch (index) { case 0: - home1Image.setImageResource(R.drawable.home1_selected); - home1Title.setTextColor(getResources().getColor(R.color.theme)); + ivGame.setImageResource(R.drawable.home1_selected); + tvGame.setTextColor(getResources().getColor(R.color.theme)); if (gameFragment == null) { List list = getSupportFragmentManager().getFragments(); if (list != null) { @@ -1391,8 +948,8 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene currentTab = 0; break; case 1: - home2Image.setImageResource(R.drawable.home2_selected); - home2Title.setTextColor(getResources().getColor(R.color.theme)); + ivNews.setImageResource(R.drawable.home2_selected); + tvNews.setTextColor(getResources().getColor(R.color.theme)); if (newsFragment == null) { List list = getSupportFragmentManager().getFragments(); if (list != null) { @@ -1417,8 +974,8 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene currentTab = 1; break; case 2: - home3Image.setImageResource(R.drawable.home3_selected); - home3Title.setTextColor(getResources().getColor(R.color.theme)); + ivPersonal.setImageResource(R.drawable.home3_selected); + tvPersonal.setTextColor(getResources().getColor(R.color.theme)); if (personalFragment == null) { List list = getSupportFragmentManager().getFragments(); if (list != null) { @@ -1445,21 +1002,17 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene transaction.commit(); } - /** - * 清除掉所有的选中状态。 - */ + // 清除掉所有的选中状态。 private void clearSelection() { - home1Image.setImageResource(R.drawable.home1_unselected); - home2Image.setImageResource(R.drawable.home2_unselected); - home3Image.setImageResource(R.drawable.home3_unselected); - home1Title.setTextColor(getResources().getColor(R.color.title)); - home2Title.setTextColor(getResources().getColor(R.color.title)); - home3Title.setTextColor(getResources().getColor(R.color.title)); + ivGame.setImageResource(R.drawable.home1_unselected); + ivNews.setImageResource(R.drawable.home2_unselected); + ivPersonal.setImageResource(R.drawable.home3_unselected); + tvGame.setTextColor(getResources().getColor(R.color.title)); + tvNews.setTextColor(getResources().getColor(R.color.title)); + tvPersonal.setTextColor(getResources().getColor(R.color.title)); } - /** - * 将所有的Fragment都置为隐藏状态。 - */ + // 将所有的Fragment都置为隐藏状态。 private void hideFragments(FragmentTransaction transaction) { if (personalFragment != null) { transaction.hide(personalFragment); @@ -1481,7 +1034,8 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene public void onEventMainThread(EBSkip skip) { if ("GameFragment".equals(skip.getType())) { - home1Layout.performClick(); + EventBus.getDefault().post(new EBUISwitch("MainActivity", 0)); + setTabSelection(0); EventBus.getDefault().post(new EBSkip("MainActivity", skip.getCurrentItem())); } } @@ -1562,10 +1116,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene }); } - Map map = new HashMap<>(); - map.put("type", busFour.getType()); - map.put("packageName", busFour.getPackageName()); - DataCollectionManager.onEvent(this, "inorunstall", map); + DataCollectionUtils.uploadInorunstall(this, busFour.getType(), busFour.getPackageName()); } private void concernGame(final String id, final String packageName) { @@ -1587,7 +1138,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (apkEntity.getPackageName().equals(packageName) && !TextUtils.isEmpty(apkEntity.getGhVersion()) && !PackageUtils.isSignature(getApplicationContext(), apkEntity.getPackageName())) { - PackageManager.addUpdate(getGameUpdateEntity(response, apkEntity)); + PackageManager.addUpdate(GameUtils.getGameUpdateEntity(response, apkEntity)); EventBus.getDefault().post(new EBDownloadStatus("plugin")); break; } @@ -1609,4 +1160,5 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene super.onDestroy(); DownloadManager.getInstance(this).removeObserver(dataWatcher); } + } diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index ec51e4c167..b10aa1428d 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -17,13 +17,13 @@ import android.widget.Toast; import com.gh.base.BaseDetailActivity; import com.gh.common.constant.Config; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.eventbus.EBConcernChanged; import com.gh.gamecenter.eventbus.EBNetworkState; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.newsdetail.NewsDetailAdapter; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -72,6 +72,9 @@ public class NewsDetailActivity extends BaseDetailActivity implements OnClickLis detail_rv_show.setAdapter(adapter); newsId = getIntent().getStringExtra("newsId"); + if (getIntent().getBundleExtra("data") != null) { + newsId = getIntent().getBundleExtra("data").getString("newsId"); + } if (newsId == null) { String id = getIntent().getStringExtra("id"); String type = getIntent().getStringExtra("type"); @@ -265,11 +268,7 @@ public class NewsDetailActivity extends BaseDetailActivity implements OnClickLis kv.put("位置", "分享"); DataUtils.onEvent(this, "点击", "新闻详情", kv); - Map map = new HashMap<>(); - map.put("location", "分享"); - map.put("news", adapter.getNewsDetailEntity().getTitle()); - map.put("page", "新闻详情"); - DataCollectionManager.onEvent(this, "click-item", map); + DataCollectionUtils.uploadClick(this, "分享", "新闻详情", adapter.getNewsDetailEntity().getTitle()); String url = "http://www.ghzhushou.com/article/" + adapter.getNewsDetailEntity().getId() + ".html"; @@ -385,17 +384,7 @@ public class NewsDetailActivity extends BaseDetailActivity implements OnClickLis DataUtils.onEvent(NewsDetailActivity.this, "文章数据", adapter.getNewsDetailEntity().getTitle(), kv1); if (seconds > 0) { - Map map = new HashMap<>(); - map.put("title", adapter.getNewsDetailEntity().getTitle()); - map.put("type", adapter.getNewsDetailEntity().getType()); - map.put("author", adapter.getNewsDetailEntity().getAuthor()); - if (gameEntity != null) { - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - } - map.put("time", seconds); - map.put("from", entrance); - DataCollectionManager.onEvent(this, "news", map); + DataCollectionUtils.uploadNews(this, adapter.getNewsDetailEntity(), gameEntity, seconds, entrance); } } diff --git a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java index 72afc92891..7385fb7f14 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java @@ -17,6 +17,7 @@ import android.widget.TextView; import android.widget.Toast; import com.gh.base.BaseActivity; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.MeasureHeightLayoutManager; @@ -24,7 +25,6 @@ import com.gh.common.util.NewsUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.entity.NewsEntity; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -161,11 +161,7 @@ public class NewsSearchActivity extends BaseActivity { private void loadNewsData(final int page) { DataUtils.onEvent(this, "游戏新闻搜索", searchKey); - - Map map = new HashMap<>(); - map.put("key", searchKey); - map.put("from", "游戏新闻搜索"); - DataCollectionManager.onEvent(this, "search", map); + DataCollectionUtils.uploadSearch(this, searchKey, "游戏新闻搜索"); RetrofitManager.getApi().getSearchNews(gameId, searchKey, page, 20) .map(new Func1, List>() { @@ -262,12 +258,8 @@ public class NewsSearchActivity extends BaseActivity { kv.put("位置", String.valueOf(holder.getPosition() + 1)); DataUtils.onEvent(NewsSearchActivity.this, "点击", "游戏新闻搜索", kv); - Map map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "游戏新闻搜索"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(NewsSearchActivity.this, "click-item", map); + DataCollectionUtils.uploadClick(NewsSearchActivity.this, + "列表", "游戏新闻搜索", newsEntity.getTitle()); // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); diff --git a/app/src/main/java/com/gh/gamecenter/SearchActivity.java b/app/src/main/java/com/gh/gamecenter/SearchActivity.java index 443a8e455f..b44939a816 100644 --- a/app/src/main/java/com/gh/gamecenter/SearchActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SearchActivity.java @@ -23,20 +23,17 @@ import android.widget.TextView.OnEditorActionListener; import com.gh.base.BaseFragmentActivity; import com.gh.common.constant.Config; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.gamecenter.db.SearchHistoryDao; import com.gh.gamecenter.eventbus.EBSearch; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.SystemBarTintManager; import com.gh.gamecenter.manager.SystemBarTintManager.SystemBarConfig; import com.gh.gamecenter.search.SearchGameDetailFragment; import com.gh.gamecenter.search.SearchGameListFragment; import com.gh.gamecenter.search.SearchHistoryFragment; -import java.util.HashMap; -import java.util.Map; - public class SearchActivity extends BaseFragmentActivity { @@ -261,11 +258,7 @@ public class SearchActivity extends BaseFragmentActivity { break; case 2: DataUtils.onEvent(SearchActivity.this, "搜索页面", searchKey); - - Map map = new HashMap<>(); - map.put("key", searchKey); - map.put("from", "搜索页面"); - DataCollectionManager.onEvent(this, "search", map); + DataCollectionUtils.uploadSearch(this, searchKey, "搜索页面"); game_detail_fragment = new SearchGameDetailFragment(); game_detail_fragment.setKey(searchKey); @@ -294,11 +287,7 @@ public class SearchActivity extends BaseFragmentActivity { public void finish() { super.finish(); DataUtils.onEvent(this, "搜索页面", searchKey); - - Map map = new HashMap<>(); - map.put("key", searchKey); - map.put("from", "搜索页面"); - DataCollectionManager.onEvent(this, "search", map); + DataCollectionUtils.uploadSearch(this, searchKey, "搜索页面"); } } diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.java b/app/src/main/java/com/gh/gamecenter/SettingActivity.java index 92f76f4089..181c778914 100644 --- a/app/src/main/java/com/gh/gamecenter/SettingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SettingActivity.java @@ -8,56 +8,28 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.os.Handler; -import android.text.Html; import android.text.TextUtils; -import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; -import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast; -import com.gh.base.AppController; import com.gh.base.BaseActivity; import com.gh.common.constant.Config; -import com.gh.common.util.DataUtils; -import com.gh.common.util.DeviceUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.FileUtils; -import com.gh.common.util.MD5Utils; import com.gh.common.util.PackageUtils; -import com.gh.common.util.SpeedUtils; -import com.gh.common.util.TokenUtils; -import com.gh.common.util.Utils; -import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntity; -import com.gh.download.DownloadManager; -import com.gh.download.DownloadStatus; -import com.gh.gamecenter.entity.AppEntity; -import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.eventbus.EBSkip; -import com.gh.gamecenter.manager.PackageManager; -import com.gh.gamecenter.retrofit.Response; -import com.gh.gamecenter.retrofit.RetrofitManager; +import com.gh.gamecenter.manager.UpdateManager; import com.kyleduo.switchbutton.SwitchButton; -import org.json.JSONObject; - import java.io.File; -import java.util.HashMap; -import java.util.Map; import de.greenrobot.event.EventBus; -import okhttp3.MediaType; -import okhttp3.RequestBody; -import okhttp3.ResponseBody; -import retrofit2.adapter.rxjava.HttpException; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; /** * 游戏设置页面 @@ -69,19 +41,11 @@ public class SettingActivity extends BaseActivity implements OnClickListener { private SwitchButton setting_sb_autoinstall, setting_sb_autodelete, setting_sb_deletedata, setting_sb_autoupdate, setting_sb_concerngame; - private TextView setting_tv_version, app_tv_speed, app_tv_percent, - app_btn_cancel, setting_tv_cache,setting_tv_size; - private ProgressBar app_pb_progress; + private TextView setting_tv_version, setting_tv_cache,setting_tv_size; private SharedPreferences sp; private Dialog loadingDialog = null; - private Dialog downloadDialog = null; - - private AppEntity appEntity; - - private boolean isChecking = false; - private boolean isShowDownload = false; private Handler handler = new Handler(); @@ -89,32 +53,6 @@ public class SettingActivity extends BaseActivity implements OnClickListener { private Context context = this; - private DataWatcher dataWatcher = new DataWatcher() { - @Override - public void onDataChanged(DownloadEntity downloadEntity) { - if (downloadEntity.getName().contains("光环助手") && isShowDownload) { - app_tv_speed.setText(String.format("%s(剩%s)", - SpeedUtils.getSpeed(downloadEntity.getSpeed()), - SpeedUtils.getRemainTime(downloadEntity.getSize(), downloadEntity.getProgress(), - downloadEntity.getSpeed() * 1024))); - app_pb_progress.setProgress((int) (downloadEntity.getPercent() * 10)); - app_tv_percent.setText(downloadEntity.getPercent() + "%"); - if (DownloadStatus.done.equals(downloadEntity.getStatus())) { - DownloadManager.getInstance(getApplicationContext()) - .cancel(downloadEntity.getUrl(), false); - if (appEntity != null && appEntity.isForce()) { - AppController.getInstance().finishActivity(); - } else { - if (downloadDialog != null) { - downloadDialog.dismiss(); - } - isShowDownload = false; - } - } - } - } - }; - @Override public void finish() { saveCurrentSetting(); @@ -139,8 +77,7 @@ public class SettingActivity extends BaseActivity implements OnClickListener { findViewById(R.id.setting_cv_font_size).setOnClickListener(this); findViewById(R.id.setting_rl_concerngame).setOnClickListener(this); - setting_tv_version.setText("当前版本:V" - + PackageUtils.getVersion(getApplicationContext())); + setting_tv_version.setText(String.format("当前版本:V%s", PackageUtils.getVersion(getApplicationContext()))); setting_tv_cache.setText(getCacheSize()); @@ -257,11 +194,7 @@ public class SettingActivity extends BaseActivity implements OnClickListener { setting_sb_autoupdate.performClick(); break; case R.id.setting_rl_update: - loadingDialog = DialogUtils.showWaitDialog(this, "检查更新中..."); - if (!isChecking) { - isChecking = true; - checkUpdate(); - } + UpdateManager.getInstance(this).checkUpdate(false); break; case R.id.setting_rl_cache: DialogUtils.showWarningDialog(this, "清除缓存", "清空缓存后未安装的游戏可能需要重新下载,确定清空?", @@ -311,7 +244,7 @@ public class SettingActivity extends BaseActivity implements OnClickListener { //设置正文字号 private void fontSize() { final Dialog dialog = new Dialog(this); - View inflate = LayoutInflater.from(this).inflate(R.layout.dialog_font_size, null); + View inflate = View.inflate(this, R.layout.dialog_font_size, null); TextView tv_negative = (TextView) inflate.findViewById(R.id.font_size_negative); TextView tv_positive = (TextView) inflate.findViewById(R.id.font_size_positive); final RadioGroup radioGroup = (RadioGroup) inflate.findViewById(R.id.font_size_radiogroup); @@ -347,8 +280,8 @@ public class SettingActivity extends BaseActivity implements OnClickListener { @Override public void run() { long start = System.currentTimeMillis(); - deleteFolder(getCacheDir()); - deleteFolder(getExternalCacheDir()); + FileUtils.deleteFolder(getCacheDir()); + FileUtils.deleteFolder(getExternalCacheDir()); long time = System.currentTimeMillis() - start; if (time < 1000) { try { @@ -372,232 +305,10 @@ public class SettingActivity extends BaseActivity implements OnClickListener { }.start(); } - private void deleteFolder(File folder) { - if (folder != null) { - if (folder.isDirectory()) { - for (File file : folder.listFiles()) { - if (file.isDirectory()) { - deleteFolder(file); - } else { - file.delete(); - } - } - } - folder.delete(); - } - } - - private void checkUpdate() { - String TD_CHANNEL_ID = (String) PackageUtils.getMetaData(this, - getPackageName(), "TD_CHANNEL_ID"); - RetrofitManager.getApi().getUpdate(PackageUtils.getVersion(getApplicationContext()), TD_CHANNEL_ID) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onResponse(AppEntity response) { - isChecking = false; - if (loadingDialog != null) { - loadingDialog.dismiss(); - } - - appEntity = response; - - float version = Float.valueOf(appEntity.getVersion()); - float currentVersion = Float.valueOf(PackageUtils.getVersion(getApplicationContext())); - - if (version > currentVersion) { - // 光环助手 有更新 - GameUpdateEntity game = new GameUpdateEntity(); - game.setName("光环助手V" + appEntity.getVersion()); - game.setPackageName(getPackageName()); - game.setSize(appEntity.getSize()); - game.setVersion(appEntity.getVersion()); - game.setUrl(appEntity.getUrl()); - game.setPlatform("官方版"); - game.setId("5618b86e8ab49e17088b4575"); - PackageManager.addUpdate(0, game); - - String updateMD5 = MD5Utils.getUpdateMD5( - appEntity.getUrl(), - appEntity.getContent()); - - showUpdateDialog(updateMD5); - } else { - toast("已是最新版本"); - } - } - - @Override - public void onFailure(Throwable e) { - isChecking = false; - if (loadingDialog != null) { - loadingDialog.dismiss(); - } - - if (e instanceof HttpException) { - HttpException exception = (HttpException) e; - if (exception.code() == 304) { - toast("您的光环助手已是最新版本"); - return; - } - } - - toast("检查更新失败"); - } - }); - } - - private void showUpdateDialog(final String md5) { - uploadUpgradeLog("notice"); //上传更新通知弹窗数据 - final Dialog updateDialog = new Dialog(this); - View view = View.inflate(this, R.layout.app_update_hint_dialog, null); - - TextView content = (TextView) view.findViewById(R.id.updeta_content); - content.setText(Html.fromHtml(appEntity.getContent())); - - TextView versison = (TextView) view.findViewById(R.id.update_app_version); - versison.setText(String.format("光环助手V%s更新内容:", appEntity.getVersion())); - - TextView size = (TextView) view.findViewById(R.id.update_app_size); - size.setText(String.format("大小:%s", appEntity.getSize())); - - view.findViewById(R.id.update_cannel).setOnClickListener( - new OnClickListener() { - @Override - public void onClick(View v) { - if (appEntity.isForce()) { - AppController.getInstance().finishActivity(); - } else { - updateDialog.dismiss(); - } - } - }); - view.findViewById(R.id.updeta_confirm).setOnClickListener( - new OnClickListener() { - @Override - public void onClick(View v) { - updateDialog.dismiss(); - String path = FileUtils.getDownloadPath(SettingActivity.this, - "光环助手V" + appEntity.getVersion() + "_" + md5 + ".apk"); - File file = new File(path); - if (file.exists() && file.length() > 0) { - uploadUpgradeLog("install");//上传更新安装数据 - startActivity(PackageUtils.getInstallIntent(path)); - } else { - DataUtils.onEvent(SettingActivity.this, "软件更新", "下载开始"); - showDownloadDialog(md5); - } - } - }); - if (appEntity.isForce()) { - updateDialog.setCanceledOnTouchOutside(false); - updateDialog.setCancelable(false); - } - updateDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - updateDialog.setContentView(view); - updateDialog.show(); - } - - private void showDownloadDialog(String md5) { - final Dialog downloadDialog = new Dialog(SettingActivity.this); - downloadDialog.setCanceledOnTouchOutside(false); - downloadDialog.setCancelable(false); - downloadDialog.closeOptionsMenu(); - View view = View.inflate(this, R.layout.app_updating_dialog, null); - - app_pb_progress = (ProgressBar) view.findViewById(R.id.app_pb_progress); - app_tv_speed = (TextView) view.findViewById(R.id.app_tv_speed); - app_tv_percent = (TextView) view.findViewById(R.id.app_tv_percent); - app_btn_cancel = (TextView) view.findViewById(R.id.app_tv_cancel); - - app_btn_cancel.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DownloadManager.getInstance(getApplicationContext()).cancel( - appEntity.getUrl()); - if (appEntity.isForce()) { - AppController.getInstance().finishActivity(); - } else { - downloadDialog.dismiss(); - isShowDownload = false; - } - } - }); - - downloadDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - downloadDialog.setContentView(view); - downloadDialog.show(); - - isShowDownload = true; - - String path = FileUtils.getDownloadPath(SettingActivity.this, "光环助手V" - + appEntity.getVersion() + "_" + md5 + ".apk"); - - File file = new File(path); - - if (file.exists()) { - file.delete(); - } - - DownloadEntity downloadEntity = new DownloadEntity(); - downloadEntity.setUrl(appEntity.getUrl()); - downloadEntity.setName("光环助手V" + appEntity.getVersion()); - downloadEntity.setPath(path); - downloadEntity.setPlatform("官方版"); - downloadEntity.setPackageName(getPackageName()); - - DownloadManager.getInstance(getApplicationContext()).cancel( - downloadEntity.getUrl(), false); - - DownloadManager.getInstance(getApplicationContext()).pauseAll(); - - DownloadManager.getInstance(getApplicationContext()).add(downloadEntity); - } - - private void uploadUpgradeLog(String step) { - Map map = new HashMap<>(); - String version = PackageUtils.getVersion(this); - String user = DeviceUtils.getDeviceID(this); - String channel = (String) PackageUtils.getMetaData(this, - getPackageName(), "TD_CHANNEL_ID"); - map.put("step", step); - map.put("version", version); - map.put("user", user); - map.put("device_id", TokenUtils.getDeviceId(this)); - map.put("channel", channel); - Map params = new HashMap<>(); - params.put("topic", "upgrade"); - params.put("source", "GH-ASSIST-Client"); - params.put("time", String.valueOf(Utils.getTime(this))); - params.put("content", new JSONObject(map).toString()); - - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - new JSONObject(params).toString()); - RetrofitManager.getData().postLog(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response()); - } - - @Override - public void onResume() { - super.onResume(); - DownloadManager.getInstance(SettingActivity.this).addObserver( - dataWatcher); - } - @Override public void onPause() { - saveCurrentSetting(); super.onPause(); - DownloadManager.getInstance(SettingActivity.this).removeObserver( - dataWatcher); + saveCurrentSetting(); } - @Override - protected void onDestroy() { - saveCurrentSetting(); - super.onDestroy(); - } } diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java index 780e93000e..437069760a 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java @@ -23,6 +23,7 @@ import com.facebook.imagepipeline.image.ImageInfo; import com.gh.base.BaseActivity; import com.gh.common.util.MessageShareUtils; import com.gh.gamecenter.manager.SystemBarTintManager; +import com.gh.gamecenter.retrofit.ObservableUtil; import com.tencent.tauth.Tencent; import java.io.File; @@ -31,10 +32,12 @@ import java.net.HttpURLConnection; import java.net.URL; import java.util.List; import java.util.Vector; +import java.util.concurrent.CountDownLatch; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import rx.functions.Action1; /** * Created by khy on 2016/11/7. @@ -64,6 +67,8 @@ public class ShareCardPicActivity extends BaseActivity { private Bitmap shareBm; + private CountDownLatch latch; + //接收QQ或者QQ空间分享回调 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -101,6 +106,19 @@ public class ShareCardPicActivity extends BaseActivity { tintManager.setStatusBarTintResource(R.color.back); } + latch = ObservableUtil.latch(shareArrImg.size(), new Action1() { + @Override + public void call(Object o) { + ShareCardPicActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + setContentImage(shareArrImg.get(0)); + currentImgPosition++; + } + }); + } + }); + for (int i = 0; i < shareArrImg.size(); i++) { checkUrl(shareArrImg.get(i), shareArrImg.size(), i); } @@ -185,7 +203,7 @@ public class ShareCardPicActivity extends BaseActivity { @OnClick(R.id.sharecard_chang_img) public void OnChangPicListener() { - if (currentImgPosition > shareArrImg.size() -1){ + if (currentImgPosition > shareArrImg.size() - 1) { currentImgPosition = 0; } @@ -206,29 +224,12 @@ public class ShareCardPicActivity extends BaseActivity { connection.connect(); int code = connection.getResponseCode(); if (code == 200) { - addCount(); shareArrImg.remove(position); shareArrImg.add(position, newUrl); - if (count == size) { - ShareCardPicActivity.this.runOnUiThread(new Runnable() { - @Override - public void run() { - setContentImage(shareArrImg.get(0)); - currentImgPosition++; - } - }); - } + + latch.countDown(); } else { - addCount(); - if (count == size) { - ShareCardPicActivity.this.runOnUiThread(new Runnable() { - @Override - public void run() { - setContentImage(shareArrImg.get(0)); - currentImgPosition++; - } - }); - } + latch.countDown(); } } catch (IOException e) { e.printStackTrace(); @@ -237,14 +238,6 @@ public class ShareCardPicActivity extends BaseActivity { }.start(); } - private int count; - - private void addCount() { - synchronized (ShareCardPicActivity.class) { - count++; - } - } - public static Bitmap getBitmapByView(ScrollView scrollView) { int h = 0; Bitmap bitmap = null; diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index cba1f88c57..231b333f49 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -10,7 +10,6 @@ import android.os.Bundle; import android.os.Handler; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; -import android.text.TextUtils; import android.util.DisplayMetrics; import android.view.KeyEvent; import android.view.View; @@ -23,34 +22,25 @@ import com.gh.base.BaseActivity; import com.gh.common.constant.Config; import com.gh.common.util.FileUtils; import com.gh.common.util.PackageUtils; +import com.gh.common.util.PlatformUtils; import com.gh.common.util.TimestampUtils; import com.gh.common.util.TokenUtils; import com.gh.common.util.Utils; import com.gh.download.DownloadManager; import com.gh.download.DownloadService; -import com.gh.gamecenter.db.info.FilterInfo; -import com.gh.gamecenter.entity.PlatformEntity; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.FilterManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; -import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import org.json.JSONException; import org.json.JSONObject; -import java.io.BufferedReader; import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; -import java.util.List; import java.util.Locale; -import java.util.Set; import de.greenrobot.event.EventBus; import rx.android.schedulers.AndroidSchedulers; @@ -58,16 +48,11 @@ import rx.schedulers.Schedulers; /** * 引导页面 - * - * @author 黄壮华 - * */ public class SplashScreenActivity extends BaseActivity { private SharedPreferences sp; - private String from; - private long start; private boolean isFirst; @@ -94,12 +79,10 @@ public class SplashScreenActivity extends BaseActivity { sp = getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); isNewFirstLaunch = sp.getBoolean("isNewFirstLaunchV" + PackageUtils.getVersion(getApplicationContext()), true); - from = getIntent().getStringExtra("from"); - if (isNewFirstLaunch || sp.getInt("actionbar_height", 0) != 0) { - setTheme(R.style.AppTheme_Guide); + setTheme(R.style.AppGuideTheme); } else { - setTheme(R.style.AppTheme_Fullscreen); + setTheme(R.style.AppFullScreenTheme); // 自定义ActionBar ActionBar mActionBar = getActionBar(); if (mActionBar != null) { @@ -114,20 +97,14 @@ public class SplashScreenActivity extends BaseActivity { if (isNewFirstLaunch) { setContentView(R.layout.activity_splash_intro); - ViewPager splash_viewPager = (ViewPager) findViewById(R.id.splash_viewPager); - splash_viewPager.setAdapter(new ViewPagerAdapter()); + ViewPager guideLayout = (ViewPager) findViewById(R.id.splash_intro_vp_guide); + guideLayout.setAdapter(new GuidePagerAdapter()); } else { setContentView(R.layout.activity_splash_normal); } } - @Override - protected void onNewIntent(Intent intent) { - super.onNewIntent(intent); - Utils.log("flags---------------onNewIntent"); - } - - private class ViewPagerAdapter extends PagerAdapter { + private class GuidePagerAdapter extends PagerAdapter { private int[] pics = { R.drawable.splash_01 }; @@ -139,23 +116,28 @@ public class SplashScreenActivity extends BaseActivity { @Override public Object instantiateItem(ViewGroup container, int position) { if (position == pics.length - 1) { - View view = View.inflate(SplashScreenActivity.this, R.layout.splash_viewpage_item, null); - TextView textView = (TextView) view.findViewById(R.id.splash_viewPager_item_btn); + View view = View.inflate(container.getContext(), R.layout.splash_guide_item, null); + + ImageView ivImage = (ImageView) view.findViewById(R.id.splsh_guide_iv_image); + ivImage.setImageResource(pics[position]); + + TextView tvSkip = (TextView) view.findViewById(R.id.splsh_guide_tv_skip); DisplayMetrics outMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(outMetrics); - RelativeLayout.LayoutParams rparams = (RelativeLayout.LayoutParams) textView.getLayoutParams(); + RelativeLayout.LayoutParams rparams = (RelativeLayout.LayoutParams) tvSkip.getLayoutParams(); rparams.height = outMetrics.heightPixels / 4; - textView.setLayoutParams(rparams); - textView.setOnClickListener(new View.OnClickListener() { + tvSkip.setLayoutParams(rparams); + tvSkip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { launch(); } }); + container.addView(view); return view; } else { - ImageView imageView = new ImageView(SplashScreenActivity.this); + ImageView imageView = new ImageView(container.getContext()); imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setImageResource(pics[position]); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( @@ -196,38 +178,28 @@ public class SplashScreenActivity extends BaseActivity { isFirst = false; // 第一次启动,把package.txt文件内容加载进数据库 + FilterManager filterManager = null; if (!sp.getBoolean("isLoadFilter", false)) { - try { - List list = new ArrayList<>(); - BufferedReader reader = new BufferedReader( - new InputStreamReader(getAssets().open("package.txt"))); - String line; - while ((line = reader.readLine()) != null) { - list.add(new FilterInfo(line)); - } - reader.close(); - FilterManager filterManager = new FilterManager(getApplicationContext()); - filterManager.addAllFilter(list); - sp.edit().putBoolean("isLoadFilter", true).apply(); - } catch (IOException e) { - e.printStackTrace(); - } + filterManager = new FilterManager(getApplicationContext()); + filterManager.loadFilter(); } - checkGhFile(); + // 检查是否存在旧版本光环助手包 + checkOldGhFile(); - /* - * 更新过滤表,获取自动刷新的cd,获取版本对应表 - */ + // 更新过滤表,获取自动刷新的cd,获取版本对应表 String time = sp.getString("filter_time", null); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); String today = format.format(new Date()); if (!today.equals(time)) { - FilterManager manager = new FilterManager(getApplicationContext()); - manager.getFilterFromServer(today); + // 获取过滤包 + if (filterManager == null) { + filterManager = new FilterManager(getApplicationContext()); + } + filterManager.getFilterFromServer(today); // 获取版本代码、名称 - getPlatform(); + PlatformUtils.getInstance(getApplicationContext()).getPlatform(); } // 获取下载按钮状态、开启or关闭 @@ -235,14 +207,13 @@ public class SplashScreenActivity extends BaseActivity { getDownloadStatus(); } + // 获取界面设置 getUISetting(); // 更新本地时间 TokenUtils.getTime(this); - /* - * 上传数据 - */ + // 上传数据 DataCollectionManager.getInstance(getApplicationContext()).upload(); // 解决助手奔溃后导致的下载状态保留问题 @@ -275,9 +246,27 @@ public class SplashScreenActivity extends BaseActivity { } } - /* - * 获取界面设置 - */ + // 检查下载文件夹下是否有旧版本的光环助手的包,有则删除 + private void checkOldGhFile() { + File folder = new File(FileUtils.getDownloadDir(this) + File.separator); + if (folder.isDirectory()) { + for (File file : folder.listFiles()) { + if (!file.isDirectory() && file.getName().startsWith("光环助手V")) { + String name = file.getName(); + int index = name.indexOf("_"); + if (index != -1) { + float version = Float.valueOf(name.substring(name.indexOf("V") + 1, index)); + float currentVersion = Float.valueOf(PackageUtils.getVersion(getApplicationContext())); + if (version <= currentVersion && file.delete()) { + Utils.log(file.getName() + " file delete success."); + } + } + } + } + } + } + + // 获取界面设置 private void getUISetting() { RetrofitManager.getApi().getUISetting() .subscribeOn(Schedulers.io()) @@ -303,12 +292,9 @@ public class SplashScreenActivity extends BaseActivity { }); } - /* - * 获取下载按钮显示状态 - */ + // 获取下载按钮显示状态 private void getDownloadStatus() { - String TD_CHANNEL_ID = (String) PackageUtils.getMetaData(this, - getPackageName(), "TD_CHANNEL_ID"); + String TD_CHANNEL_ID = (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID"); RetrofitManager.getApi().getDownloadStatus(PackageUtils.getVersion(getApplicationContext()), TD_CHANNEL_ID) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -335,103 +321,18 @@ public class SplashScreenActivity extends BaseActivity { }); } - /* - * 检查下载文件夹下是否有旧版本的光环助手的包,有则删除 - */ - private void checkGhFile() { - File folder = new File(FileUtils.getDownloadDir(this) + File.separator); - if (folder.isDirectory()) { - for (File file : folder.listFiles()) { - if (!file.isDirectory() && file.getName().startsWith("光环助手V")) { - String name = file.getName(); - int index = name.indexOf("_"); - if (index != -1) { - float version = Float.valueOf(name.substring( - name.indexOf("V") + 1, index)); - float currentVersion = Float.valueOf(PackageUtils.getVersion(getApplicationContext())); - if (version <= currentVersion) { - file.delete(); - } - } - } - } - } - } - - private void getPlatform() { - RetrofitManager.getApi().getGamePlatform() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>(){ - @Override - public void onResponse(List response) { - Set platformSet = new HashSet<>(); - for (PlatformEntity platformEntity : response) { - platformSet.add(platformEntity.toString()); - } - SharedPreferences sharedPreferences = getSharedPreferences("gh_platform", Context.MODE_PRIVATE); - sharedPreferences.edit().putStringSet("platform", platformSet).apply(); - } - }); - } - // 跳转到主界面 private void launch() { Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); - Bundle bundle = getIntent().getExtras(); - if (bundle != null && bundle.getString("to") != null) { - intentControl(bundle, intent); - } else { - intent.putExtra("from", from); - if (!TextUtils.isEmpty(from)) { - if ("plugin".equals(from)) { - intent.putExtra("packageName", getIntent().getStringExtra("packageName")); - } else if ("mipush_news".equals(from)) { - intent.putExtra("newsId", getIntent().getStringExtra("newsId")); - } else if ("mipush_plugin".equals(from)) { - intent.putExtra("data", getIntent().getStringExtra("data")); - } else if ("plugin_install".equals(from)) { - intent.putExtra("path", getIntent().getStringExtra("path")); - } - } + Bundle bundle = intent.getExtras(); + if (intent.getBundleExtra("data") != null) { + bundle = intent.getBundleExtra("data"); } + intent.putExtra("data", bundle); startActivity(intent); finish(); } - private void intentControl(Bundle bundle, Intent intent) { - String to = bundle.getString("to"); - if ("NewsActivity".equals(to) || "NewsDetailActivity".equals(to)) { - intent.putExtra("newsId", bundle.getString("newsId")); - intent.putExtra("entrance", bundle.getString("entrance")); - } else if("DownloadManagerActivity".equals(to)) { - intent.putExtra("packageName", bundle.getString("packageName")); - } else if ("GameDetailsActivity".equals(to) || "GameDetailActivity".equals(to)) { - intent.putExtra("gameId", bundle.getString("gameId")); - intent.putExtra("entrance", bundle.getString("entrance")); - } else if ("SubjectActivity".equals(to)) { - intent.putExtra("id", bundle.getString("id")); - intent.putExtra("name", bundle.getString("name")); - intent.putExtra("order", bundle.getBoolean("order")); - } else if ("ViewImageActivity".equals(to)) { - intent.putExtra("urls", bundle.getStringArrayList("urls")); - intent.putExtra("current", bundle.getInt("current",0)); - intent.putExtra("ScaleType", bundle.getString("ScaleType")); - } else if ("SubjectActivity".equals(to)) { - intent.putExtra("id", bundle.getString("id")); - intent.putExtra("name", bundle.getString("name")); - } else if ("SuggestionActivity".equals(to)) { - intent.putExtra("content", bundle.getString("content")); - } - if ("NewsActivity".equals(to)) { - intent.putExtra("to", "NewsDetailActivity"); - } else if ("GameDetailsActivity".equals(to)) { - intent.putExtra("to", "GameDetailActivity"); - } else { - intent.putExtra("to", to); - } - } - } diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index fa744797c0..b2e23d83ef 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -56,7 +56,11 @@ public class SubjectActivity extends BaseActivity { super.onCreate(savedInstanceState); View contentView = View.inflate(this, R.layout.activity_subject, null); - init(contentView, getIntent().getStringExtra("name")); + String name = getIntent().getStringExtra("name"); + if (getIntent().getBundleExtra("data") != null) { + name = getIntent().getBundleExtra("data").getString("name"); + } + init(contentView, name); reuse_no_connection.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index a2cf2a3c59..700bdf4188 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -87,6 +87,9 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener }); String content = getIntent().getStringExtra("content"); + if (getIntent().getBundleExtra("data") != null) { + content = getIntent().getBundleExtra("data").getString("content"); + } if (!TextUtils.isEmpty(content)) { et_suggest_content.setText(content); et_suggest_content.setSelection(et_suggest_content.getText().length()); diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index 08cc354484..a669390ccc 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -1,6 +1,5 @@ package com.gh.gamecenter; -import android.content.Intent; import android.content.res.Configuration; import android.graphics.drawable.Animatable; import android.net.Uri; @@ -97,10 +96,14 @@ public class ViewImageActivity extends BaseActivity implements protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Intent intent = getIntent(); - urls = intent.getStringArrayListExtra("urls"); - int current = intent.getIntExtra("current", 0); - scaleType = intent.getStringExtra("ScaleType"); + urls = getIntent().getStringArrayListExtra("urls"); + int current = getIntent().getIntExtra("current", 0); + scaleType = getIntent().getStringExtra("ScaleType"); + if (getIntent().getBundleExtra("data") != null) { + urls = getIntent().getBundleExtra("data").getStringArrayList("urls"); + current = getIntent().getBundleExtra("data").getInt("current", 0); + scaleType = getIntent().getBundleExtra("data").getString("ScaleType"); + } if (savedInstanceState != null) { current = savedInstanceState.getInt("currentItem", 0); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java index e992764d32..7f5d7e7a0a 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java @@ -7,6 +7,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.GameUtils; @@ -17,7 +18,7 @@ import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.listener.OnCallBackListener; import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.DataCollectionManager; +import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -25,8 +26,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CountDownLatch; import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Action1; import rx.schedulers.Schedulers; /** @@ -55,20 +58,18 @@ public class ConcernAdapter extends RecyclerView.Adapter { } } - private int cCount; - - private void addConcernCount() { - synchronized (ConcernActivity.class) { - cCount++; - } - } - private void initConcernGame() { final List result = new ArrayList<>(); - final int count = concernList.size(); - cCount = 0; - for (int i = 0; i < count; i++) { - RetrofitManager.getApi().getGameDigest(concernList.get(i).getId()) + + final CountDownLatch latch = ObservableUtil.latch(concernList.size(), new Action1() { + @Override + public void call(Object o) { + processingConcernGame(result); + } + }); + + for (ConcernInfo concernInfo : concernList) { + RetrofitManager.getApi().getGameDigest(concernInfo.getId()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response() { @@ -76,18 +77,12 @@ public class ConcernAdapter extends RecyclerView.Adapter { public void onResponse(GameEntity response) { result.add(response); - addConcernCount(); - if (cCount == count) { - processingConcernGame(result); - } + latch.countDown(); } @Override public void onFailure(Throwable e) { - addConcernCount(); - if (cCount == count) { - processingConcernGame(result); - } + latch.countDown(); } }); } @@ -134,11 +129,8 @@ public class ConcernAdapter extends RecyclerView.Adapter { kv.put("状态", "取消关注"); DataUtils.onEvent(context, "游戏关注", concernInfo.getGameName(), kv); - Map map = new HashMap<>(); - map.put("game", concernInfo.getGameName()); - map.put("game_id", concernInfo.getId()); - map.put("type", "取消关注"); - DataCollectionManager.onEvent(context, "concern", map); + DataCollectionUtils.uploadConcern(context, + concernInfo.getGameName(), concernInfo.getId(), "取消关注"); concernList.remove(holder.getPosition()); notifyItemRemoved(holder.getPosition()); @@ -172,12 +164,7 @@ public class ConcernAdapter extends RecyclerView.Adapter { kv.put("位置", String.valueOf(holder.getPosition() + 1)); DataUtils.onEvent(context, "点击", "我的关注-列表", kv); - Map map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "我的关注"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "我的关注", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(我的关注-列表)"); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java index fb9a5aafe9..3715f63025 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java @@ -7,6 +7,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.GameUtils; import com.gh.gamecenter.ConcernActivity; @@ -16,7 +17,7 @@ import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.listener.OnCallBackListener; import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.DataCollectionManager; +import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -24,8 +25,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CountDownLatch; import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Action1; import rx.schedulers.Schedulers; /** @@ -52,19 +55,17 @@ public class ConcernRecommendAdapter extends RecyclerView.Adapter installedList = concernManager.getInstalledGame(); - final int size = installedList.size(); - count = 0; + + final CountDownLatch latch = ObservableUtil.latch(installedList.size(), new Action1() { + @Override + public void call(Object o) { + initRecommendGame(); + } + }); + for (ConcernInfo concernInfo : installedList) { RetrofitManager.getApi().getGameDigest(concernInfo.getId()) .subscribeOn(Schedulers.io()) @@ -76,18 +77,12 @@ public class ConcernRecommendAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("type", "关注"); - DataCollectionManager.onEvent(context, "concern", map); + DataCollectionUtils.uploadConcern(context, + gameEntity.getName(), gameEntity.getId(), "关注"); concernManager.addByEntity(gameEntity); @@ -179,12 +171,7 @@ public class ConcernRecommendAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "推荐"); - map.put("page", "我的关注"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "推荐", "我的关注", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(我的关注-推荐)"); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java index 08c160b92a..e242b9f9b5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java @@ -10,6 +10,7 @@ import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.Toast; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.NewsUtils; @@ -21,7 +22,6 @@ import com.gh.gamecenter.adapter.viewholder.GameNewsTypeListViewHolder; import com.gh.gamecenter.adapter.viewholder.NewsFooterViewHolder; import com.gh.gamecenter.adapter.viewholder.NewsTextViewHolder; import com.gh.gamecenter.entity.NewsEntity; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -202,12 +202,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); DataUtils.onEvent(context, "点击", "游戏新闻详情", kv); - Map map = new HashMap<>(); - map.put("location", newsType); - map.put("page", "游戏新闻详情"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, newsType, "游戏新闻详情", newsEntity.getTitle()); // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index 36a6d90563..f7e99f48b0 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -11,33 +11,20 @@ import android.view.View; import android.view.ViewGroup; import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.common.util.DataLogUtils; import com.gh.common.util.DataUtils; -import com.gh.common.util.DeviceUtils; import com.gh.common.util.GameUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.NewsUtils; -import com.gh.common.util.PackageUtils; -import com.gh.common.util.TokenUtils; -import com.gh.common.util.Utils; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.entity.SlideEntity; -import com.gh.gamecenter.retrofit.Response; -import com.gh.gamecenter.retrofit.RetrofitManager; - -import org.json.JSONObject; import java.util.HashMap; import java.util.List; import java.util.Map; -import okhttp3.MediaType; -import okhttp3.RequestBody; -import okhttp3.ResponseBody; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; - /** * ImagePagerAdapter * @@ -104,7 +91,8 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { DataUtils.onEvent(context, "点击", "游戏-插件-滚动图", kv); // 首页轮播图数据统计 - statLunbotuData(getPosition(position)); + DataLogUtils.uploadLunbotuLog(context, slideEntity.getType(), + slideEntity.getName(), String.valueOf(getPosition(position) + 1)); if ("game".equals(slideEntity.getType())) { String entrance = "(游戏-插件:滚动图[" @@ -138,37 +126,6 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { return view; } - // 首页轮播图数据统计 - public void statLunbotuData(int position) { - SlideEntity slideEntity = slideList.get(position); - - Map map = new HashMap<>(); - map.put("location", String.valueOf(position + 1)); - map.put("type", slideEntity.getType()); - map.put("title", slideEntity.getName()); - map.put("form", "click"); - - String version = PackageUtils.getVersion(context); - String user = DeviceUtils.getDeviceID(context); - String channel = (String) PackageUtils.getMetaData(context, context.getPackageName(), "TD_CHANNEL_ID"); - map.put("version", version); - map.put("user", user); - map.put("device_id", TokenUtils.getDeviceId(context)); - map.put("channel", channel); - Map params = new HashMap<>(); - params.put("topic", "lunbotu"); - params.put("source", "GH-ASSIST-Client"); - params.put("time", String.valueOf(Utils.getTime(context))); - params.put("content", new JSONObject(map).toString()); - - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - new JSONObject(params).toString()); - RetrofitManager.getData().postLog(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response()); - } - /** * @return the isInfiniteLoop */ diff --git a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java index 7c8660a6d5..f8da81696d 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -14,6 +14,7 @@ import android.widget.LinearLayout; import com.gh.common.constant.Config; import com.gh.common.util.ConcernContentUtils; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.NewsUtils; @@ -36,7 +37,6 @@ import com.gh.gamecenter.db.VoteDao; import com.gh.gamecenter.db.info.VoteInfo; import com.gh.gamecenter.entity.CommentEntity; import com.gh.gamecenter.entity.ConcernEntity; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.VisitManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.OkHttpCache; @@ -403,11 +403,7 @@ public class MessageDetailAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("page", "消息详情"); - map.put("news", mConcernEntity.getTitle()); - map.put("news_id", mConcernEntity.getId()); - DataCollectionManager.onEvent(mContext, "click-item", map); + DataCollectionUtils.uploadClick(mContext, "详情", "消息详情", mConcernEntity.getTitle()); // 统计阅读量 statNewsViews(mConcernEntity.getId()); @@ -621,7 +617,6 @@ public class MessageDetailAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - if ("下载".equals(method)) { - map.put("method", "正常"); - } else { - map.put("method", method); - } - map.put("platform", PlatformUtils.getInstance(context) - .getPlatformName(apkEntity.getPlatform())); - map.put("status", "开始"); - map.put("location", location); - map.put("entrance", entrance); - map.put("btn_status", method); - map.put("network", NetworkUtils.getConnectedType(context)); - DataCollectionManager.onEvent(context, "download", map); - DownloadManager.createDownload(context, apkEntity, gameEntity, method, entrance, location); DownloadManager.getInstance(context).putStatus(apkEntity.getUrl(), "downloading"); @@ -448,19 +430,6 @@ public class PlatformAdapter extends RecyclerView.Adapter { kv.put("状态", "下载开始"); DataUtils.onEvent(context, "游戏更新", gameEntity.getName(), kv); - Map map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("method", "更新"); - map.put("platform", PlatformUtils.getInstance(context) - .getPlatformName(apkEntity.getPlatform())); - map.put("status", "开始"); - map.put("location", location); - map.put("entrance", entrance); - map.put("btn_status", "更新"); - map.put("network", NetworkUtils.getConnectedType(context)); - DataCollectionManager.onEvent(context, "download", map); - DownloadManager.createDownload(context, apkEntity, gameEntity, "更新", entrance, location); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java index da38657fa9..f11e79f47f 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java @@ -7,6 +7,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; @@ -22,7 +23,6 @@ import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.manager.PackageManager; @@ -177,12 +177,7 @@ public class PluginAdapter extends RecyclerView.Adapter kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); DataUtils.onEvent(context, "点击", "可以插件化的游戏", kv); - Map map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "可以插件化的游戏"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "可以插件化的游戏", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity.getId(), entrance + "+(可以插件化的游戏)"); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java index 0d106b70da..929ada98ea 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java @@ -9,6 +9,7 @@ import android.view.ViewGroup; import android.widget.Toast; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; @@ -24,7 +25,6 @@ import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -67,6 +67,12 @@ public class SubjectAdapter extends RecyclerView.Adapter(); @@ -81,7 +87,7 @@ public class SubjectAdapter extends RecyclerView.Adapter, List>() { @Override @@ -114,11 +120,12 @@ public class SubjectAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", name); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", name, gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(" + name + ")"); } @@ -377,12 +379,7 @@ public class SubjectAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", name); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", name, gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(" + name + ")"); } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java index 91c1282f63..fe9e7ef272 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java @@ -161,6 +161,10 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen String path = getActivity().getIntent().getStringExtra("path"); url = getActivity().getIntent().getStringExtra("url"); + if (getActivity().getIntent().getBundleExtra("data") != null) { + path = getActivity().getIntent().getBundleExtra("data").getString("path"); + url = getActivity().getIntent().getBundleExtra("data").getString("url"); + } isScroll = false; @@ -388,12 +392,12 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen }); } } else { - for (int i = 0, size = adapter.getDownloadingList().size(); i < size; i++) { - DownloadManager.getInstance(getActivity()).put(adapter.getDownloadingList().get(i).getUrl(), + for (DownloadEntity downloadEntity : adapter.getDownloadingList()) { + DownloadManager.getInstance(getActivity()).put(downloadEntity.getUrl(), System.currentTimeMillis()); Message msg = Message.obtain(); msg.what = Constants.PAUSE_DOWNLOAD_TASK; - msg.obj = adapter.getDownloadingList().get(i).getUrl(); + msg.obj = downloadEntity.getUrl(); DownloadManager.getInstance(getActivity()).sendMessageDelayed(msg, 1000); } downloadmanager_tv_allstart.setText("全部开始"); @@ -404,14 +408,14 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen } private void allStart() { - for (int i = 0, size = adapter.getDownloadingList().size(); i < size; i++) { - DownloadManager.getInstance(getActivity()).put(adapter.getDownloadingList().get(i).getUrl(), + for (DownloadEntity downloadEntity : adapter.getDownloadingList()) { + DownloadManager.getInstance(getActivity()).put(downloadEntity.getUrl(), System.currentTimeMillis()); Message msg = Message.obtain(); msg.what = Constants.CONTINUE_DOWNLOAD_TASK; - msg.obj = adapter.getDownloadingList().get(i).getUrl(); + msg.obj = downloadEntity.getUrl(); DownloadManager.getInstance(getActivity()).sendMessageDelayed(msg, 1000); - adapter.getStatusMap().put(adapter.getDownloadingList().get(i).getUrl(), "downloading"); + adapter.getStatusMap().put(downloadEntity.getUrl(), "downloading"); } downloadmanager_tv_allstart.setText("全部暂停"); downloadmanager_tv_allstart.setTextColor(getActivity().getResources().getColor(R.color.btn_gray)); diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java index 3a60916b47..49f33a426a 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -380,10 +380,10 @@ public class GameDownloadFragmentAdapter extends RecyclerView.Adapter packages = getInstalledList(); if (packages.size() != 0) { - final int count = packages.size(); - mCount = 0; + final CountDownLatch latch = ObservableUtil.latch(packages.size(), new Action1() { + @Override + public void call(Object o) { + processingData(); + } + }); + Object gh_id; for (String packageName : packages) { gh_id = PackageUtils.getMetaData(context, packageName, "gh_id"); @@ -185,18 +185,12 @@ public class GameUpdateFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("game", updateEntity.getName()); - map.put("game_id", updateEntity.getId()); - map.put("status", "开始"); - if (updateEntity.isPluggable()) { - map.put("method", "插件化"); - map.put("btn_status", "插件化"); - } else { - map.put("method", "更新"); - map.put("btn_status", "更新"); - } - map.put("platform", PlatformUtils.getInstance(context) - .getPlatformName(updateEntity.getPlatform())); - map.put("location", "游戏更新:列表"); - map.put("entrance", "(下载管理:游戏更新)"); - map.put("network", NetworkUtils.getConnectedType(context)); - DataCollectionManager.onEvent(context, "download", map); - DownloadEntity downloadEntity = new DownloadEntity(); downloadEntity.setUrl(updateEntity.getUrl()); downloadEntity.setName(updateEntity.getName()); @@ -582,12 +558,15 @@ public class GameUpdateFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", subjectEntity.getName() + "-列表"); - map.put("page", "游戏-插件"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, + subjectEntity.getName() + "-列表", "游戏-插件", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-插件:" + subjectEntity.getName() + "-列表)"); } @@ -774,12 +770,8 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", subjectEntity.getName() + "-列表"); - map.put("page", "游戏-插件"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, + subjectEntity.getName() + "-列表", "游戏-插件", gameEntity.getName()); if (gameEntity.isPluggable()) { GameUtils.startGameDetailActivity(context, gameEntity.getId(), "(游戏-插件:" + subjectEntity.getName() + "-列表)"); @@ -833,10 +825,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", name + "-大图"); - map.put("page", "游戏-插件"); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, name + "-大图", "游戏-插件"); if ("game".equals(entity.getType())) { GameUtils.startGameDetailActivity(context, entity.getLink(), "(游戏-插件:" + name + "-大图)"); diff --git a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java index 22eeb0c80d..121e99308d 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java @@ -10,6 +10,7 @@ import android.view.View; import android.view.ViewGroup; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; @@ -31,7 +32,6 @@ import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.SubjectEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -390,12 +390,8 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", subjectEntity.getName() + "-列表"); - map.put("page", "游戏-推荐"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, + subjectEntity.getName() + "-列表", "游戏-推荐", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-推荐:" + subjectEntity.getName() + "-列表)"); } @@ -479,12 +475,8 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", subjectEntity.getName() + "-列表"); - map.put("page", "游戏-推荐"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, + subjectEntity.getName() + "-列表", "游戏-推荐", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-推荐:" + subjectEntity.getName() + "-列表)"); } @@ -551,10 +543,7 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", name + "-大图"); - map.put("page", "游戏-推荐"); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, name + "-大图", "游戏-推荐"); if ("game".equals(entity.getType())) { GameUtils.startGameDetailActivity(context, entity.getLink(), "(游戏-推荐:" + name + "-大图)"); diff --git a/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java index ce81f58adb..f511b0803e 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java @@ -9,6 +9,7 @@ import android.view.ViewGroup; import android.widget.Toast; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; @@ -22,7 +23,6 @@ import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -252,12 +252,7 @@ public class Game3FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "游戏-单机"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "游戏-单机", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-单机)"); } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailAdapter.java index 0e791671dd..1147dd0ee3 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailAdapter.java @@ -17,6 +17,7 @@ import android.widget.Toast; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.common.util.ConcernUtils; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; @@ -35,7 +36,6 @@ import com.gh.gamecenter.entity.ServerEntity; import com.gh.gamecenter.entity.TagEntity; import com.gh.gamecenter.listener.OnCallBackListener; import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -403,12 +403,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter { kv.put("位置", "资讯攻略-全部"); DataUtils.onEvent(context, "点击", "游戏详情", kv); - Map map = new HashMap<>(); - map.put("location", "资讯攻略-全部"); - map.put("page", "游戏详情"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "资讯攻略-全部", "游戏详情", gameEntity.getName()); Intent intent = new Intent(context, GameNewsActivity.class); intent.putExtra("articleTypes", gameDetailEntity.getArticleTypes()); @@ -449,12 +444,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter { kv.put("位置", String.valueOf(ii + 1)); DataUtils.onEvent(context, "点击", "游戏详情-资讯攻略", kv); - Map map = new HashMap<>(); - map.put("location", "资讯攻略"); - map.put("page", "游戏详情"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "资讯攻略", "游戏详情", newsEntity.getTitle()); // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); @@ -644,11 +634,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter { kv2.put("点击", "关注"); DataUtils.onEvent(context, "插件数据", gameEntity.getName(), kv2); - Map map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("type", "关注"); - DataCollectionManager.onEvent(context, "concern", map); + DataCollectionUtils.uploadConcern(context, gameEntity.getName(), gameEntity.getId(), "关注"); concernManager.addByEntity(gameEntity); concern.setText("取消关注"); @@ -672,11 +658,8 @@ public class GameDetailAdapter extends RecyclerView.Adapter { kv.put("状态", "取消关注"); DataUtils.onEvent(context, "游戏关注", gameEntity.getName(), kv); - Map map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("type", "关注"); - DataCollectionManager.onEvent(context, "concern", map); + DataCollectionUtils.uploadConcern(context, + gameEntity.getName(), gameEntity.getId(), "取消关注"); concernManager.deleteConcern(gameEntity.getId()); concern.setText("关注"); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailNewsServerAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailNewsServerAdapter.java index 004898cf03..c2d8312f2e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailNewsServerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailNewsServerAdapter.java @@ -12,7 +12,6 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.entity.ServerEntity; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.List; import java.util.Locale; diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java index aff9d83fd7..b701113e11 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java @@ -7,10 +7,10 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.ViewImageActivity; -import com.gh.gamecenter.manager.DataCollectionManager; import java.util.ArrayList; import java.util.HashMap; @@ -18,6 +18,7 @@ import java.util.Map; /** * Created by LGT on 2016/9/8. + * */ public class GameGalleryAdapter extends RecyclerView.Adapter { @@ -47,10 +48,7 @@ public class GameGalleryAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "游戏介绍"); - map.put("page", "游戏详情"); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "游戏介绍", "游戏详情"); Intent intent = new Intent(context, ViewImageActivity.class); intent.putExtra("urls", gallery); diff --git a/app/src/main/java/com/gh/gamecenter/manager/FilterManager.java b/app/src/main/java/com/gh/gamecenter/manager/FilterManager.java index 3b025983e5..0d38eb3b6c 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/FilterManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/FilterManager.java @@ -9,6 +9,9 @@ import com.gh.gamecenter.db.info.FilterInfo; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; @@ -18,34 +21,38 @@ import rx.schedulers.Schedulers; public class FilterManager { private FilterDao dao; - private SharedPreferences sp; + private Context context; public FilterManager(Context context) { + this.context = context; dao = new FilterDao(context); - sp = context.getSharedPreferences(Config.PREFERENCE, - Context.MODE_PRIVATE); - } - - public void addFilter(String packageName) { - dao.add(new FilterInfo(packageName)); } public void addAllFilter(List list) { dao.addAll(list); } - public void deleteGame(String packageName) { - dao.delete(packageName); - } - - public List getAllGame() { - return dao.getAll(); - } - public boolean isFilter(String packageName) { return dao.isFilter(packageName); } + public void loadFilter() { + try { + List list = new ArrayList<>(); + BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open("package.txt"))); + String line; + while ((line = reader.readLine()) != null) { + list.add(new FilterInfo(line)); + } + reader.close(); + addAllFilter(list); + SharedPreferences sp = context.getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); + sp.edit().putBoolean("isLoadFilter", true).apply(); + } catch (IOException e) { + e.printStackTrace(); + } + } + public void getFilterFromServer(final String today) { RetrofitManager.getApi().getPackageUnused(dao.getCount()) .subscribeOn(Schedulers.io()) @@ -57,12 +64,15 @@ public class FilterManager { for (String packageName : response) { list.add(new FilterInfo(packageName)); } - dao.addAll(list); - sp.edit().putString("filter_time", today).apply(); - if (list.size() == 500){ + addAllFilter(list); + if (list.size() == 500) { getFilterFromServer(today); + } else { + SharedPreferences sp = context.getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); + sp.edit().putString("filter_time", today).apply(); } } }); } + } diff --git a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java new file mode 100644 index 0000000000..98abfe0d65 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java @@ -0,0 +1,313 @@ +package com.gh.gamecenter.manager; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.text.Html; +import android.view.View; +import android.view.Window; +import android.widget.ProgressBar; +import android.widget.TextView; +import android.widget.Toast; + +import com.gh.base.AppController; +import com.gh.common.constant.Config; +import com.gh.common.util.DataLogUtils; +import com.gh.common.util.DataUtils; +import com.gh.common.util.DialogUtils; +import com.gh.common.util.FileUtils; +import com.gh.common.util.MD5Utils; +import com.gh.common.util.PackageUtils; +import com.gh.common.util.SpeedUtils; +import com.gh.common.util.Utils; +import com.gh.download.DataWatcher; +import com.gh.download.DownloadEntity; +import com.gh.download.DownloadManager; +import com.gh.download.DownloadStatus; +import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.AppEntity; +import com.gh.gamecenter.entity.GameUpdateEntity; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +import retrofit2.adapter.rxjava.HttpException; +import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Func1; +import rx.schedulers.Schedulers; + +/** + * Created by LGT on 2016/12/8. + * 助手更新 工具类 + */ +public class UpdateManager { + + private Context context; + + private AppEntity appEntity; + + private Dialog downloadDialog; + private ProgressBar app_pb_progress; + private TextView app_tv_speed; + private TextView app_tv_percent; + + private Dialog loadingDialog; + + private boolean isShowDownload; + private boolean isChecking; + + private UpdateManager(Context context) { + this.context = context; + this.isShowDownload = false; + this.isChecking = false; + this.loadingDialog = null; + } + + public static UpdateManager getInstance(Context context) { + return new UpdateManager(context); + } + + // 检查更新 + public void checkUpdate(final boolean isCheck) { + if (isChecking) { + return; + } + isChecking = true; + if (!isCheck) { + loadingDialog = DialogUtils.showWaitDialog(context, "检查更新中..."); + } + String TD_CHANNEL_ID = (String) PackageUtils.getMetaData(context, context.getPackageName(), "TD_CHANNEL_ID"); + RetrofitManager.getApi().getUpdate(PackageUtils.getVersion(context), TD_CHANNEL_ID) + .map(new Func1() { + @Override + public String call(AppEntity appEntity) { + String md5 = null; + + float version = Float.valueOf(appEntity.getVersion()); + float currentVersion = Float.valueOf(PackageUtils.getVersion(context)); + if (version > currentVersion) { + // 助手有更新 + UpdateManager.this.appEntity = appEntity; + + // 添加到更新列表 + GameUpdateEntity gameUpdateEntity = new GameUpdateEntity(); + gameUpdateEntity.setName("光环助手V" + appEntity.getVersion()); + gameUpdateEntity.setPackageName(context.getPackageName()); + gameUpdateEntity.setSize(appEntity.getSize()); + gameUpdateEntity.setVersion(appEntity.getVersion()); + gameUpdateEntity.setUrl(appEntity.getUrl()); + gameUpdateEntity.setPlatform("官方版"); + gameUpdateEntity.setId("5618b86e8ab49e17088b4575"); + PackageManager.addUpdate(0, gameUpdateEntity); + + if (isCheck) { + if (appEntity.isForce()) { + // 强制更新 + md5 = MD5Utils.getUpdateMD5(appEntity.getUrl(), appEntity.getContent()); + } else { + // 非强制更新 + if ("EVERY_TIME_OPEN".equals(appEntity.getAlert())) { + // 每次都提示 + md5 = MD5Utils.getUpdateMD5(appEntity.getUrl(), appEntity.getContent()); + } else if (!"NEVER".equals(appEntity.getAlert())){ + // 一天提示一次 + SharedPreferences sp = context.getSharedPreferences( + Config.PREFERENCE, Context.MODE_PRIVATE); + String showUpdateTime = sp.getString("show_update_tiem", null); + SimpleDateFormat format = new SimpleDateFormat( + "yyyy-MM-dd", Locale.getDefault()); + String today = format.format(new Date()); + if (!today.equals(showUpdateTime)) { + sp.edit().putString("show_update_tiem", today).apply(); + md5 = MD5Utils.getUpdateMD5(appEntity.getUrl(), appEntity.getContent()); + } + } + } + } else { + md5 = MD5Utils.getUpdateMD5(appEntity.getUrl(), appEntity.getContent()); + } + } + + return md5; + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response() { + @Override + public void onResponse(String response) { + isChecking = false; + if (loadingDialog != null) { + loadingDialog.dismiss(); + } + if (response != null) { + showUpdateDialog(response); + } else if (!isCheck) { + Toast.makeText(context, "已是最新版本", Toast.LENGTH_SHORT).show(); + } + } + + @Override + public void onFailure(Throwable e) { + isChecking = false; + if (loadingDialog != null) { + loadingDialog.dismiss(); + } + if (!isCheck) { + if (e instanceof HttpException) { + HttpException exception = (HttpException) e; + if (exception.code() == 304) { + Toast.makeText(context, "您的光环助手已是最新版本", Toast.LENGTH_SHORT).show(); + return; + } + } + + Toast.makeText(context, "检查更新失败", Toast.LENGTH_SHORT).show(); + } + } + }); + } + + // 显示助手有更新提示框 + private void showUpdateDialog(final String md5) { + final Dialog updateDialog = new Dialog(context); + + View view = View.inflate(context, R.layout.app_update_hint_dialog, null); + + TextView content = (TextView) view.findViewById(R.id.updeta_content); + content.setText(Html.fromHtml(appEntity.getContent())); + + TextView versison = (TextView) view.findViewById(R.id.update_app_version); + versison.setText(String.format("光环助手V%s更新内容:", appEntity.getVersion())); + + TextView size = (TextView) view.findViewById(R.id.update_app_size); + size.setText(String.format("大小:%s", appEntity.getSize())); + + view.findViewById(R.id.update_cannel).setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View v) { + if (appEntity.isForce()) { + AppController.getInstance().finishActivity(); + } else { + updateDialog.dismiss(); + } + } + }); + + view.findViewById(R.id.updeta_confirm).setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View v) { + updateDialog.dismiss(); + String path = FileUtils.getDownloadPath(context, + "光环助手V" + appEntity.getVersion() + "_" + md5 + ".apk"); + File file = new File(path); + if (file.exists() && file.length() > 0) { + DataLogUtils.uploadUpgradeLog(context, "install"); //上传更新安装数据 + context.startActivity(PackageUtils.getInstallIntent(path)); + } else { + DataUtils.onEvent(context, "软件更新", "下载开始"); + showDownloadDialog(md5); + } + } + }); + + if (appEntity.isForce()) { + updateDialog.setCanceledOnTouchOutside(false); + updateDialog.setCancelable(false); + } + updateDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + updateDialog.setContentView(view); + updateDialog.show(); + + DataLogUtils.uploadUpgradeLog(context, "notice"); //上传更新通知弹窗数据 + } + + private DataWatcher dataWatcher = new DataWatcher() { + @Override + public void onDataChanged(DownloadEntity downloadEntity) { + if (downloadEntity.getName().contains("光环助手") && isShowDownload) { + app_tv_speed.setText(String.format("%s(剩%s)", SpeedUtils.getSpeed(downloadEntity.getSpeed()), + SpeedUtils.getRemainTime(downloadEntity.getSize(), + downloadEntity.getProgress(), downloadEntity.getSpeed() * 1024))); + app_pb_progress.setProgress((int) (downloadEntity.getPercent() * 10)); + app_tv_percent.setText(String.format( + Locale.getDefault(), "%s%%", String.valueOf(downloadEntity.getPercent()))); + if (DownloadStatus.done.equals(downloadEntity.getStatus())) { + DownloadManager.getInstance(context).cancel(downloadEntity.getUrl(), false); + if (downloadDialog != null) { + downloadDialog.dismiss(); + } + if (appEntity != null && appEntity.isForce()) { + AppController.getInstance().finishActivity(); + } + } + } + } + }; + + private void showDownloadDialog(String md5) { + downloadDialog = new Dialog(context); + + View view = View.inflate(context, R.layout.app_updating_dialog, null); + + app_pb_progress = (ProgressBar) view.findViewById(R.id.app_pb_progress); + app_tv_speed = (TextView) view.findViewById(R.id.app_tv_speed); + app_tv_percent = (TextView) view.findViewById(R.id.app_tv_percent); + + view.findViewById(R.id.app_tv_cancel).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DownloadManager.getInstance(context).cancel(appEntity.getUrl()); + if (appEntity.isForce()) { + AppController.getInstance().finishActivity(); + } else { + downloadDialog.dismiss(); + } + } + }); + + downloadDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + DownloadManager.getInstance(context).removeObserver(dataWatcher); + isShowDownload = false; + } + }); + + downloadDialog.setCanceledOnTouchOutside(false); + downloadDialog.setCancelable(false); + downloadDialog.closeOptionsMenu(); + downloadDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + downloadDialog.setContentView(view); + downloadDialog.show(); + + isShowDownload = true; + + DownloadManager.getInstance(context).addObserver(dataWatcher); + + // 添加到下载列表 + String path = FileUtils.getDownloadPath(context, "光环助手V" + appEntity.getVersion() + "_" + md5 + ".apk"); + File file = new File(path); + if (file.exists() && file.delete()) { + Utils.log(file.getName() + " file delete success."); + } + + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(appEntity.getUrl()); + downloadEntity.setName("光环助手V" + appEntity.getVersion()); + downloadEntity.setPath(path); + downloadEntity.setPlatform("官方版"); + downloadEntity.setPackageName(context.getPackageName()); + DownloadManager.getInstance(context).cancel(downloadEntity.getUrl(), false); + DownloadManager.getInstance(context).pauseAll(); + DownloadManager.getInstance(context).add(downloadEntity); + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java index e8083b3e65..761c0a1831 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java @@ -37,6 +37,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CountDownLatch; import butterknife.BindView; import butterknife.OnClick; @@ -248,14 +249,6 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On handler.postDelayed(runnable, 1000); } - private int count; - - private void addCount() { - synchronized (News1Fragment.class) { - count++; - } - } - // 推荐关注改为手机安装的游戏+光环助手 private void initInstallGame() { recommendGameList.clear();//清除上一次记录 @@ -293,13 +286,17 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On }, new Action1>() { @Override public void call(final List installedList) { - count = 0; - final List gameList = new ArrayList<>(); - final int size = installedList.size() + 1; + final CountDownLatch latch = ObservableUtil.latch(installedList.size() + 1, new Action1() { + @Override + public void call(Object o) { + initRecommendConcern(installedList, gameList); + } + }); + String gameId; - for (int i = 0; i < size; i++) { + for (int i = 0, size = installedList.size() + 1; i < size; i++) { if (i == size - 1) { gameId = "5618b86e8ab49e17088b4575"; // 光环助手ID } else { @@ -316,18 +313,13 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On } else { gameList.add(response); } - addCount(); - if (count == size) { - initRecommendConcern(installedList, gameList); - } + + latch.countDown(); } @Override public void onFailure(Throwable e) { - addCount(); - if (count == size) { - initRecommendConcern(installedList, gameList); - } + latch.countDown(); } }); } diff --git a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java index 0d2ef4fd6e..b7b1fefdf3 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -15,6 +15,7 @@ import com.gh.base.AppController; import com.gh.common.constant.ItemViewType; import com.gh.common.util.ConcernContentUtils; import com.gh.common.util.ConcernUtils; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.MD5Utils; @@ -36,7 +37,6 @@ import com.gh.gamecenter.entity.ViewsEntity; import com.gh.gamecenter.listener.OnCallBackListener; import com.gh.gamecenter.manager.CommentManager; import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.VisitManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.ObservableUtil; @@ -582,12 +582,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "资讯-关注"); - map.put("news", concernEntity.getTitle()); - map.put("news_id", concernEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "资讯-关注", concernEntity.getTitle()); //统计阅读量 statNewsViews(concernEntity, viewHolder.getPosition()); diff --git a/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java index 01cec8b09e..9b85afe08d 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java @@ -10,6 +10,7 @@ import android.widget.LinearLayout; import android.widget.Toast; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; @@ -23,7 +24,6 @@ import com.gh.gamecenter.adapter.viewholder.NewsImage3ViewHolder; import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.entity.ViewsEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.VisitManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.ObservableUtil; @@ -249,12 +249,7 @@ public class News2FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "资讯-资讯"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); //统计阅读量 statNewsViews(newsEntity, viewHolder.getPosition()); @@ -315,12 +310,7 @@ public class News2FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "资讯-资讯"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); //统计阅读量 statNewsViews(newsEntity, viewHolder.getPosition()); @@ -367,12 +357,7 @@ public class News2FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "资讯-资讯"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); //统计阅读量 statNewsViews(newsEntity, viewHolder.getPosition()); diff --git a/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java index 3f4b21836f..89715445c3 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java @@ -10,6 +10,7 @@ import android.widget.LinearLayout; import android.widget.Toast; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; @@ -23,7 +24,6 @@ import com.gh.gamecenter.adapter.viewholder.NewsImage3ViewHolder; import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.entity.ViewsEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.VisitManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.ObservableUtil; @@ -247,12 +247,7 @@ public class News3FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "资讯-原创"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "资讯-原创", newsEntity.getTitle()); //统计阅读量 statNewsViews(newsEntity, viewHolder.getPosition()); @@ -313,12 +308,7 @@ public class News3FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "资讯-原创"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "资讯-原创", newsEntity.getTitle()); //统计阅读量 statNewsViews(newsEntity, viewHolder.getPosition()); @@ -365,12 +355,7 @@ public class News3FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "资讯-原创"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "资讯-原创", newsEntity.getTitle()); //统计阅读量 statNewsViews(newsEntity, viewHolder.getPosition()); diff --git a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java index 409b20e738..7a371e1b42 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java @@ -10,6 +10,7 @@ import android.view.ViewGroup; import android.widget.Toast; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.NewsUtils; @@ -22,7 +23,6 @@ import com.gh.gamecenter.adapter.viewholder.NewsImageViewHolder; import com.gh.gamecenter.adapter.viewholder.NewsTextViewHolder; import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -292,12 +292,7 @@ public class News4FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "今天-大图"); - map.put("page", "资讯-攻略"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "今天-大图", "资讯-攻略", newsEntity.getTitle()); // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); @@ -373,12 +368,7 @@ public class News4FragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", entrance); - map.put("page", "资讯-攻略"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, entrance, "资讯-攻略", newsEntity.getTitle()); // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java index 8dc7389ef8..a77e638bbd 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -19,6 +19,7 @@ import android.widget.Toast; import com.gh.common.constant.Config; import com.gh.common.util.ConcernUtils; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.GameUtils; @@ -37,7 +38,6 @@ import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.gamedetail.GameDetailTopViewHolder; import com.gh.gamecenter.listener.OnCallBackListener; import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -261,12 +261,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); DataUtils.onEvent(context, "点击", "新闻详情-相关推荐", kv); - Map map = new HashMap<>(); - map.put("location", "相关推荐"); - map.put("page", "新闻详情"); - map.put("news", newsEntity.getTitle()); - map.put("news_id", newsEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "相关推荐", "新闻详情", newsEntity.getTitle()); // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); @@ -318,11 +313,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { kv2.put("点击", "关注"); DataUtils.onEvent(context, "插件数据", gameEntity.getName(), kv2); - Map map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("type", "关注"); - DataCollectionManager.onEvent(context, "concern", map); + DataCollectionUtils.uploadConcern(context, gameEntity.getName(), gameEntity.getId(), "关注"); concernManager.addByEntity(gameEntity); concern.setText("取消关注"); @@ -343,11 +334,6 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { kv2.put("点击", "取消关注"); DataUtils.onEvent(context, "插件数据", gameEntity.getName(), kv2); - Map map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("type", "取消关注"); - DataCollectionManager.onEvent(context, "concern", map); DialogUtils.showCancelDialog(context, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { @@ -355,11 +341,8 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { kv.put("状态", "取消关注"); DataUtils.onEvent(context, "游戏关注", gameEntity.getName(), kv); - Map map = new HashMap<>(); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("type", "关注"); - DataCollectionManager.onEvent(context, "concern", map); + DataCollectionUtils.uploadConcern(context, + gameEntity.getName(), gameEntity.getId(), "取消关注"); concernManager.deleteConcern(gameEntity.getId()); concern.setText("关注"); @@ -382,14 +365,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { kv.put("位置", "游戏信息"); DataUtils.onEvent(context, "点击", "新闻详情", kv); - Map map = new HashMap<>(); - map.put("location", "游戏信息"); - map.put("page", "新闻详情"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("news", newsDetailEntity.getTitle()); - map.put("news_id", newsDetailEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "游戏信息", "新闻详情", newsDetailEntity.getTitle()); GameUtils.startGameDetailActivity(context, gameEntity.getId(), entrance + "+(新闻详情)"); } diff --git a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java index c71886d171..82a2ca3865 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java @@ -8,6 +8,7 @@ import android.view.View; import android.view.ViewGroup; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; @@ -23,8 +24,8 @@ import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.listener.OnCallBackListener; import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.GameManager; +import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -32,8 +33,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CountDownLatch; import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Action1; import rx.schedulers.Schedulers; /** @@ -73,18 +76,16 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter result = new ArrayList<>(); - final int size = concernList.size(); - count = 0; + + final CountDownLatch latch = ObservableUtil.latch(concernList.size(), new Action1() { + @Override + public void call(Object o) { + processingConcernGame(result); + } + }); + for (int i = 0; i < concernList.size(); i++) { RetrofitManager.getApi().getGameDigest(concernList.get(i).getId()) .subscribeOn(Schedulers.io()) @@ -94,18 +95,12 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "我的光环-已关注"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "我的光环-已关注", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(我的光环-已关注)"); } diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java index 2c2847bce8..35b78225e4 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java @@ -8,6 +8,7 @@ import android.view.View; import android.view.ViewGroup; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; @@ -26,8 +27,8 @@ import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameInfoEntity; import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.GameManager; +import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -37,8 +38,10 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CountDownLatch; import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Action1; import rx.schedulers.Schedulers; /** @@ -201,20 +204,18 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter ids) { final List result = new ArrayList<>(); - final int size = ids.size(); - count = 0; - for (int i = 0; i < ids.size(); i++) { + + final CountDownLatch latch = ObservableUtil.latch(ids.size(), new Action1() { + @Override + public void call(Object o) { + processingData(result); + } + }); + + for (int i = 0, size = ids.size(); i < ids.size(); i++) { RetrofitManager.getApi().getGameDigest(ids.get(i)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -223,18 +224,12 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("location", "列表"); - map.put("page", "我的光环-已安装"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map); + DataCollectionUtils.uploadClick(context, "列表", "我的光环-已安装", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity.getId(), "(我的光环-已安装)"); } diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index 4ad3bbb760..014aa88a72 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -34,6 +34,7 @@ import android.widget.Toast; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.common.constant.Config; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; @@ -43,7 +44,6 @@ import com.gh.gamecenter.CropImageActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SettingActivity; import com.gh.gamecenter.adapter.FragmentAdapter; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.tencent.stat.StatConfig; @@ -230,12 +230,8 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, public void onClick(View v) { final int id = v.getId(); if (id == R.id.me_iv_top_setting) { - DataUtils.onEvent(getActivity(), "主页", "设置图标"); - - Map map = new HashMap<>(); - map.put("location", "设置图标"); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); + DataUtils.onEvent(getActivity(), "我的光环", "设置图标"); + DataCollectionUtils.uploadClick(getActivity(), "设置图标", "我的光环"); startActivity(new Intent(getActivity(), SettingActivity.class)); } else if (id == R.id.me_tv_top_install @@ -245,23 +241,15 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, || v.getId() == R.id.me_tv_topbar_concern) { me_vp_show.setCurrentItem(1); } else if (id == R.id.me_tv_top_name) { - DataUtils.onEvent(getActivity(), "主页", "用户昵称"); - - Map map = new HashMap<>(); - map.put("location", "用户昵称"); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); + DataUtils.onEvent(getActivity(), "我的光环", "用户昵称"); + DataCollectionUtils.uploadClick(getActivity(), "用户昵称", "我的光环"); if (isLogin) { showModifyNicknameDialog(me_tv_top_name.getText().toString()); } } else if (id == R.id.me_iv_top_icon) { - DataUtils.onEvent(getActivity(), "主页", "用户头像"); - - Map map = new HashMap<>(); - map.put("location", "用户头像"); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); + DataUtils.onEvent(getActivity(), "我的光环", "用户头像"); + DataCollectionUtils.uploadClick(getActivity(), "用户头像", "我的光环"); if (isLogin) { Intent intent = new Intent(Intent.ACTION_PICK, diff --git a/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java index da1551c2b6..d815074edd 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java @@ -27,7 +27,7 @@ public class ActivitySkipReceiver extends BroadcastReceiver { if (clazz != null) { Intent intent1 = new Intent(context, clazz); intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intentControl(intent1, bundle); + intent1.putExtra("data", bundle); context.startActivity(intent1); } } @@ -37,7 +37,7 @@ public class ActivitySkipReceiver extends BroadcastReceiver { intent1.setAction(Intent.ACTION_MAIN); intent1.addCategory(Intent.CATEGORY_LAUNCHER); intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intentControl(intent1, bundle); + intent1.putExtra("data", bundle); context.startActivity(intent1); } } @@ -57,32 +57,4 @@ public class ActivitySkipReceiver extends BroadcastReceiver { return null; } - private void intentControl(Intent intent, Bundle bundle) { - String to = bundle.getString("to"); - if ("NewsActivity".equals(to) || "NewsDetailActivity".equals(to)) { - intent.putExtra("newsId", bundle.getString("newsId")); - intent.putExtra("entrance", bundle.getString("entrance")); - } else if("DownloadManagerActivity".equals(to)) { - intent.putExtra("packageName", bundle.getString("packageName")); - } else if ("GameDetailsActivity".equals(to) || "GameDetailActivity".equals(to)) { - intent.putExtra("gameId", bundle.getString("gameId")); - intent.putExtra("entrance", bundle.getString("entrance")); - } else if ("SubjectActivity".equals(to)) { - intent.putExtra("id", bundle.getString("id")); - intent.putExtra("name", bundle.getString("name")); - intent.putExtra("order", bundle.getBoolean("order")); - } else if ("ViewImageActivity".equals(to)) { - intent.putExtra("urls", bundle.getStringArrayList("urls")); - intent.putExtra("current", bundle.getInt("current",0)); - intent.putExtra("ScaleType", bundle.getString("ScaleType")); - } - if ("NewsActivity".equals(to)) { - intent.putExtra("to", "NewsDetailActivity"); - } else if ("GameDetailsActivity".equals(to)) { - intent.putExtra("to", "GameDetailActivity"); - } else { - intent.putExtra("to", to); - } - } - } diff --git a/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java index 28d7965bb6..12ed9e598c 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java @@ -36,10 +36,10 @@ public class InstallReceiver extends BroadcastReceiver { | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); context.startActivity(intent2); + EventBus.getDefault().post(new EBMiPush("plugin_install", path)); } else { - Intent intent2 = new Intent(context, - DownloadManagerActivity.class); + Intent intent2 = new Intent(context, DownloadManagerActivity.class); intent2.putExtra("currentItem", 0); intent2.putExtra("path", path); intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -50,7 +50,8 @@ public class InstallReceiver extends BroadcastReceiver { Intent intent2 = new Intent(context, SplashScreenActivity.class); intent2.setAction(Intent.ACTION_MAIN); intent2.addCategory(Intent.CATEGORY_LAUNCHER); - intent2.putExtra("from", "plugin_install"); + intent2.putExtra("to", "DownloadManagerActivity"); + intent2.putExtra("currentItem", 0); intent2.putExtra("path", path); intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent2); diff --git a/app/src/main/java/com/gh/gamecenter/receiver/NotificationReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/NotificationReceiver.java index b702c11c74..37a2819410 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/NotificationReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/NotificationReceiver.java @@ -46,7 +46,7 @@ public class NotificationReceiver extends BroadcastReceiver { // 应用正在运行,前台或后台 Intent intent1 = new Intent(context, NewsDetailActivity.class); intent1.putExtra("newsId", jsonObject.get("_id").toString()); - intent1.putExtra("entrance", "小米推送"); + intent1.putExtra("entrance", "(小米推送)"); intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); } else { @@ -54,8 +54,9 @@ public class NotificationReceiver extends BroadcastReceiver { Intent intent1 = new Intent(context, SplashScreenActivity.class); intent1.setAction(Intent.ACTION_MAIN); intent1.addCategory(Intent.CATEGORY_LAUNCHER); - intent1.putExtra("from", "mipush_news"); + intent1.putExtra("to", "NewsDetailActivity"); intent1.putExtra("newsId", jsonObject.get("_id").toString()); + intent1.putExtra("entrance", "(小米推送)"); intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); } @@ -107,8 +108,9 @@ public class NotificationReceiver extends BroadcastReceiver { Intent intent2 = new Intent(context, SplashScreenActivity.class); intent2.setAction(Intent.ACTION_MAIN); intent2.addCategory(Intent.CATEGORY_LAUNCHER); - intent2.putExtra("from", "mipush_plugin"); - intent2.putExtra("data", jsonObject.toString()); + intent2.putExtra("to", "DownloadManagerActivity"); + intent2.putExtra("currentItem", 1); + intent2.putExtra("isPushIntent", true); intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent2); } @@ -125,15 +127,16 @@ public class NotificationReceiver extends BroadcastReceiver { // 应用正在运行,前台或后台 Gson gson = new Gson(); GameEntity gameEntity = gson.fromJson(jsonObject.toString(), GameEntity.class); - GameUtils.startGameDetailActivity(context, gameEntity, "小米推送"); + GameUtils.startGameDetailActivity(context, gameEntity, "(小米推送)"); } else { // 应用未在运行 Intent intent3 = new Intent(context, SplashScreenActivity.class); intent3.setAction(Intent.ACTION_MAIN); intent3.addCategory(Intent.CATEGORY_LAUNCHER); + intent3.putExtra("to", "GameDetailActivity"); + intent3.putExtra("entrance", "(小米推送)"); Gson gson = new Gson(); GameEntity gameEntity = gson.fromJson(jsonObject.toString(), GameEntity.class); - intent3.putExtra("from", "mipush_new_game"); AppController.put("GameEntity", gameEntity); intent3.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent3); @@ -143,7 +146,6 @@ public class NotificationReceiver extends BroadcastReceiver { break; } } catch (JSONException e) { - e.printStackTrace(); } } @@ -159,10 +161,8 @@ public class NotificationReceiver extends BroadcastReceiver { private ArrayList getAllPackageName(Context context) { ArrayList list = new ArrayList<>(); - List packageInfos = context.getPackageManager() - .getInstalledPackages(0); - for (int i = 0, size = packageInfos.size(); i < size; i++) { - PackageInfo packageInfo = packageInfos.get(i); + List packageInfos = context.getPackageManager().getInstalledPackages(0); + for (PackageInfo packageInfo : packageInfos) { if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { list.add(packageInfo.packageName); } diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/ObservableUtil.java b/app/src/main/java/com/gh/gamecenter/retrofit/ObservableUtil.java index 9bf3a0d600..0e16e23921 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/ObservableUtil.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/ObservableUtil.java @@ -1,6 +1,9 @@ package com.gh.gamecenter.retrofit; +import java.util.concurrent.CountDownLatch; + import rx.Observable; +import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.schedulers.Schedulers; @@ -43,4 +46,23 @@ public class ObservableUtil { .subscribe(action1); } + public static CountDownLatch latch(int size, Action1 action1) { + final CountDownLatch latch = new CountDownLatch(size); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + try { + latch.await(); + subscriber.onNext(null); + } catch (InterruptedException e) { + e.printStackTrace(); + } + subscriber.onCompleted(); + } + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(action1); + return latch; + } + } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java index d1532a0d0f..12ae30769e 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java @@ -10,6 +10,7 @@ import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import com.gh.common.constant.Config; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.GameUtils; @@ -20,7 +21,6 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -131,23 +131,14 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("key", key); - map.put("from", "搜索页面"); - map.put("click", gameEntity.getName()); - DataCollectionManager.onEvent(context, "search", map); + DataCollectionUtils.uploadSearch(context, key, "搜索页面", gameEntity.getName()); Map kv = new HashMap<>(); kv.put("名字", gameEntity.getName()); kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); DataUtils.onEvent(context, "点击", "搜索", kv); - Map map2 = new HashMap<>(); - map2.put("location", "列表"); - map2.put("page", "搜索"); - map2.put("game", gameEntity.getName()); - map2.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map2); + DataCollectionUtils.uploadClick(context, "列表", "搜索", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(搜索)"); } @@ -170,11 +161,7 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("key", key); - map.put("from", "搜索页面"); - map.put("click", gameEntity.getName()); - DataCollectionManager.onEvent(context, "search", map); + DataCollectionUtils.uploadSearch(context, key, "搜索页面", gameEntity.getName()); DownloadDialog.getInstance(context) .showPopupWindow(v, gameEntity, "(搜索)", "搜索:" + gameEntity.getName()); diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java index 05bc3a8572..e88bb792fc 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -10,6 +10,7 @@ import android.view.inputmethod.InputMethodManager; import com.gh.common.constant.Config; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.GameUtils; @@ -20,7 +21,6 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -124,23 +124,14 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("key", key); - map.put("from", "搜索页面"); - map.put("click", gameEntity.getName()); - DataCollectionManager.onEvent(context, "search", map); + DataCollectionUtils.uploadSearch(context, key, "搜索页面", gameEntity.getName()); Map kv = new HashMap<>(); kv.put("名字", gameEntity.getName()); kv.put("位置", String.valueOf(holder.getPosition() + 1)); DataUtils.onEvent(context, "点击", "搜索", kv); - Map map2 = new HashMap<>(); - map2.put("location", "列表"); - map2.put("page", "搜索"); - map2.put("game", gameEntity.getName()); - map2.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map2); + DataCollectionUtils.uploadClick(context, "列表", "搜索", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(搜索)"); } @@ -163,11 +154,7 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("key", key); - map.put("from", "搜索页面"); - map.put("click", gameEntity.getName()); - DataCollectionManager.onEvent(context, "search", map); + DataCollectionUtils.uploadSearch(context, key, "搜索页面", gameEntity.getName()); DownloadDialog.getInstance(context) .showPopupWindow(v, gameEntity, "(搜索)", "搜索:" + gameEntity.getName()); @@ -191,23 +178,14 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); - map.put("key", key); - map.put("from", "搜索页面"); - map.put("click", gameEntity.getName()); - DataCollectionManager.onEvent(context, "search", map); + DataCollectionUtils.uploadSearch(context, key, "搜索页面", gameEntity.getName()); Map kv = new HashMap<>(); kv.put("名字", gameEntity.getName()); kv.put("位置", String.valueOf(holder.getPosition() + 1)); DataUtils.onEvent(context, "点击", "搜索", kv); - Map map2 = new HashMap<>(); - map2.put("location", "列表"); - map2.put("page", "搜索"); - map2.put("game", gameEntity.getName()); - map2.put("game_id", gameEntity.getId()); - DataCollectionManager.onEvent(context, "click-item", map2); + DataCollectionUtils.uploadClick(context, "列表", "搜索", gameEntity.getName()); GameUtils.startGameDetailActivity(context, gameEntity, "(搜索)"); } diff --git a/app/src/main/res/layout/activity_splash_intro.xml b/app/src/main/res/layout/activity_splash_intro.xml index 9722d3cc22..c73a44243f 100644 --- a/app/src/main/res/layout/activity_splash_intro.xml +++ b/app/src/main/res/layout/activity_splash_intro.xml @@ -4,7 +4,7 @@ android:layout_height="match_parent" > diff --git a/app/src/main/res/layout/splash_viewpage_item.xml b/app/src/main/res/layout/splash_guide_item.xml similarity index 84% rename from app/src/main/res/layout/splash_viewpage_item.xml rename to app/src/main/res/layout/splash_guide_item.xml index e5ca85baec..9ca62c873f 100644 --- a/app/src/main/res/layout/splash_viewpage_item.xml +++ b/app/src/main/res/layout/splash_guide_item.xml @@ -4,13 +4,13 @@ android:layout_height="match_parent"> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0383942791..f1d5a9c6eb 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -3,24 +3,12 @@ @@ -37,7 +25,7 @@ @color/background - - -