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 9998ad426c..bf1232b3ac 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -11,6 +11,7 @@ import android.text.Spanned; import android.view.View; import android.view.Window; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import com.gh.gamecenter.R; @@ -99,10 +100,10 @@ public class DialogUtils { // 标题 TextView alertdialog_title = (TextView) view.findViewById(R.id.installhint_title); alertdialog_title.setText("重要提示"); - Spanned content = Html.fromHtml("如果您使用的是"+ "华为" +"手机或"+ + Spanned content = Html.fromHtml("如果您使用的是"+ "华为" +"或"+ "OPPO" +"手机,安装游戏时请选择“" + "继续安装" + - "”(请记住不要选择“官方推荐”或“软件商店安装”)"); + "”(记住不要选择“官方推荐”或“软件商店安装”)"); // 内容 TextView alertdialog_content = (TextView) view.findViewById(R.id.installhint_content); alertdialog_content.setText(content); @@ -115,8 +116,9 @@ public class DialogUtils { final ImageView installhint_select = (ImageView) view.findViewById(R.id.installhint_select); TextView installhint_cancel = (TextView) view.findViewById(R.id.installhint_cancel); + LinearLayout installhint_unselect_ll = (LinearLayout) view.findViewById(R.id.installhint_unselect_ll); - installhint_cancel.setOnClickListener(new View.OnClickListener() { + installhint_unselect_ll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (installhint_unselect.getVisibility() == View.GONE) { diff --git a/app/src/main/java/com/gh/common/util/QRCodeUtils.java b/app/src/main/java/com/gh/common/util/QRCodeUtils.java index e35ef249ad..519b534305 100644 --- a/app/src/main/java/com/gh/common/util/QRCodeUtils.java +++ b/app/src/main/java/com/gh/common/util/QRCodeUtils.java @@ -1,5 +1,6 @@ package com.gh.common.util; +import android.content.Context; import android.graphics.Bitmap; import com.google.zxing.BarcodeFormat; @@ -9,6 +10,7 @@ import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; @@ -27,7 +29,7 @@ public class QRCodeUtils { * @param filePath 用于存储二维码图片的文件路径 * @return 生成二维码及保存文件是否成功 */ - public static boolean createQRImage(String content, int widthPix, int heightPix, String filePath) { + public static boolean createQRImage(String content, int widthPix, int heightPix, String filePath, Context context) { try { if (content == null || "".equals(content)) { return false; @@ -60,6 +62,12 @@ public class QRCodeUtils { Bitmap bitmap = Bitmap.createBitmap(widthPix, heightPix, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, widthPix, 0, 0, widthPix, heightPix); + //检查上级路径 + File file = new File(context.getExternalCacheDir().getPath() + "/ShareImg"); + if (!file.exists()) { + file.mkdirs(); + } + FileOutputStream fileOutputStream = new FileOutputStream(filePath); //必须使用compress方法将bitmap保存到文件中再进行读取。直接返回的bitmap是没有任何压缩的,内存消耗巨大! return bitmap != null && bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(filePath)); diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 208c97be45..c4ab8b6d45 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; +import android.graphics.Color; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -559,17 +560,17 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene // 获取已安装游戏 private void getInstalledListFromServer() { ArrayList list = PackageUtils.getAllPackageName(getApplicationContext()); - if (list.isEmpty()) { - if (isNewFirstLaunch) { // 延迟0.3s,防止页面未注册eventbus,接收消息失败 - handler.postDelayed(new Runnable() { - @Override - public void run() { - EventBus.getDefault().post(new EBUISwitch("NewsFragment", -1)); //通知更新推荐关注小版块 - } - }, 300); - } - return; - } +// if (list.isEmpty()) { +// if (isNewFirstLaunch) { // 延迟0.3s,防止页面未注册eventbus,接收消息失败 +// handler.postDelayed(new Runnable() { +// @Override +// public void run() { +// EventBus.getDefault().post(new EBUISwitch("NewsFragment", -1)); //通知更新推荐关注小版块 +// } +// }, 300); +// } +// return; +// } PackageManager.init(list); @@ -653,9 +654,9 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene * 更新关注列表数据 */ private void update() { - if (isNewFirstLaunch) { - EventBus.getDefault().post(new EBUISwitch("NewsFragment", -1)); //通知更新推荐关注小版块 - } +// if (isNewFirstLaunch) { +// EventBus.getDefault().post(new EBUISwitch("NewsFragment", -1)); //通知更新推荐关注小版块 +// } new Thread(){ @Override public void run() { @@ -1069,9 +1070,9 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene ivGame.setImageResource(R.drawable.ic_game_unselect); ivNews.setImageResource(R.drawable.ic_news_unselect); ivPersonal.setImageResource(R.drawable.ic_user_unselect); - tvGame.setTextColor(getResources().getColor(R.color.title)); - tvNews.setTextColor(getResources().getColor(R.color.title)); - tvPersonal.setTextColor(getResources().getColor(R.color.title)); + tvGame.setTextColor(Color.parseColor("#a7a8b2")); + tvNews.setTextColor(Color.parseColor("#a7a8b2")); + tvPersonal.setTextColor(Color.parseColor("#a7a8b2")); } // 将所有的Fragment都置为隐藏状态。 diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java index ed76df7202..edde249477 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java @@ -105,7 +105,8 @@ public class ShareCardActivity extends BaseActivity { @Override public void run() { final String filePath = getExternalCacheDir().getPath() + "/ShareImg/ShareQRCode.jpg"; - boolean success = QRCodeUtils.createQRImage("http://www.ghzhushou.com/article/" + newsId+ ".html?source=appshare200", 200, 200, filePath); + boolean success = QRCodeUtils.createQRImage("http://www.ghzhushou.com/article/" + newsId+ ".html?source=appshare200" + , 200, 200, filePath, ShareCardActivity.this); if (success) { runOnUiThread(new Runnable() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java index b2e18f82e9..b64163cab6 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java @@ -149,7 +149,8 @@ public class ShareCardPicActivity extends BaseActivity { @Override public void run() { final String filePath = getExternalCacheDir().getPath() + "/ShareImg/ShareQRCode.jpg"; - boolean success = QRCodeUtils.createQRImage("http://www.ghzhushou.com/article/" + newsId+ ".html?source=appshare200", 200, 200, filePath); + boolean success = QRCodeUtils.createQRImage("http://www.ghzhushou.com/article/" + newsId+ ".html?source=appshare200" + , 200, 200, filePath, ShareCardPicActivity.this); if (success) { runOnUiThread(new Runnable() { @Override 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 405360b53d..1c639afbf2 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java @@ -116,13 +116,15 @@ public class LibaoDetailAdapter extends RecyclerView.Adapter DisplayMetrics outMetrics = new DisplayMetrics(); fragment.getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics); - topHeight = (int) (outMetrics.widthPixels / 16f * 10f); - topHeightOld = (int) (outMetrics.widthPixels / 16f * 10f); +// topHeight = (int) (outMetrics.widthPixels / 16f * 10f); //TODO 盖住轮播图比例 + topHeightOld = (int) (outMetrics.widthPixels / 16f * 10f); // 盖住轮播图比例时,记录初始大小 + + topHeight = (int) (outMetrics.widthPixels / 16f * 11.4f); //TODO 不盖住轮播图比例 cardMargin = (int) context.getResources().getDimension(R.dimen.cardview_margin); @@ -542,8 +544,9 @@ class GameFragmentAdapter extends RecyclerView.Adapter LinearLayout hint = (LinearLayout) view.findViewById(R.id.viewpager_ll_hint); RelativeLayout.LayoutParams hintParams = new RelativeLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - hintParams.setMargins(0, (int) (outMetrics.widthPixels / 16f * 5.3f), 0, 0); - hintParams.addRule(RelativeLayout.CENTER_HORIZONTAL); +// hintParams.setMargins(0, (int) (outMetrics.widthPixels / 16f * 5.3f), 0, 0); // TODO 盖住轮播图点 比例 + hintParams.setMargins(0, (int) (outMetrics.widthPixels / 16f * 6.5f), DisplayUtils.dip2px(context, 010), 0); + hintParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); hint.setLayoutParams(hintParams); return new GameViewPagerViewHolder(view); diff --git a/app/src/main/java/com/gh/gamecenter/geetest/GeetestUtils.java b/app/src/main/java/com/gh/gamecenter/geetest/GeetestUtils.java index e2f63057cc..d145c35754 100644 --- a/app/src/main/java/com/gh/gamecenter/geetest/GeetestUtils.java +++ b/app/src/main/java/com/gh/gamecenter/geetest/GeetestUtils.java @@ -22,6 +22,7 @@ import rx.schedulers.Schedulers; /** * Created by khy on 2017/1/12. + * 验证码工具类 */ public class GeetestUtils { private static Context context; diff --git a/app/src/main/java/com/gh/gamecenter/geetest/GtDialog.java b/app/src/main/java/com/gh/gamecenter/geetest/GtDialog.java index b07efc9a75..6d594d022a 100644 --- a/app/src/main/java/com/gh/gamecenter/geetest/GtDialog.java +++ b/app/src/main/java/com/gh/gamecenter/geetest/GtDialog.java @@ -224,7 +224,7 @@ public class GtDialog extends Dialog { TextView textView = new TextView(getContext()); textView.setBackgroundColor(Color.WHITE); textView.setGravity(Gravity.CENTER); - textView.setText("完成验证,领取礼包"); + textView.setText("完成验证即可领取礼包"); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(getDeviceWidth(), (int)((float)getDeviceWidth()/7.5)); params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); contentView.addView(textView, params); 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 e7aab2cffb..bce8643d86 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java @@ -381,7 +381,7 @@ class InstallFragmentAdapter extends RecyclerView.Adapter getGameUpdate(@Path("package_name") String package_name);// 获取游戏更新 - @GET("update/game/{gh_id}/package{package_name}") + @GET("update/game/{gh_id}/package/{package_name}") Observable getGameUpdate(@Path("gh_id") String gh_id, @Path("package_name") String package_name);// 获取游戏更新 diff --git a/app/src/main/java/com/gh/gamecenter/statistics/AppStaticService.java b/app/src/main/java/com/gh/gamecenter/statistics/AppStaticService.java index 5327b36e42..e00a0b4be3 100644 --- a/app/src/main/java/com/gh/gamecenter/statistics/AppStaticService.java +++ b/app/src/main/java/com/gh/gamecenter/statistics/AppStaticService.java @@ -4,6 +4,8 @@ import android.app.ActivityManager; import android.app.Service; import android.content.Context; import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; import android.os.IBinder; import android.os.PowerManager; import android.support.annotation.Nullable; @@ -11,6 +13,7 @@ import android.support.annotation.Nullable; import com.gh.common.util.Utils; import com.gh.gamecenter.db.AppRunTimeDao; +import java.util.ArrayList; import java.util.List; import static java.lang.Thread.sleep; @@ -29,7 +32,9 @@ public class AppStaticService extends Service { private String mPrePackageName; // 切换app前的应用包名 private String mNextPackageName; // 切换app后的应用包名 - private String homePackage = "com.huawei.android.launcher"; //桌面包名 以华为为例 +// private String homePackage = "com.huawei.android.launcher"; //桌面包名 以华为为例 + + private ArrayList homePackage; private int mRunTime; AppRunTimeDao runTimeDao; @@ -48,6 +53,17 @@ public class AppStaticService extends Service { mNextPackageName = getPackageName(); runTimeDao = new AppRunTimeDao(getApplicationContext()); + homePackage = new ArrayList<>(); + + List packages = getPackageManager() + .getInstalledPackages(0); + + for (PackageInfo aPackage : packages) { + if ((aPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) { + Utils.log("============系统应用" + aPackage.packageName); + homePackage.add(aPackage.packageName); + } + } // PackageManager packageManager = getApplication().getPackageManager(); // Intent intent = new Intent(Intent.ACTION_MAIN); // intent.addCategory(Intent.CATEGORY_HOME); @@ -69,9 +85,9 @@ public class AppStaticService extends Service { mTopTaskInfo = mTaskInfo.get(0); mNextPackageName = mTopTaskInfo.topActivity.getPackageName(); - if (homePackage.equals(mNextPackageName)) { // 跳转至桌面 - if (homePackage.equals(mPrePackageName)) { // 桌面跳转至桌面 不统计 - Utils.log("============ 桌面跳转至桌面 不统计"); + if (homePackage.contains(mNextPackageName)) { // 跳转至桌面 + if (homePackage.contains(mPrePackageName)) { // 桌面跳转至桌面 不统计 + Utils.log("============ 桌面跳转至桌面 不统计" + mNextPackageName); } else { // 非桌面跳转至桌面 // TODO 计时结束 存储数据 writeToStorage(); @@ -79,16 +95,24 @@ public class AppStaticService extends Service { } } else { // 跳转至非桌面 - if (mNextPackageName.equals(mPrePackageName)) { //如果nextPackageName和prePackageName相同(无跳转操作),那么计时增加 + if (homePackage.contains(mPrePackageName)) { + // mNextPackageName不是桌面 mPrePackageName是桌面,从桌面到非桌面,计时开始 // TODO 计时开始 mRunTime = mRunTime + 1; mPrePackageName = mNextPackageName; //身份转换 + Utils.log("============ 跳转至非桌面 计时开始"); + } else { - Utils.log("============ 计时开始"); - } else { // 非桌面跳转至非桌面 mPrePackageName的计时结束,mNextPackageName的计时开始 - // TODO 计时结束 存储数据 - Utils.log("============ 非桌面跳转至非桌面 计时结束 存储数据22"+ mRunTime); - writeToStorage(); + if (mPrePackageName.equals(mNextPackageName)) { + //如果mNextPackageName和mPrePackageName相同(无跳转操作),那么计时增加 + mRunTime = mRunTime + 1; + Utils.log("============ 无跳转操作"); + } else { + // TODO 计时结束 存储数据 + // 非桌面跳转至非桌面 mPrePackageName的计时结束,mNextPackageName的计时开始 + Utils.log("============ 非桌面跳转至非桌面 计时结束 存储数据22"+ mRunTime); + writeToStorage(); + } } } } else { diff --git a/app/src/main/java/com/gh/gamecenter/statistics/StatisticsUtils.java b/app/src/main/java/com/gh/gamecenter/statistics/StatisticsUtils.java index 261d659a9a..72959ef32e 100644 --- a/app/src/main/java/com/gh/gamecenter/statistics/StatisticsUtils.java +++ b/app/src/main/java/com/gh/gamecenter/statistics/StatisticsUtils.java @@ -13,7 +13,7 @@ public class StatisticsUtils { if (runTimeDao.isExist(packageName)) { - Utils.log("存在记录=================" + (runTimeCount + runTimeDao.getRunTimeCount(packageName))); + Utils.log("存在记录=================" + (runTimeCount + runTimeDao.getRunTimeCount(packageName)) + "==" + "本次增加:" + runTimeCount); runTimeDao.update(new AppRunTimeInfo(packageName, (runTimeCount + runTimeDao.getRunTimeCount(packageName)))); } else { Utils.log("不存在记录=================" + 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 index c15fd267d0..347142fa1d 100644 --- a/app/src/main/java/com/gh/gamecenter/statistics/TrafficUtils.java +++ b/app/src/main/java/com/gh/gamecenter/statistics/TrafficUtils.java @@ -1,19 +1,30 @@ package com.gh.gamecenter.statistics; +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.net.TrafficStats; + +import com.gh.common.util.Utils; + +import java.util.List; + /** * 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); -// } - + public static void getAppTraffic(Context context) { + PackageManager pm = context.getPackageManager(); + List installedPackages = pm.getInstalledPackages(0); + TrafficStats trafficStats = new TrafficStats(); + for (PackageInfo installedPackage : installedPackages) { + if ((installedPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { + int uid = installedPackage.applicationInfo.uid; + long uidRxBytes = trafficStats.getUidRxBytes(uid); + long KB = uidRxBytes / 1024; + Utils.log(installedPackage.applicationInfo.loadLabel(pm).toString() + "=====" + uid + "===========" + KB); + } + } + } } diff --git a/app/src/main/res/drawable-hdpi/checkbox_select.png b/app/src/main/res/drawable-hdpi/checkbox_select.png index 9b4a573655..70713dbf61 100644 Binary files a/app/src/main/res/drawable-hdpi/checkbox_select.png and b/app/src/main/res/drawable-hdpi/checkbox_select.png differ diff --git a/app/src/main/res/drawable-hdpi/checkbox_unselect.png b/app/src/main/res/drawable-hdpi/checkbox_unselect.png index 598d100aff..f0281c1d0a 100644 Binary files a/app/src/main/res/drawable-hdpi/checkbox_unselect.png and b/app/src/main/res/drawable-hdpi/checkbox_unselect.png differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5343f767ad..bbfd5e75f4 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -75,7 +75,7 @@ android:layout_height="wrap_content" android:text="资讯" android:layout_marginTop="3dp" - android:textColor="@color/title" + android:textColor="#a7a8b2" android:textSize="10sp" /> @@ -100,7 +100,7 @@ android:layout_height="wrap_content" android:text="我的光环" android:layout_marginTop="3dp" - android:textColor="@color/title" + android:textColor="#a7a8b2" android:textSize="10sp" /> diff --git a/app/src/main/res/layout/common_alertdialog.xml b/app/src/main/res/layout/common_alertdialog.xml index 32e1221422..d3dc9abf85 100644 --- a/app/src/main/res/layout/common_alertdialog.xml +++ b/app/src/main/res/layout/common_alertdialog.xml @@ -1,6 +1,6 @@ @@ -23,7 +23,7 @@ + android:layout_width="68dp" + android:layout_height="74dp"> + android:layout_width="68dp" + android:layout_height="74dp"> @@ -52,7 +54,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:orientation="vertical" - android:layout_marginLeft="8dp" + android:layout_marginLeft="10dp" android:layout_marginRight="8dp"> 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 5b9f246afa..4a897fc59e 100644 --- a/app/src/main/res/layout/home_subject_entrance_item.xml +++ b/app/src/main/res/layout/home_subject_entrance_item.xml @@ -7,8 +7,8 @@ android:gravity="center"> + android:layout_width="60dp" + android:layout_height="55dp">