Skip to content

Commit f26c49f

Browse files
committed
notify read data
1 parent 4e58309 commit f26c49f

File tree

9 files changed

+691
-13
lines changed

9 files changed

+691
-13
lines changed

app/src/main/java/com/brian/csdnblog/activity/BlogContentActivity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.brian.csdnblog.Config;
2828
import com.brian.csdnblog.Env;
2929
import com.brian.csdnblog.R;
30+
import com.brian.csdnblog.datacenter.preference.CommonPreference;
3031
import com.brian.csdnblog.datacenter.preference.SettingPreference;
3132
import com.brian.csdnblog.manager.BlogManager;
3233
import com.brian.csdnblog.manager.BlogerManager;
@@ -73,6 +74,8 @@ public class BlogContentActivity extends BaseActivity implements OnFetchDataList
7374
private IBlogHtmlParser mBlogParser = null;
7475

7576
private boolean mHasFavoed;
77+
78+
private long mStartTime;
7679

7780
/**
7881
* 存放已打开过的链接
@@ -114,6 +117,7 @@ protected void onCreate(Bundle savedInstanceState) {
114117
super.onCreate(savedInstanceState);
115118
setContentView(R.layout.activity_detail_webview);
116119
ButterKnife.bind(this);
120+
mStartTime = System.currentTimeMillis();
117121

118122
initUI();// 初始化界面
119123
initListener();
@@ -390,6 +394,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
390394

391395
@Override
392396
protected void onDestroy() {
397+
CommonPreference.getInstance().addBlogReadTime(System.currentTimeMillis() - mStartTime);
393398
super.onDestroy();
394399
Qhad.activityDestroy(this);
395400

@@ -464,6 +469,7 @@ public void run() {
464469
BlogManager.getInstance().saveBlog(mBlogInfo);
465470
}
466471

472+
CommonPreference.getInstance().addBlogReadCount();// 阅读数+1
467473
mBlogStack.push(contentHtml);
468474

469475
Message msg = mHandler.obtainMessage(MSG_UPDATE);

app/src/main/java/com/brian/csdnblog/activity/MainTabActivity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import com.brian.csdnblog.manager.UpdateManager;
2222
import com.brian.csdnblog.manager.UsageStatsManager;
2323
import com.brian.csdnblog.util.LogUtil;
24+
import com.brian.csdnblog.util.TimeUtil;
25+
import com.brian.csdnblog.util.ToastUtil;
2426
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
2527
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnCloseListener;
2628
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnOpenListener;
@@ -33,6 +35,8 @@
3335

3436
import org.json.JSONObject;
3537

38+
import java.util.Locale;
39+
3640
import butterknife.BindView;
3741
import butterknife.ButterKnife;
3842

@@ -226,6 +230,9 @@ protected void onStop() {
226230

227231
@Override
228232
protected void onDestroy() {
233+
int count = CommonPreference.getInstance().getBlogReadCount();
234+
String time = TimeUtil.convCountTime(CommonPreference.getInstance().getBlogReadTime());
235+
ToastUtil.showMsgS(String.format(Locale.CHINA, "共浏览 %d篇博文,累计学习 %s", count, time));
229236
super.onDestroy();
230237
OnlineConfigAgent.getInstance().removeOnlineConfigListener();
231238
}
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package com.brian.csdnblog.datacenter.database;
2+
3+
import android.content.ContentValues;
4+
import android.database.Cursor;
5+
import android.database.sqlite.SQLiteDatabase;
6+
7+
import com.brian.csdnblog.model.ReadInfo;
8+
import com.brian.csdnblog.util.LogUtil;
9+
10+
import org.json.JSONException;
11+
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
import java.util.Locale;
15+
16+
/**
17+
* Created by huamm on 2016/9/26 0026.
18+
*/
19+
20+
public class ReadInfoTable extends BaseTable<ReadInfo> {
21+
private static final String TAG = ReadInfoTable.class.getSimpleName();
22+
23+
// 文章表名称
24+
public static final String TABLE_NAME = "ReadInfoTable";
25+
26+
// 文章表字段ID
27+
private static final String ID = "id";
28+
public static final String READ_DATE= "read_data";
29+
public static final String READ_COUNT = "read_count";
30+
public static final String READ_TIME = "read_time";
31+
32+
// 创建表的sql语言
33+
protected static final String SQL_CREATE_TABLE = "create table if not exists " + TABLE_NAME
34+
+ " ( "
35+
+ ID + " integer primary key autoincrement, "
36+
+ READ_DATE + " integer UNIQUE NOT NULL, "
37+
+ READ_COUNT + " integer, "
38+
+ READ_TIME + " integer "
39+
+ " ) ";
40+
41+
private static ReadInfoTable mInstance;
42+
43+
private ReadInfoTable() {
44+
}
45+
46+
public static ReadInfoTable getInstance() {
47+
if (mInstance == null) {
48+
synchronized (TAG) {
49+
if (mInstance == null) {
50+
mInstance = new ReadInfoTable();
51+
}
52+
}
53+
}
54+
return mInstance;
55+
}
56+
57+
public static void onCreate(SQLiteDatabase db) {
58+
LogUtil.log("SQL_CREATE_TABLE=" + SQL_CREATE_TABLE);
59+
db.execSQL(SQL_CREATE_TABLE);
60+
}
61+
62+
public static void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
63+
// TODO 实现升级逻辑
64+
}
65+
66+
/**
67+
* 插入新的消息
68+
*/
69+
public boolean insertOrUpdate(ReadInfo info) {
70+
if (info == null) {
71+
return false;
72+
}
73+
74+
String selection = READ_DATE + " = ? ";
75+
String[] selectionArgs = new String[]{String.valueOf(info.date)};
76+
77+
ContentValues values = toContentValues(info);
78+
return insertOrUpdate(TABLE_NAME, selection, selectionArgs, values, true);
79+
}
80+
81+
/**
82+
* 批量查询消息(按照接收时间倒序)
83+
*/
84+
public List<ReadInfo> queryList(int startIndex, int num) {
85+
if (startIndex < 0 || num < 0) {
86+
return null;
87+
}
88+
89+
String orderBy = READ_DATE + " desc ";
90+
String limit = String.format(Locale.ENGLISH, " %d, %d ", startIndex, num);
91+
92+
return queryList(TABLE_NAME, null, null, orderBy, limit);
93+
}
94+
95+
96+
@Override
97+
protected ContentValues toContentValues(ReadInfo info) {
98+
if (info != null) {
99+
ContentValues values = new ContentValues();
100+
values.put(READ_DATE, info.date);
101+
values.put(READ_COUNT, info.count);
102+
values.put(READ_TIME, info.timeSecond);
103+
return values;
104+
}
105+
return null;
106+
}
107+
108+
@Override
109+
protected void readCursor(ArrayList<ReadInfo> list, Cursor cursor) throws JSONException {
110+
if (cursor != null && cursor.moveToFirst()) {
111+
ReadInfo readInfo;
112+
do {
113+
readInfo = new ReadInfo();
114+
readInfo.date = cursor.getInt(cursor.getColumnIndex(READ_DATE));
115+
readInfo.timeSecond = cursor.getInt(cursor.getColumnIndex(READ_TIME));
116+
readInfo.count = cursor.getInt(cursor.getColumnIndex(READ_COUNT));
117+
list.add(readInfo);
118+
} while (cursor.moveToNext());
119+
}
120+
}
121+
122+
}

