DataWatcher修改

This commit is contained in:
huangzhuanghua
2016-09-08 09:11:22 +08:00
parent 9180089787
commit e2591a54d6
26 changed files with 366 additions and 457 deletions

View File

@ -119,7 +119,6 @@ public class MainActivity extends BaseFragmentActivity implements
private SharedPreferences sp;
private ArrayMap<String, String> entryMap;
private ArrayMap<String, String> doneMap;
private int currentTab;
@ -136,213 +135,201 @@ public class MainActivity extends BaseFragmentActivity implements
// 黄壮华 添加观察者 修改2015/8/15
private DataWatcher dataWatcher = new DataWatcher() {
@Override
public void onDataChanged(HashMap<String, DownloadEntry> downloadingEntries) {
for (Map.Entry<String, DownloadEntry> entry : downloadingEntries.entrySet()) {
final DownloadEntry downloadEntry = entry.getValue();
// 链接被劫持
if (DownloadStatus.hijack.equals(downloadEntry.getStatus())) {
// 删除任务
DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntry.getUrl());
// 弹出提示框
EventBus.getDefault().post(new EBShowDialog("hijack"));
//记录链接被劫持
Map<String, Object> map = new HashMap<>();
map.put("url", downloadEntry.getUrl());
map.put("game", downloadEntry.getName());
map.put("platform", downloadEntry.getMeta().get("platform"));
map.put("createdOn", System.currentTimeMillis() / 1000);
DataCollectionManager.onEvent(MainActivity.this, "hijack", map);
continue;
}
if (downloadEntry.getName().contains("光环助手") && isShowDownload) {
app_tv_speed.setText(String.format("%s(剩%s)",
SpeedUtils.getSpeed(downloadEntry.getSpeed()),
SpeedUtils.getRemainTime(downloadEntry.getSize(),
downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024)));
app_pb_progress.setProgress((int) (downloadEntry
.getPercent() * 10));
app_tv_percent.setText(downloadEntry.getPercent() + "%");
if (DownloadStatus.done.equals(downloadEntry.getStatus())) {
DownloadManager.getInstance(getApplicationContext())
.cancel(downloadEntry.getUrl(), false);
dialog.dismiss();
isShowDownload = false;
}
}
public void onDataChanged(DownloadEntry downloadEntry) {
// 链接被劫持
if (DownloadStatus.hijack.equals(downloadEntry.getStatus())) {
// 删除任务
DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntry.getUrl());
// 弹出提示框
EventBus.getDefault().post(new EBShowDialog("hijack"));
//记录链接被劫持
Map<String, Object> map = new HashMap<>();
map.put("url", downloadEntry.getUrl());
map.put("game", downloadEntry.getName());
map.put("platform", downloadEntry.getMeta().get("platform"));
map.put("createdOn", System.currentTimeMillis() / 1000);
DataCollectionManager.onEvent(MainActivity.this, "hijack", map);
return;
}
if (downloadEntry.getName().contains("光环助手") && isShowDownload) {
app_tv_speed.setText(String.format("%s(剩%s)",
SpeedUtils.getSpeed(downloadEntry.getSpeed()),
SpeedUtils.getRemainTime(downloadEntry.getSize(),
downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024)));
app_pb_progress.setProgress((int) (downloadEntry
.getPercent() * 10));
app_tv_percent.setText(downloadEntry.getPercent() + "%");
if (DownloadStatus.done.equals(downloadEntry.getStatus())) {
if (doneMap.get(downloadEntry.getUrl()) == null) {
doneMap.put(downloadEntry.getUrl(), "done");
if (downloadEntry.getName().contains("光环助手")) {
DataUtils.onEvent(MainActivity.this, "软件更新", "下载完成");
startActivity(PackageUtils
.getInstallIntent(downloadEntry.getPath()));
if (appEntity != null && appEntity.isIs_force()) {
finish();
}
} else {
Map<String, Object> kv = new HashMap<>();
kv.put("版本", downloadEntry.getMeta().get("platform"));
kv.put("状态", "下载完成");
String isUpdate = downloadEntry.getMeta().get("isUpdate");
String entrance = downloadEntry.getMeta().get("entrance");
if (isUpdate != null && "true".equals(isUpdate)) {
DataUtils.onEvent(MainActivity.this, "游戏更新",
downloadEntry.getName(), kv);
} else {
DataUtils.onEvent(MainActivity.this, "游戏下载",
downloadEntry.getName(), kv);
Map<String, Object> kv2 = new HashMap<>();
kv2.put("版本",
downloadEntry.getMeta().get("platform"));
kv2.put("状态", "下载完成");
kv2.put("位置", entrance + "-完成");
DataUtils.onEvent(MainActivity.this, "游戏下载位置",
downloadEntry.getName(), kv2);
}
if (downloadEntry.getMeta().get("isPlugin") != null) {
Map<String, Object> kv6 = new HashMap<>();
kv6.put("下载", "下载完成");
kv6.put("版本",
downloadEntry.getMeta().get("platform"));
DataUtils.onEvent(MainActivity.this, "插件化",
downloadEntry.getName(), kv6);
}
Map<String, Object> map = new HashMap<>();
map.put("game", downloadEntry.getName());
if (downloadEntry.getMeta().get("isPlugin") != null) {
map.put("method", "插件化");
} else {
map.put("method", "正常");
}
map.put("platform",
PlatformUtils.getInstance(
getApplicationContext())
.getPlatformName(
downloadEntry.getMeta()
.get("platform")));
map.put("status", "完成");
map.put("location",
downloadEntry.getMeta().get("location"));
map.put("from", entrance);
map.put("network", NetworkUtils
.getConnectedType(MainActivity.this));
map.put("createdOn",
System.currentTimeMillis() / 1000);
DataCollectionManager.onEvent(MainActivity.this, "download", map);
entryMap.put(PackageUtils.getPackageNameByPath(
getApplicationContext(),
downloadEntry.getPath()), downloadEntry
.getUrl());
if (RunningUtils
.isApplicationBroughtToBackground(getApplicationContext())) {
if (downloadEntry.getMeta().get("isPlugin") != null) {
NotificationManager nManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String path = downloadEntry.getPath();
Intent intent = new Intent();
intent.putExtra("path", path);
intent.setAction("com.gh.gamecenter.UNINSTALL");
PendingIntent pendingIntent = PendingIntent
.getBroadcast(MainActivity.this, 0,
intent,
PendingIntent.FLAG_ONE_SHOT);
String platform = PlatformUtils
.getInstance(
getApplicationContext())
.getPlatformName(
downloadEntry.getMeta()
.get("platform"));
String title = downloadEntry.getName()
+ " - " + platform;
Notification notification = new NotificationCompat.Builder(
MainActivity.this)
.setSmallIcon(R.drawable.logo)
.setTicker(title)
.setContentTitle(title)
.setContentText("下载完成,点击继续插件化。")
.setContentIntent(pendingIntent)
.build();
notification.defaults = Notification.DEFAULT_SOUND;// 添加系统默认声音
notification.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时通知将被清除。
nManager.notify(
((int) System.currentTimeMillis() / 1000),
notification);
uninstallMap.put(PackageUtils
.getPackageNameByPath(
getApplicationContext(),
path), path);
}
} else {
String platform = PlatformUtils.getInstance(
getApplicationContext())
.getPlatformName(
downloadEntry.getMeta().get(
"platform"));
if (platform != null) {
if (downloadEntry.getMeta().get("isPlugin") != null) {
EventBus.getDefault().post(new EBShowDialog("plugin", downloadEntry
.getPath()));
} else {
toast(downloadEntry.getName()
+ " - " + platform + " - 下载完成");
}
} else {
toast(downloadEntry.getName() + " - 下载完成");
}
if (downloadEntry.getMeta().get("isPlugin") == null) {
if (sp.getBoolean("autoinstall", true)) {
if (FileUtils.isEmptyFile(entry
.getValue().getPath())) {
toast("解析包错误");
} else {
PackageManager manager = new PackageManager(
getApplicationContext());
if (manager.launchSetup(entry
.getValue().getPath())) {
startActivity(PackageUtils
.getInstallIntent(downloadEntry
.getPath()));
} else {
// 记录自动弹出卸载框
// 弹出卸载提示框
EventBus.getDefault().post(new EBShowDialog("delete", downloadEntry
.getPath()));
}
}
}
}
}
// 统计下载完成
uploadData(downloadEntry.getMeta().get("gameId"),
downloadEntry.getMeta().get("platform"));
}
} else {
Utils.log("It is already done!");
DataUtils.onEvent(
MainActivity.this,
"多次弹框数据",
downloadEntry.getName()
+ "-"
+ downloadEntry.getMeta().get(
"platform"));
DownloadManager.getInstance(getApplicationContext())
.cancel(downloadEntry.getUrl(), false);
dialog.dismiss();
isShowDownload = false;
}
}
if (DownloadStatus.done.equals(downloadEntry.getStatus())) {
if (downloadEntry.getName().contains("光环助手")) {
DataUtils.onEvent(MainActivity.this, "软件更新", "下载完成");
startActivity(PackageUtils
.getInstallIntent(downloadEntry.getPath()));
if (appEntity != null && appEntity.isIs_force()) {
finish();
}
} else {
if (doneMap.containsKey(downloadEntry.getUrl())) {
doneMap.remove(downloadEntry.getUrl());
Map<String, Object> kv = new HashMap<>();
kv.put("版本", downloadEntry.getMeta().get("platform"));
kv.put("状态", "下载完成");
String isUpdate = downloadEntry.getMeta().get("isUpdate");
String entrance = downloadEntry.getMeta().get("entrance");
if (isUpdate != null && "true".equals(isUpdate)) {
DataUtils.onEvent(MainActivity.this, "游戏更新",
downloadEntry.getName(), kv);
} else {
DataUtils.onEvent(MainActivity.this, "游戏下载",
downloadEntry.getName(), kv);
Map<String, Object> kv2 = new HashMap<>();
kv2.put("版本",
downloadEntry.getMeta().get("platform"));
kv2.put("状态", "下载完成");
kv2.put("位置", entrance + "-完成");
DataUtils.onEvent(MainActivity.this, "游戏下载位置",
downloadEntry.getName(), kv2);
}
if (downloadEntry.getMeta().get("isPlugin") != null) {
Map<String, Object> kv6 = new HashMap<>();
kv6.put("下载", "下载完成");
kv6.put("版本",
downloadEntry.getMeta().get("platform"));
DataUtils.onEvent(MainActivity.this, "插件化",
downloadEntry.getName(), kv6);
}
Map<String, Object> map = new HashMap<>();
map.put("game", downloadEntry.getName());
if (downloadEntry.getMeta().get("isPlugin") != null) {
map.put("method", "插件化");
} else {
map.put("method", "正常");
}
map.put("platform",
PlatformUtils.getInstance(
getApplicationContext())
.getPlatformName(
downloadEntry.getMeta()
.get("platform")));
map.put("status", "完成");
map.put("location",
downloadEntry.getMeta().get("location"));
map.put("from", entrance);
map.put("network", NetworkUtils
.getConnectedType(MainActivity.this));
map.put("createdOn",
System.currentTimeMillis() / 1000);
DataCollectionManager.onEvent(MainActivity.this, "download", map);
entryMap.put(PackageUtils.getPackageNameByPath(
getApplicationContext(),
downloadEntry.getPath()), downloadEntry
.getUrl());
if (RunningUtils
.isApplicationBroughtToBackground(getApplicationContext())) {
if (downloadEntry.getMeta().get("isPlugin") != null) {
NotificationManager nManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String path = downloadEntry.getPath();
Intent intent = new Intent();
intent.putExtra("path", path);
intent.setAction("com.gh.gamecenter.UNINSTALL");
PendingIntent pendingIntent = PendingIntent
.getBroadcast(MainActivity.this, 0,
intent,
PendingIntent.FLAG_ONE_SHOT);
String platform = PlatformUtils
.getInstance(
getApplicationContext())
.getPlatformName(
downloadEntry.getMeta()
.get("platform"));
String title = downloadEntry.getName()
+ " - " + platform;
Notification notification = new NotificationCompat.Builder(
MainActivity.this)
.setSmallIcon(R.drawable.logo)
.setTicker(title)
.setContentTitle(title)
.setContentText("下载完成,点击继续插件化。")
.setContentIntent(pendingIntent)
.build();
notification.defaults = Notification.DEFAULT_SOUND;// 添加系统默认声音
notification.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时通知将被清除。
nManager.notify(
((int) System.currentTimeMillis() / 1000),
notification);
uninstallMap.put(PackageUtils
.getPackageNameByPath(
getApplicationContext(),
path), path);
}
} else {
String platform = PlatformUtils.getInstance(
getApplicationContext())
.getPlatformName(
downloadEntry.getMeta().get(
"platform"));
if (platform != null) {
if (downloadEntry.getMeta().get("isPlugin") != null) {
EventBus.getDefault().post(new EBShowDialog("plugin", downloadEntry
.getPath()));
} else {
toast(downloadEntry.getName()
+ " - " + platform + " - 下载完成");
}
} else {
toast(downloadEntry.getName() + " - 下载完成");
}
if (downloadEntry.getMeta().get("isPlugin") == null) {
if (sp.getBoolean("autoinstall", true)) {
if (FileUtils.isEmptyFile(downloadEntry.getPath())) {
toast("解析包错误");
} else {
PackageManager manager = new PackageManager(
getApplicationContext());
if (manager.launchSetup(downloadEntry.getPath())) {
startActivity(PackageUtils
.getInstallIntent(downloadEntry
.getPath()));
} else {
// 记录自动弹出卸载框
// 弹出卸载提示框
EventBus.getDefault().post(new EBShowDialog("delete", downloadEntry
.getPath()));
}
}
}
}
}
// 统计下载完成
uploadData(downloadEntry.getMeta().get("gameId"),
downloadEntry.getMeta().get("platform"));
}
} else {
Utils.log("It is already done!");
DataUtils.onEvent(
MainActivity.this,
"多次弹框数据",
downloadEntry.getName()
+ "-"
+ downloadEntry.getMeta().get(
"platform"));
}
}
};
@ -403,7 +390,6 @@ public class MainActivity extends BaseFragmentActivity implements
uninstallMap = new ArrayMap<>();
entryMap = new ArrayMap<>();
doneMap = new ArrayMap<>();
getSearchHints();
@ -1252,7 +1238,6 @@ public class MainActivity extends BaseFragmentActivity implements
home3Title = null;
sp = null;
entryMap = null;
doneMap = null;
dialog = null;
app_pb_progress = null;
app_tv_speed = null;