diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6d87485fbb..28d560a490 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -299,6 +299,9 @@ + + clazz = ClassUtils.forName(to); - if (clazz != null) { - Intent intent1 = new Intent(context, clazz); - intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent1.putExtra("data", bundle); - context.startActivity(intent1); + if (to != null) { + if (RunningUtils.isRunning(context)) { + Utils.log("小米推送33::" + type + "==" + response.getString("target")); + // 应用正在运行,前台或后台 + if (!TextUtils.isEmpty(to)) { + Class clazz = ClassUtils.forName(to); + if (clazz != null) { + Intent intent1 = new Intent(context, clazz); + intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent1.putExtra("data", bundle); + context.startActivity(intent1); + } } + } else { + // 应用未在运行 + Intent intent1 = new Intent(context, SplashScreenActivity.class); + intent1.setAction(Intent.ACTION_MAIN); + intent1.addCategory(Intent.CATEGORY_LAUNCHER); + intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent1.putExtra("data", bundle); + context.startActivity(intent1); } - } else { - // 应用未在运行 - Intent intent1 = new Intent(context, SplashScreenActivity.class); - intent1.setAction(Intent.ACTION_MAIN); - intent1.addCategory(Intent.CATEGORY_LAUNCHER); - intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent1.putExtra("data", bundle); - context.startActivity(intent1); } } catch (JSONException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java b/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java index 72834c8be9..8f94dd3899 100644 --- a/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java +++ b/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java @@ -7,6 +7,7 @@ import android.text.TextUtils; import com.gh.common.util.ClassUtils; import com.gh.common.util.RunningUtils; +import com.gh.common.util.Utils; import com.gh.gamecenter.SplashScreenActivity; import com.umeng.message.UmengNotificationClickHandler; import com.umeng.message.entity.UMessage; @@ -22,45 +23,49 @@ public class GHUmengNotificationClickHandler extends UmengNotificationClickHandl super.launchApp(context, uMessage); String content = uMessage.extra.get("data"); + Utils.log("友盟推送::" + content); try { JSONObject response = new JSONObject(content); Bundle bundle = new Bundle(); bundle.putString("entrance", "(友盟推送)"); String type = response.getString("type"); + String to = null; if ("article".equals(type)) { - bundle.putString("to", "NewsDetailActivity"); + to = "NewsDetailActivity"; bundle.putString("newsId", response.getString("target")); } else if ("game".equals(type)) { - bundle.putString("to", "GameDetailActivity"); + to = "GameDetailActivity"; bundle.putString("gameId", response.getString("target")); } else if ("column".equals(type)) { - bundle.putString("to", "SubjectActivity"); + to = "SubjectActivity"; bundle.putString("id", response.getString("target")); } else if ("web".equals(type)) { - bundle.putString("to", "WebActivity"); + to = "WebActivity"; bundle.putString("url", response.getString("target")); } - if (RunningUtils.isRunning(context)) { - // 应用正在运行,前台或后台 - String to = bundle.getString("to"); - if (!TextUtils.isEmpty(to)) { - Class clazz = ClassUtils.forName(to); - if (clazz != null) { - Intent intent1 = new Intent(context, clazz); - intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent1.putExtra("data", bundle); - context.startActivity(intent1); + if (to != null) { + if (RunningUtils.isRunning(context)) { + // 应用正在运行,前台或后台 + if (!TextUtils.isEmpty(to)) { + Class clazz = ClassUtils.forName(to); + if (clazz != null) { + Intent intent1 = new Intent(context, clazz); + intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent1.putExtra("data", bundle); + context.startActivity(intent1); + } } + } else { + // 应用未在运行 + Intent intent1 = new Intent(context, SplashScreenActivity.class); + intent1.setAction(Intent.ACTION_MAIN); + intent1.addCategory(Intent.CATEGORY_LAUNCHER); + intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent1.putExtra("to", to); + intent1.putExtra("data", bundle); + context.startActivity(intent1); } - } else { - // 应用未在运行 - Intent intent1 = new Intent(context, SplashScreenActivity.class); - intent1.setAction(Intent.ACTION_MAIN); - intent1.addCategory(Intent.CATEGORY_LAUNCHER); - intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent1.putExtra("data", bundle); - context.startActivity(intent1); } } catch (JSONException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 846b97c6df..866fdb265a 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -99,7 +99,8 @@ public class DialogUtils { // 标题 TextView alertdialog_title = (TextView) view.findViewById(R.id.installhint_title); alertdialog_title.setText("重要提示"); - Spanned content = Html.fromHtml("如果您使用的是华为手机或OPPO手机,安装游戏时请选择“" + + Spanned content = Html.fromHtml("如果您使用的是"+ "华为" +"手机或"+ + "OPPO" +"手机,安装游戏时请选择“" + "继续安装" + "”(请记住不要选择“官方推荐”或“软件商店安装”)"); // 内容 diff --git a/app/src/main/java/com/gh/common/util/LibaoUtils.java b/app/src/main/java/com/gh/common/util/LibaoUtils.java index 0f0d55a8b3..4e50a0cd44 100644 --- a/app/src/main/java/com/gh/common/util/LibaoUtils.java +++ b/app/src/main/java/com/gh/common/util/LibaoUtils.java @@ -4,6 +4,7 @@ import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; +import android.content.res.ColorStateList; import android.graphics.Color; import android.text.TextUtils; import android.view.View; @@ -266,14 +267,26 @@ public class LibaoUtils { libaoBtn.setBackgroundResource(R.drawable.textview_cancel_up); break; case "linged": + int[][] states = new int[2][]; + states[0] = new int[] { android.R.attr.state_pressed }; + states[1] = new int[] {}; + int[] colors = new int[] { Color.WHITE, + Color.parseColor("#06D0A8") }; + ColorStateList sl = new ColorStateList(states, colors); libaoBtn.setText("已领取"); - libaoBtn.setBackgroundResource(R.drawable.libao_linged_bg); - libaoBtn.setTextColor(Color.parseColor("#06D0A8")); + libaoBtn.setBackgroundResource(R.drawable.libao_linged_style); + libaoBtn.setTextColor(sl); break; case "taoed": + int[][] states2 = new int[2][]; + states2[0] = new int[] { android.R.attr.state_pressed }; + states2[1] = new int[] {}; + int[] colors2 = new int[] { Color.WHITE, + Color.parseColor("#ffb13c") }; + ColorStateList sl2 = new ColorStateList(states2, colors2); libaoBtn.setText("已淘号"); - libaoBtn.setBackgroundResource(R.drawable.libao_taoed_bg); - libaoBtn.setTextColor(Color.parseColor("#ffb13c")); + libaoBtn.setBackgroundResource(R.drawable.libao_taoed_style); + libaoBtn.setTextColor(sl2); break; case "copy": libaoBtn.setText("复制"); @@ -339,7 +352,9 @@ public class LibaoUtils { } libaoEntity.setAvailable(libaoEntity.getAvailable() - 1); - libaoDao.add(LibaoInfo.createLibaoInfo(libaoEntity)); + LibaoInfo libaoInfo = LibaoInfo.createLibaoInfo(libaoEntity); + libaoInfo.setCode(libaoCode); + libaoDao.add(libaoInfo); EventBus.getDefault().post(new EBReuse("libaoChanged")); @@ -429,7 +444,9 @@ public class LibaoUtils { Utils.toast(libaoBtn.getContext(), "淘号成功"); - libaoDao.add(LibaoInfo.createLibaoInfo(libaoEntity)); + LibaoInfo libaoInfo = LibaoInfo.createLibaoInfo(libaoEntity); + libaoInfo.setCode(libaoCode); + libaoDao.add(libaoInfo); EventBus.getDefault().post(new EBReuse("libaoChanged")); diff --git a/app/src/main/java/com/gh/common/util/PostCommentUtils.java b/app/src/main/java/com/gh/common/util/PostCommentUtils.java index 20ee55e9ff..32d07c6e56 100644 --- a/app/src/main/java/com/gh/common/util/PostCommentUtils.java +++ b/app/src/main/java/com/gh/common/util/PostCommentUtils.java @@ -107,32 +107,37 @@ public class PostCommentUtils { } private static void addReportData(final Context context, final String reportData, - final PostCommentListener listener, boolean isCheck) { - RequestBody body = RequestBody.create(MediaType.parse("application/json"), reportData); - RetrofitManager.getComment().postReportData(body,TokenUtils.getToken(context, isCheck)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response(){ - @Override - public void onNext(ResponseBody response) { - super.onNext(response); - listener.postSucced(null); - } - - @Override - public void onError(Throwable e) { - super.onError(e); - if (e instanceof HttpException) { - if (((HttpException) e).code() == 401) { - addReportData(context, reportData, listener, false); - return; + final PostCommentListener listener, final boolean isCheck) { + new Thread(new Runnable() { + @Override + public void run() { + RequestBody body = RequestBody.create(MediaType.parse("application/json"), reportData); + RetrofitManager.getComment().postReportData(body,TokenUtils.getToken(context, isCheck)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response(){ + @Override + public void onNext(ResponseBody response) { + super.onNext(response); + listener.postSucced(null); } - } - Utils.log("addReportData=onError::" + e.toString()); - listener.postFailed(e); - } - }); + @Override + public void onError(Throwable e) { + super.onError(e); + if (e instanceof HttpException) { + if (((HttpException) e).code() == 401) { + addReportData(context, reportData, listener, false); + return; + } + } + Utils.log("addReportData=onError::" + e.toString()); + listener.postFailed(e); + } + }); + + } + }).start(); } public interface PostCommentListener { diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 0d1cae8b7e..266a5aa031 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -3,7 +3,6 @@ package com.gh.download; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.os.Build; import android.os.Handler; import android.os.Message; import android.support.v4.util.ArrayMap; @@ -222,7 +221,7 @@ public class DownloadManager { String location) { // 安装指引 - if (Build.BOARD.equals("Huawei") || "Oppo".equals(Build.BRAND)) { + if (android.os.Build.BRAND.equals("Huawei") || "Oppo".equals(android.os.Build.BRAND)) { SharedPreferences sp = context.getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); final SharedPreferences.Editor edit = sp.edit(); if (sp.getBoolean("InstallHint" + PackageUtils.getVersionName(context), true)) { diff --git a/app/src/main/java/com/gh/gamecenter/LibaoActivity.java b/app/src/main/java/com/gh/gamecenter/LibaoActivity.java index d80dfaa8cd..287f757582 100644 --- a/app/src/main/java/com/gh/gamecenter/LibaoActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LibaoActivity.java @@ -1,11 +1,13 @@ package com.gh.gamecenter; +import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.View; +import android.view.inputmethod.InputMethodManager; import android.widget.LinearLayout; import android.widget.TextView; @@ -129,6 +131,10 @@ public class LibaoActivity extends BaseFragmentActivity implements View.OnClickL } else if (v == mChunhaoxiangTv) { mLibaoVp.setCurrentItem(2); } + + // 隐藏软键盘 + InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 707a559eb2..cd5847a3c0 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -331,7 +331,8 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - +// String imei = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); +// Utils.log("======IMEI::" + imei); // 初始化gameMap DownloadManager.getInstance(this).initGameMap(); @@ -351,11 +352,12 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (savedInstanceState != null) { currentTab = savedInstanceState.getInt("currentTab"); isSkipped = savedInstanceState.getBoolean("isSkipped"); - } else if (isNewFirstLaunch) { - currentTab = 1; - } else { - currentTab = 0; } +// else if (isNewFirstLaunch) { +// currentTab = 1; +// } else { +// currentTab = 0; +// } setTabSelection(currentTab); concernManager = new ConcernManager(getApplicationContext()); @@ -368,7 +370,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } if (isNewFirstLaunch) { getPluginUpdate(); -// sp.edit().putBoolean("isNewFirstLaunchV" + PackageUtils.getVersionName(getApplicationContext()), false).apply(); + sp.edit().putBoolean("isNewFirstLaunchV" + PackageUtils.getVersionName(getApplicationContext()), false).apply(); } // 获取免责声明 diff --git a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java index f4351d8146..5adb147141 100644 --- a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java @@ -94,6 +94,8 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail private int commentNum = -1; //区分来源 -1:资讯关注列表 !=-1 :新闻详情 + private boolean openSoftInput; + @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); @@ -109,6 +111,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail Intent intent = getIntent(); newsId = intent.getExtras().getString("newsId"); commentNum = intent.getExtras().getInt("commentNum"); + openSoftInput = intent.getExtras().getBoolean("openSoftInput"); //新闻详情的发表评论 //复用问题 mConcernEntity对应的文章有可能和跳转之前的文章不一致 if (mConcernEntity != null && newsId != null && !newsId.equals(mConcernEntity.getId())) { @@ -198,6 +201,10 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail if (newsId != null && mConcernEntity == null ) { getConcernDigest(); } + + if (openSoftInput) { + setSoftInput(true); + } } public void getCommentNum() { @@ -215,9 +222,6 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail commentNum = response.get(0).getNum(); mConcernEntity.setCommentnum(commentNum); adapter.notifyItemChanged(0); - if (commentNum == 0) { - setSoftInput(true); - } } } } diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index d32ef41e26..6bd3bb8152 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -427,7 +427,8 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener } else if (v == detail_ll_comment) { Intent intent = new Intent(this, MessageDetailActivity.class); intent.putExtra("commentNum", -1); - intent.putExtra("newsId", newsId); + intent.putExtra("newsId", adapter.getNewsDetailEntity().getId()); + intent.putExtra("openSoftInput", true); startActivity(intent); } } diff --git a/app/src/main/java/com/gh/gamecenter/WebActivity.java b/app/src/main/java/com/gh/gamecenter/WebActivity.java index ccb8c63afb..21f7773884 100644 --- a/app/src/main/java/com/gh/gamecenter/WebActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WebActivity.java @@ -42,16 +42,18 @@ public class WebActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + String webUrl; + String webTitle; if (getIntent().getBundleExtra("data") != null) { Bundle data = getIntent().getBundleExtra("data"); + webUrl = data.getString("url"); + webTitle = "推送网页"; } else { - + webUrl = getIntent().getStringExtra("url"); + webTitle = getIntent().getStringExtra("gameName"); + newsId = getIntent().getStringExtra("newsId"); } - String webUrl = getIntent().getStringExtra("url"); - String webTitle = getIntent().getStringExtra("gameName"); - newsId = getIntent().getStringExtra("newsId"); - View contentView = View.inflate(this, R.layout.activity_web, null); init(contentView, webTitle); @@ -153,7 +155,7 @@ public class WebActivity extends BaseActivity { protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 刷新评论数 - if (resultCode == 1001 && progressBar.getVisibility() == View.VISIBLE) { + if (resultCode == 1001 && progressBar.getVisibility() == View.VISIBLE && newsId != null) { webComment.setText("查看评论(" + data.getExtras().getInt("commentNum") + ")"); } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java index 4cba93f565..5a2209772b 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java @@ -9,6 +9,7 @@ import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import android.widget.TextView; import com.gh.common.util.DisplayUtils; @@ -179,12 +180,16 @@ public class LibaoDetailAdapter extends RecyclerView.Adapter" +libaoInfo.getCode()+ ""); - holder.libaoCopyBtn.setBackgroundResource(R.drawable.libao_linged_bg); - holder.libaoCopyBtn.setTextColor(Color.parseColor("#06D0A8")); if (count == 0) { - content = Html.fromHtml("剩余:" + "" + count + "%" + ""); + content = Html.fromHtml("剩余:" + count + "%"); } else { content = Html.fromHtml("剩余:" + "" + count + "%" + ""); } } else { libaoCode = Html.fromHtml("已淘号:" + "" +libaoInfo.getCode()+ ""); content = Html.fromHtml("剩余:" + count + "%" ); - holder.libaoCopyBtn.setBackgroundResource(R.drawable.libao_taoed_bg); - holder.libaoCopyBtn.setTextColor(Color.parseColor("#ffb13c")); } holder.libaoCode.setVisibility(View.VISIBLE); holder.libaoCode.setText(libaoCode); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/StrategyDialogAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/StrategyDialogAdapter.java index 7fc69d0ea0..4c85a3db23 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/StrategyDialogAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/StrategyDialogAdapter.java @@ -36,7 +36,13 @@ public class StrategyDialogAdapter extends RecyclerView.Adapter concernGame = concernManager.getConcernGame(); + for (int i = 0; i < concernGame.size(); i++) { + if ("5618b86e8ab49e17088b4575".equals(concernGame.get(i).getId())) { + concernGame.remove(i); + } + } + mConcernGame = concernGame; } @Override diff --git a/app/src/main/java/com/gh/gamecenter/db/AppRunTimeDao.java b/app/src/main/java/com/gh/gamecenter/db/AppRunTimeDao.java new file mode 100644 index 0000000000..083b6f7502 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/db/AppRunTimeDao.java @@ -0,0 +1,79 @@ +package com.gh.gamecenter.db; + +import android.content.Context; + +import com.gh.gamecenter.db.info.AppRunTimeInfo; +import com.j256.ormlite.dao.Dao; + +import java.sql.SQLException; +import java.util.List; + +/** + * Created by khy on 2017/1/3. + */ + +public class AppRunTimeDao { + + private DatabaseHelper helper; + private Dao dao; + + public AppRunTimeDao(Context context) { + try { + helper = DatabaseHelper.getHelper(context); + dao = helper.getDao(AppRunTimeInfo.class); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * 添加一个记录 + */ + public void add(AppRunTimeInfo runTimeInfo) { + try { + dao.create(runTimeInfo); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * 根据包名获取某一个App的运行时长 + */ + public int getRunTimeCount(String packageName) { + try { + AppRunTimeInfo appRunTimeInfo = dao.queryForId(packageName); + return appRunTimeInfo.getRunTime(); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0; + } + + /** + * 获取所有信息 + */ + public List getAll() { + try { + return dao.queryForAll(); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 根据packageName 查找记录是否存在 + */ + public boolean isExist(String packageName) { + try { + if (dao.queryForId(packageName) != null) { + return true; + } + return false; + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/db/CommentDao.java b/app/src/main/java/com/gh/gamecenter/db/CommentDao.java index 192533bb21..8e2076533a 100644 --- a/app/src/main/java/com/gh/gamecenter/db/CommentDao.java +++ b/app/src/main/java/com/gh/gamecenter/db/CommentDao.java @@ -34,7 +34,7 @@ public class CommentDao { } } - /* + /** * 根据commentId 查找是否是自己的评论 */ public boolean isMyComment(String id) { diff --git a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java index 40fca22b70..1438839ee0 100644 --- a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java +++ b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java @@ -5,6 +5,7 @@ import android.database.sqlite.SQLiteDatabase; import android.support.v4.util.ArrayMap; import com.gh.common.util.Utils; +import com.gh.gamecenter.db.info.AppRunTimeInfo; import com.gh.gamecenter.db.info.CommentInfo; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.db.info.DataCollectionInfo; @@ -64,6 +65,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.createTable(connectionSource, VoteInfo.class); TableUtils.createTable(connectionSource, CommentInfo.class); TableUtils.createTable(connectionSource, LibaoInfo.class); + TableUtils.createTable(connectionSource, AppRunTimeInfo.class); } catch (SQLException e) { e.printStackTrace(); @@ -84,6 +86,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.dropTable(connectionSource, VoteInfo.class, true); TableUtils.dropTable(connectionSource, CommentInfo.class, true); TableUtils.dropTable(connectionSource, LibaoInfo.class, true); + TableUtils.dropTable(connectionSource, AppRunTimeInfo.class, true); onCreate(database, connectionSource); } catch (SQLException e) { diff --git a/app/src/main/java/com/gh/gamecenter/db/info/AppRunTimeInfo.java b/app/src/main/java/com/gh/gamecenter/db/info/AppRunTimeInfo.java new file mode 100644 index 0000000000..f2ef9bd7ef --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/db/info/AppRunTimeInfo.java @@ -0,0 +1,44 @@ +package com.gh.gamecenter.db.info; + +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +import java.io.Serializable; + +/** + * Created by khy on 2017/1/3. + */ + +@DatabaseTable(tableName = "tb_runtime") +public class AppRunTimeInfo implements Serializable { + + @DatabaseField(id = true, columnName = "id") + private String packageName; + + @DatabaseField(columnName = "runTime") + private int runTime; + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public int getRunTime() { + return runTime; + } + + public void setRunTime(int runTime) { + this.runTime = runTime; + } + + public AppRunTimeInfo() { + } + + public AppRunTimeInfo(String packageName, int runTime) { + this.packageName = packageName; + this.runTime = runTime; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/db/info/CommentInfo.java b/app/src/main/java/com/gh/gamecenter/db/info/CommentInfo.java index 623f49ac65..6345a2f1de 100644 --- a/app/src/main/java/com/gh/gamecenter/db/info/CommentInfo.java +++ b/app/src/main/java/com/gh/gamecenter/db/info/CommentInfo.java @@ -3,12 +3,14 @@ package com.gh.gamecenter.db.info; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; +import java.io.Serializable; + /** * Created by khy on 2016/11/21. */ @DatabaseTable(tableName = "tb_comment") -public class CommentInfo { +public class CommentInfo implements Serializable { @DatabaseField(id = true, columnName = "commentId") private String commentId; diff --git a/app/src/main/java/com/gh/gamecenter/db/info/LibaoInfo.java b/app/src/main/java/com/gh/gamecenter/db/info/LibaoInfo.java index 4d01c64f19..5666eb9682 100644 --- a/app/src/main/java/com/gh/gamecenter/db/info/LibaoInfo.java +++ b/app/src/main/java/com/gh/gamecenter/db/info/LibaoInfo.java @@ -1,5 +1,7 @@ package com.gh.gamecenter.db.info; +import android.text.TextUtils; + import com.gh.gamecenter.entity.LibaoEntity; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; @@ -47,7 +49,7 @@ public class LibaoInfo implements Serializable { private int total; @DatabaseField(columnName = "active") - private boolean active = false; + private boolean active = true; public LibaoInfo() { @@ -151,7 +153,11 @@ public class LibaoInfo implements Serializable { public static LibaoInfo createLibaoInfo(LibaoEntity libaoEntity) { LibaoInfo libaoInfo = new LibaoInfo(); - libaoInfo.setLibaoId(libaoEntity.getLibaoId()); + if (TextUtils.isEmpty(libaoEntity.getId())) { + libaoInfo.setLibaoId(libaoEntity.getLibaoId()); + } else { + libaoInfo.setLibaoId(libaoEntity.getId()); + } libaoInfo.setContent(libaoEntity.getContent()); libaoInfo.setIcon(libaoEntity.getIcon()); libaoInfo.setName(libaoEntity.getName()); diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragment.java b/app/src/main/java/com/gh/gamecenter/game/GameFragment.java index e22bbba4cc..8132fe63be 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragment.java @@ -5,6 +5,7 @@ import android.support.annotation.Nullable; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; @@ -44,6 +45,8 @@ public class GameFragment extends HomeFragment implements SwipeRefreshLayout.OnR private boolean isEverpause; + private int adapterPosition = -1; + private DataWatcher dataWatcher = new DataWatcher() { @Override public void onDataChanged(DownloadEntity downloadEntity) { @@ -62,12 +65,14 @@ public class GameFragment extends HomeFragment implements SwipeRefreshLayout.OnR } } }; + private LinearLayoutManager layoutManager; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ((LinearLayout) view).addView(View.inflate(getActivity(), R.layout.fragment_game, null)); + View inflate = View.inflate(getActivity(), R.layout.fragment_game, null); + ((LinearLayout) view).addView(inflate); reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection); fm_game_swipe_refresh = (SwipeRefreshLayout) view.findViewById(R.id.fm_game_swipe_refresh); @@ -89,7 +94,8 @@ public class GameFragment extends HomeFragment implements SwipeRefreshLayout.OnR fm_game_swipe_refresh.setOnRefreshListener(this); fm_game_rv_list.setHasFixedSize(true); - fm_game_rv_list.setLayoutManager(new LinearLayoutManager(getActivity())); + layoutManager = new LinearLayoutManager(getActivity()); + fm_game_rv_list.setLayoutManager(layoutManager); adapter = new GameFragmentAdapter(GameFragment.this, fm_game_swipe_refresh); fm_game_rv_list.setAdapter(adapter); @@ -104,8 +110,38 @@ public class GameFragment extends HomeFragment implements SwipeRefreshLayout.OnR } } }); + + // 计算顶部下拉偏移量 + fm_game_swipe_refresh.setOnTouchListener(new View.OnTouchListener() { + float y = -1; + float y1 = -1; + float offset = -1; + + @Override + public boolean onTouch(View v, MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + y = event.getY(); + break; + case MotionEvent.ACTION_MOVE: + y1 = event.getY(); + offset = y - y1; + y = y1; + if ((adapterPosition == -1 || adapterPosition == 0) && Math.abs(offset) < 50) { + adapter.stretchTop(-Math.round(offset)/2, false); + } + break; + case MotionEvent.ACTION_UP: + adapter.stretchTop(-Math.round(offset), true); + break; + } + return false; + } + }); } + + @Override public void loadDone() { if (fm_game_swipe_refresh != null && fm_game_swipe_refresh.isRefreshing()) { diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java index 5915e620cb..a8fdb9f806 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java @@ -2,6 +2,7 @@ package com.gh.gamecenter.game; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Color; import android.support.v4.util.ArrayMap; import android.support.v4.view.ViewPager; @@ -12,6 +13,7 @@ import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.RelativeLayout; @@ -19,6 +21,7 @@ import android.widget.TextView; import android.widget.Toast; import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.common.constant.Config; import com.gh.common.constant.ItemViewType; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; @@ -102,6 +105,8 @@ public class GameFragmentAdapter extends RecyclerView.Adapter topHeightOld) { + topHeight = topHeight - 2; + notifyItemChanged(0); + } else { + return; + } + } + } + + topHeight = topHeight + offset; + if (topHeight > topHeightOld) { + notifyItemChanged(0); + } else { + topHeight = topHeight - offset; + } + + } + public void startAutoScroll() { isAutoScroll = true; notifyItemChanged(0); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameLibaoGalleryAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameLibaoGalleryAdapter.java index 8f37824380..ce0165a1d5 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameLibaoGalleryAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameLibaoGalleryAdapter.java @@ -9,7 +9,6 @@ import android.view.View; import android.view.ViewGroup; import com.gh.base.AppController; -import com.gh.common.util.Utils; import com.gh.gamecenter.LibaoDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.LibaoEntity; @@ -40,7 +39,6 @@ public class GameLibaoGalleryAdapter extends RecyclerView.Adapter不可恢复" +",请确定您已经兑换过该礼包" , "取消", "确定删除" , new DialogUtils.ConfiremListener() { @Override 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 2fa835593b..d151de8dc6 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -87,6 +87,8 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { private String entrance; // private int commentNum = -1; + private boolean isHotComment; + private VoteDao mVoteDao; public NewsDetailAdapter(NewsDetailActivity activity, String entrance) { @@ -112,6 +114,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { super.onResponse(response); if (response.size() >= 3) { commentList = response; + isHotComment = true; notifyDataSetChanged(); } else { getNewsComment(); @@ -136,6 +139,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { public void onResponse(List response) { super.onResponse(response); if (response.size() >= 1) { + isHotComment = false; commentList = response; notifyDataSetChanged(); } @@ -277,7 +281,12 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { holder.list.removeAllViews(); - holder.title.setText("热门评论"); + if (isHotComment) { + holder.title.setText("热门评论"); + } else { + holder.title.setText("最新评论"); + } + for (final CommentEntity commentEntity : commentList) { View contentView = View.inflate(context, R.layout.comment_item, null); diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java index 3695093c0d..3039cf8d82 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java @@ -2,7 +2,6 @@ package com.gh.gamecenter.search; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -11,10 +10,19 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; +import com.gh.base.BaseFragment; +import com.gh.common.util.DownloadItemUtils; +import com.gh.download.DataWatcher; +import com.gh.download.DownloadEntity; +import com.gh.download.DownloadManager; import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.listener.OnCallBackListener; -public class SearchGameDetailFragment extends Fragment implements OnCallBackListener { +import java.util.ArrayList; + +public class SearchGameDetailFragment extends BaseFragment implements OnCallBackListener { private View view; private RecyclerView search_detail; @@ -24,6 +32,26 @@ public class SearchGameDetailFragment extends Fragment implements OnCallBackList private String key; + private SearchGameDetailFragmentAdapter adapter; + + DataWatcher dataWatcher = new DataWatcher() { + @Override + public void onDataChanged(DownloadEntity downloadEntity) { + ArrayList locationList = adapter.getLocationMap().get(downloadEntity.getPackageName()); + if (locationList != null && locationList.size() != 0) { + GameEntity gameEntity; + for (int location : locationList) { + gameEntity = adapter.getGameEntity(location); + if (gameEntity != null) { + DownloadItemUtils.processDate(getActivity(), gameEntity, + downloadEntity, adapter, location); + } + } + } + } + }; + + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -40,7 +68,8 @@ public class SearchGameDetailFragment extends Fragment implements OnCallBackList search_detail = (RecyclerView) view.findViewById(R.id.search_detail); search_detail.setHasFixedSize(true); search_detail.setLayoutManager(new LinearLayoutManager(getActivity())); - search_detail.setAdapter(new SearchGameDetailFragmentAdapter(SearchGameDetailFragment.this, key)); + adapter = new SearchGameDetailFragmentAdapter(SearchGameDetailFragment.this, key); + search_detail.setAdapter(adapter); } @Nullable @@ -86,4 +115,37 @@ public class SearchGameDetailFragment extends Fragment implements OnCallBackList reuse_no_connection.setVisibility(View.GONE); } + //下载被删除事件 + public void onEventMainThread(EBDownloadStatus status) { + if ("delete".equals(status.getStatus())) { + DownloadManager.getInstance(getActivity()).removePlatform(status.getName(), status.getPlatform()); + + ArrayList locationList = adapter.getLocationMap().get(status.getPackageName()); + GameEntity gameEntity; + if (locationList != null && locationList.size() != 0) { + for (int location : locationList) { + gameEntity = adapter.getGameEntity(location); + if (gameEntity != null && gameEntity.getEntryMap() != null) { + gameEntity.getEntryMap().remove(status.getPlatform()); + } + adapter.notifyItemChanged(location); + } + } + } + } + + @Override + public void onResume() { + super.onResume(); + isEverpause = false; + DownloadManager.getInstance(getContext()).addObserver(dataWatcher); + } + + @Override + public void onPause() { + super.onPause(); + isEverpause = true; + DownloadManager.getInstance(getContext()).removeObserver(dataWatcher); + } + } 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 c0a616087b..72d848cdec 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java @@ -1,24 +1,24 @@ package com.gh.gamecenter.search; import android.content.Context; +import android.support.v4.util.ArrayMap; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; 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.DownloadItemUtils; import com.gh.common.util.GameUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.view.CardLinearLayout; -import com.gh.common.view.DownloadDialog; import com.gh.gamecenter.R; 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.retrofit.Response; @@ -32,12 +32,13 @@ import java.util.Map; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; -public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter { +public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter { private Context context; private OnCallBackListener listener; private List gameList; + private ArrayMap> locationMap; private String key; @@ -46,6 +47,7 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter(); + locationMap = new ArrayMap<>(); this.key = key; if (!TextUtils.isEmpty(key)) { @@ -69,6 +71,7 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter list; + GameEntity gameEntity; + for (int i = 0, size = gameList.size(); i < size; i++) { + gameEntity = gameList.get(i); + if (gameEntity.getApk() != null && gameEntity.getApk().size() != 0) { + for (ApkEntity apkEntity : gameEntity.getApk()) { + list = locationMap.get(apkEntity.getPackageName()); + if (list == null) { + list = new ArrayList<>(); + locationMap.put(apkEntity.getPackageName(), list); + } + list.add(i); + } + } + } + } + @Override public int getItemCount() { return gameList.size(); @@ -99,7 +120,8 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter> getLocationMap() { + return locationMap; + } + + public GameEntity getGameEntity(int location) { + return gameList.get(location); + } } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragment.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragment.java index af64badf7f..21e2b2542c 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragment.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragment.java @@ -2,7 +2,6 @@ package com.gh.gamecenter.search; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -11,10 +10,19 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; +import com.gh.base.BaseFragment; +import com.gh.common.util.DownloadItemUtils; +import com.gh.download.DataWatcher; +import com.gh.download.DownloadEntity; +import com.gh.download.DownloadManager; import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.listener.OnCallBackListener; -public class SearchGameListFragment extends Fragment implements OnCallBackListener { +import java.util.ArrayList; + +public class SearchGameListFragment extends BaseFragment implements OnCallBackListener { private View view; private RecyclerView search_detail; @@ -24,6 +32,22 @@ public class SearchGameListFragment extends Fragment implements OnCallBackListen private String key; + private SearchGameListFragmentAdapter adapter; + + DataWatcher dataWatcher = new DataWatcher() { + @Override + public void onDataChanged(DownloadEntity downloadEntity) { + ArrayList locationList = adapter.getLocationMap().get(downloadEntity.getPackageName()); + if (locationList != null && locationList.size() != 0) { + GameEntity gameEntity = adapter.getGameEntity(); + if (gameEntity != null) { + DownloadItemUtils.processDate(getActivity(), gameEntity, + downloadEntity, adapter, 0); + } + } + } + }; + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -40,7 +64,8 @@ public class SearchGameListFragment extends Fragment implements OnCallBackListen search_detail = (RecyclerView) view.findViewById(R.id.search_detail); search_detail.setHasFixedSize(true); search_detail.setLayoutManager(new LinearLayoutManager(getActivity())); - search_detail.setAdapter(new SearchGameListFragmentAdapter(SearchGameListFragment.this, key)); + adapter = new SearchGameListFragmentAdapter(SearchGameListFragment.this, key); + search_detail.setAdapter(adapter); } @Nullable @@ -85,4 +110,35 @@ public class SearchGameListFragment extends Fragment implements OnCallBackListen reuse_none_date.setVisibility(View.VISIBLE); reuse_no_connection.setVisibility(View.GONE); } + + //下载被删除事件 + public void onEventMainThread(EBDownloadStatus status) { + if ("delete".equals(status.getStatus())) { + DownloadManager.getInstance(getActivity()).removePlatform(status.getName(), status.getPlatform()); + ArrayList locationList = adapter.getLocationMap().get(status.getPackageName()); + GameEntity gameEntity; + if (locationList != null && locationList.size() != 0) { + gameEntity = adapter.getGameEntity(); + if (gameEntity != null && gameEntity.getEntryMap() != null) { + gameEntity.getEntryMap().remove(status.getPlatform()); + } + adapter.notifyItemChanged(0); + } + } + } + + + @Override + public void onResume() { + super.onResume(); + isEverpause = false; + DownloadManager.getInstance(getContext()).addObserver(dataWatcher); + } + + @Override + public void onPause() { + super.onPause(); + isEverpause = true; + DownloadManager.getInstance(getContext()).removeObserver(dataWatcher); + } } 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 130f054885..bb95694664 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -1,24 +1,24 @@ package com.gh.gamecenter.search; import android.content.Context; +import android.support.v4.util.ArrayMap; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -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.DownloadItemUtils; import com.gh.common.util.GameUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.view.CardLinearLayout; -import com.gh.common.view.DownloadDialog; import com.gh.gamecenter.R; 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.retrofit.Response; @@ -38,6 +38,7 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter gameList; + private ArrayMap> locationMap; private String key; @@ -46,6 +47,7 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter(); + locationMap = new ArrayMap<>(); this.key = key; if (!TextUtils.isEmpty(key)) { @@ -69,6 +71,7 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter list = locationMap.get(apkEntity.getPackageName()); + if (list == null) { + list = new ArrayList<>(); + locationMap.put(apkEntity.getPackageName(), list); + } + list.add(0); + } + } + @Override public int getItemCount() { return gameList.size(); @@ -143,32 +158,41 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter> getLocationMap() { + return locationMap; + } + + public GameEntity getGameEntity() { + return gameList.get(0); + } } diff --git a/app/src/main/java/com/gh/gamecenter/statistics/AppStaticService.java b/app/src/main/java/com/gh/gamecenter/statistics/AppStaticService.java new file mode 100644 index 0000000000..545bcf5c86 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/statistics/AppStaticService.java @@ -0,0 +1,119 @@ +package com.gh.gamecenter.statistics; + +import android.app.ActivityManager; +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.IBinder; +import android.os.PowerManager; +import android.support.annotation.Nullable; + +import com.gh.common.util.Utils; +import com.gh.gamecenter.db.AppRunTimeDao; + +import java.util.List; + +import static java.lang.Thread.sleep; + +/** + * Created by khy on 2016/12/30. + * 统计用户App运行时长服务 + */ +public class AppStaticService extends Service { + + private List mTaskInfo; + + private ActivityManager.RunningTaskInfo mTopTaskInfo; + private ActivityManager mActivityManager; + + private String mPrePackageName; // 切换app前的应用包名 + private String mNextPackageName; // 切换app后的应用包名 + + private String homePackage = "com.huawei.android.launcher"; //桌面包名 以华为为例 + + private int mRunTime; + AppRunTimeDao runTimeDao; + + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } + + @Override + public void onCreate() { + super.onCreate(); + mActivityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); + mPrePackageName = getPackageName(); + mNextPackageName = getPackageName(); + runTimeDao = new AppRunTimeDao(getApplicationContext()); + +// PackageManager packageManager = getApplication().getPackageManager(); +// Intent intent = new Intent(Intent.ACTION_MAIN); +// intent.addCategory(Intent.CATEGORY_HOME); +// List resolveInfos = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); + + new Thread(new Runnable() { + @Override + public void run() { + PowerManager mPowerManager = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); + boolean isScreenOn; + int i =0; + while (true) { + try { + isScreenOn = mPowerManager.isScreenOn(); //判断屏幕状态(屏幕亮起/屏幕熄灭) + if (isScreenOn) { +// // 获取当前正在运行的任务 + mTaskInfo = mActivityManager.getRunningTasks(1); + + mTopTaskInfo = mTaskInfo.get(0); + mNextPackageName = mTopTaskInfo.topActivity.getPackageName(); + + if (homePackage.equals(mNextPackageName)) { // 跳转至桌面 + if (homePackage.equals(mPrePackageName)) { // 桌面跳转至桌面 不统计 + Utils.log("============ 桌面跳转至桌面 不统计"); + } else { // 非桌面跳转至桌面 + // TODO 计时结束 存储数据 + writeToStorage(); + Utils.log("============ 非桌面跳转至桌面 计时结束 存储数据"+ mRunTime); + } + + } else { // 跳转至非桌面 + if (mNextPackageName.equals(mPrePackageName)) { //如果nextPackageName和prePackageName相同(无跳转操作),那么计时增加 + // TODO 计时开始 + mRunTime = mRunTime + 1; + mPrePackageName = mNextPackageName; //身份转换 + + Utils.log("============ 计时开始"); + } else { // 非桌面跳转至非桌面 mPrePackageName的计时结束,mNextPackageName的计时开始 + // TODO 计时结束 存储数据 + Utils.log("============ 非桌面跳转至非桌面 计时结束 存储数据22"+ mRunTime); + writeToStorage(); + } + } + } else { + if (mRunTime != 0) { + // TODO 计时结束 存储数据 + writeToStorage(); + } + Utils.log("======屏幕变暗 停止统计服务" + mRunTime); + stopSelf(); // 屏幕变暗 停止统计服务 + break; // 结束服务之后跳出循环 + } + i = i + 1; + sleep(1000); + Utils.log("============" + isScreenOn + "==" + mPrePackageName + "::" + mRunTime ); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + }).start(); + } + + private void writeToStorage() { + StatisticsUtils.saveRunTime( mPrePackageName, mRunTime, runTimeDao); + mRunTime = 0; + mPrePackageName = mNextPackageName; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/statistics/StatisticsUtils.java b/app/src/main/java/com/gh/gamecenter/statistics/StatisticsUtils.java new file mode 100644 index 0000000000..098fc509a0 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/statistics/StatisticsUtils.java @@ -0,0 +1,24 @@ +package com.gh.gamecenter.statistics; + +import com.gh.common.util.Utils; +import com.gh.gamecenter.db.AppRunTimeDao; +import com.gh.gamecenter.db.info.AppRunTimeInfo; + +/** + * Created by khy on 2017/1/3. + */ +public class StatisticsUtils { + + public static void saveRunTime(String packageName, int runTimeCount, AppRunTimeDao runTimeDao) { + + + if (runTimeDao.isExist(packageName)) { + Utils.log("存在记录=================" + (runTimeCount + runTimeDao.getRunTimeCount(packageName))); + runTimeDao.add(new AppRunTimeInfo(packageName, (runTimeCount + runTimeDao.getRunTimeCount(packageName)))); + } else { + Utils.log("不存在记录=================" + runTimeCount); + runTimeDao.add(new AppRunTimeInfo(packageName, runTimeCount )); + } + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/statistics/TrafficUtils.java b/app/src/main/java/com/gh/gamecenter/statistics/TrafficUtils.java new file mode 100644 index 0000000000..c15fd267d0 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/statistics/TrafficUtils.java @@ -0,0 +1,19 @@ +package com.gh.gamecenter.statistics; + +/** + * Created by khy on 2017/1/3. + */ +public class TrafficUtils { +// +// PackageManager pm = getPackageManager(); +// List installedPackages = (List) pm.getInstalledPackages(0); +// TrafficStats trafficStats = new TrafficStats(); +// +// for (PackageInfo installedPackage : installedPackages) { +// int uid = installedPackage.applicationInfo.uid; +// long uidRxBytes = trafficStats.getUidRxBytes(uid); +// long KB = uidRxBytes / 1024; +// Utils.log(installedPackage.applicationInfo.loadLabel(pm).toString() + "===========" + KB); +// } + +} diff --git a/app/src/main/java/com/gh/gamecenter/statistics/UnlockScreenReceiver.java b/app/src/main/java/com/gh/gamecenter/statistics/UnlockScreenReceiver.java new file mode 100644 index 0000000000..f5ede44f19 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/statistics/UnlockScreenReceiver.java @@ -0,0 +1,21 @@ +package com.gh.gamecenter.statistics; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.gh.common.util.Utils; + +/** + * Created by khy on 2016/12/31. + */ +public class UnlockScreenReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + Utils.log("================屏幕状态切换" + intent.getAction()); + + Intent staticIntent = new Intent(context, AppStaticService.class); + context.startService(staticIntent); + } +} diff --git a/app/src/main/res/anim/popshow_anim_scale.xml b/app/src/main/res/anim/popshow_anim_scale.xml index 43a823b29b..c5147cd70c 100644 --- a/app/src/main/res/anim/popshow_anim_scale.xml +++ b/app/src/main/res/anim/popshow_anim_scale.xml @@ -2,14 +2,15 @@ diff --git a/app/src/main/res/drawable-hdpi/game_gift_icon.png b/app/src/main/res/drawable-hdpi/game_gift_icon.png index 9bf1e07006..bbc74146af 100644 Binary files a/app/src/main/res/drawable-hdpi/game_gift_icon.png and b/app/src/main/res/drawable-hdpi/game_gift_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/subject_new.png b/app/src/main/res/drawable-hdpi/subject_new.png new file mode 100644 index 0000000000..5047c084e1 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/subject_new.png differ diff --git a/app/src/main/res/drawable-nodpi/splash_01.webp b/app/src/main/res/drawable-nodpi/splash_01.webp index ff8ab05c1e..cface2dce1 100644 Binary files a/app/src/main/res/drawable-nodpi/splash_01.webp and b/app/src/main/res/drawable-nodpi/splash_01.webp differ diff --git a/app/src/main/res/drawable/libao_linged_dn.xml b/app/src/main/res/drawable/libao_linged_dn.xml new file mode 100644 index 0000000000..d2a0fb24b2 --- /dev/null +++ b/app/src/main/res/drawable/libao_linged_dn.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_linged_style.xml b/app/src/main/res/drawable/libao_linged_style.xml new file mode 100644 index 0000000000..33b05213ab --- /dev/null +++ b/app/src/main/res/drawable/libao_linged_style.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_linged_bg.xml b/app/src/main/res/drawable/libao_linged_up.xml similarity index 100% rename from app/src/main/res/drawable/libao_linged_bg.xml rename to app/src/main/res/drawable/libao_linged_up.xml diff --git a/app/src/main/res/drawable/libao_taoed_dn.xml b/app/src/main/res/drawable/libao_taoed_dn.xml new file mode 100644 index 0000000000..3a77803f50 --- /dev/null +++ b/app/src/main/res/drawable/libao_taoed_dn.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_taoed_style.xml b/app/src/main/res/drawable/libao_taoed_style.xml new file mode 100644 index 0000000000..cde880a118 --- /dev/null +++ b/app/src/main/res/drawable/libao_taoed_style.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_taoed_bg.xml b/app/src/main/res/drawable/libao_taoed_up.xml similarity index 100% rename from app/src/main/res/drawable/libao_taoed_bg.xml rename to app/src/main/res/drawable/libao_taoed_up.xml diff --git a/app/src/main/res/drawable/news_detail_comment.xml b/app/src/main/res/drawable/news_detail_comment.xml index d0242f41d1..9f58d2ae98 100644 --- a/app/src/main/res/drawable/news_detail_comment.xml +++ b/app/src/main/res/drawable/news_detail_comment.xml @@ -4,7 +4,7 @@ + android:color="#EDEDED" /> diff --git a/app/src/main/res/layout/activity_suggest.xml b/app/src/main/res/layout/activity_suggest.xml index 8f1b0ed2b1..240bcaaf6a 100644 --- a/app/src/main/res/layout/activity_suggest.xml +++ b/app/src/main/res/layout/activity_suggest.xml @@ -39,7 +39,7 @@ android:maxLines="12" android:minLines="6" android:padding="8dp" - android:hint="使用过程中发现的任何问题或者其他建议都欢迎提交给我们~光环助手会努力变得更好更强大!" + android:hint="使用过程中发现的任何问题或者其他建议都欢迎提交给我们~光环助手会努力变得更好更强大!\n\n\n\n若反馈游戏问题,请写上游戏名字和平台版本" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/comment_item.xml b/app/src/main/res/layout/comment_item.xml index 6dd92fdb1a..244737ad5f 100644 --- a/app/src/main/res/layout/comment_item.xml +++ b/app/src/main/res/layout/comment_item.xml @@ -54,7 +54,7 @@ android:layout_height="wrap_content" android:layout_below="@+id/comment_user_name" android:textSize="11sp" - android:layout_marginTop="8dp" + android:layout_marginTop="6dp" android:textColor="#c7c7c7"/> - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_personal.xml b/app/src/main/res/layout/fragment_personal.xml index ce1b4e3e99..c470598966 100644 --- a/app/src/main/res/layout/fragment_personal.xml +++ b/app/src/main/res/layout/fragment_personal.xml @@ -85,12 +85,6 @@ - - - - + android:layout_height="match_parent"> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/game_test_item.xml b/app/src/main/res/layout/game_test_item.xml index 521b206bf7..2e5a1d79a7 100644 --- a/app/src/main/res/layout/game_test_item.xml +++ b/app/src/main/res/layout/game_test_item.xml @@ -41,8 +41,8 @@ diff --git a/app/src/main/res/layout/home_subject_entrance_item.xml b/app/src/main/res/layout/home_subject_entrance_item.xml index 6c8f9fdc63..6def8e3211 100644 --- a/app/src/main/res/layout/home_subject_entrance_item.xml +++ b/app/src/main/res/layout/home_subject_entrance_item.xml @@ -5,18 +5,32 @@ android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> + + - + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/libao_item.xml b/app/src/main/res/layout/libao_item.xml index 394455aef1..c191fca089 100644 --- a/app/src/main/res/layout/libao_item.xml +++ b/app/src/main/res/layout/libao_item.xml @@ -35,8 +35,7 @@ android:layout_height="wrap_content" android:textColor="@color/title" android:textSize="16sp" - android:singleLine="true" - android:text="暖床萌萌大礼包"/> + android:singleLine="true" /> + android:singleLine="true"/> + android:singleLine="true"/> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 56badf0bdb..faec3a4d30 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -65,8 +65,8 @@ @anim/popshow_anim_scale - @anim/pophidden_anim_scale - + +