app/src/main/java/com/brian/csdnblog/datacenter/preference/CommonPreference.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ public class CommonPreference extends BasePreference {
1212
private static final String KEY_ARTICLE_TYPE = "pre_key_article_type";
1313
private static final String KEY_VERSION_CODE = "pre_key_version_code";
1414

15+
private static final String KEY_BLOG_COUNT = "pre_key_blog_count";
16+
private static final String KEY_BLOG_TIME = "pre_key_blog_time";
17+
1518
private static final String KEY_BLOGER_JSON = "pre_key_curr_bloger_json";
1619

1720
private static CommonPreference sInstance;
@@ -72,6 +75,22 @@ public void setCurrBlogerJson(String blogerJson) {
7275
putString(KEY_BLOGER_JSON, blogerJson);
7376
}
7477

78+
public int getBlogReadCount() {
79+
return getInt(KEY_BLOG_COUNT, 0);
80+
}
81+
82+
public void addBlogReadCount() {
83+
putInt(KEY_BLOG_COUNT, getBlogReadCount() + 1);
84+
}
85+
86+
public int getBlogReadTime() {
87+
return getInt(KEY_BLOG_TIME, 0);
88+
}
89+
90+
public void addBlogReadTime(long deltaTime) {
91+
putInt(KEY_BLOG_TIME, getBlogReadTime() + (int)deltaTime);
92+
}
93+
7594
private String getDefaultBloger() {
7695
Bloger bloger = new Bloger();
7796
bloger.homePageUrl = "http://blog.csdn.net/brian512";
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.brian.csdnblog.model;
2+
3+
/**
4+
* 阅读记录表,后期可增加图表显示
5+
* Created by huamm on 2016/9/26 0026.
6+
*/
7+
public class ReadInfo {
8+
/**
9+
* 当天时间戳,取0点为基准
10+
*/
11+
public int date;
12+
13+
/**
14+
* 每一天的阅读博文数量
15+
*/
16+
public int count;
17+
18+
/**
19+
* 每天阅读总时长
20+
*/
21+
public int timeSecond;
22+
23+
24+
/**
25+
* 只保留天数
26+
*/
27+
public static int getDate(long timeStamp) {
28+
return (int)(timeStamp / (3600_000 * 24));
29+
}
30+
}

app/src/main/java/com/brian/csdnblog/util/ResourceUtil.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ public static String geFileFromRaw(Context context, int resId) {
7373
}
7474
}
7575

76+
public static String getString(int resid, Object... formatArgs){
77+
return Env.getContext().getString(resid, formatArgs);
78+
}
79+
7680
public static String getString(Context context, int resId) {
7781
if (context == null) {
7882
return "";

0 commit comments

Comments
 (0)