Skip to content

Commit 45f5a4f

Browse files
committed
修复家庭签到积分;多项功能更为隔一小时执行;增加自定义线程数;
1 parent 90477c8 commit 45f5a4f

15 files changed

+212
-1001
lines changed

app/src/main/AndroidManifest.xml

+1-10
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,7 @@
5353
<activity
5454
android:name=".ui.HtmlViewerActivity"
5555
android:resizeableActivity="true"/>
56-
57-
<provider
58-
android:name=".FileProvider"
59-
android:authorities="pansong291.xposed.quickenergy.fileProvider"
60-
android:grantUriPermissions="true"
61-
android:exported="false">
62-
<meta-data
63-
android:name="android.support.FILE_PROVIDER_PATHS"
64-
android:resource="@xml/file_paths" />
65-
</provider>
56+
6657
</application>
6758

6859
</manifest>

app/src/main/java/pansong291/xposed/quickenergy/AntFarm.java

+10-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import pansong291.xposed.quickenergy.util.Config;
77
import pansong291.xposed.quickenergy.util.Log;
88
import pansong291.xposed.quickenergy.util.Statistics;
9+
import pansong291.xposed.quickenergy.util.RandomUtils;
910

1011
public class AntFarm
1112
{
@@ -95,6 +96,11 @@ public void run()
9596
try
9697
{
9798
String s = AntFarmRpcCall.rpcCall_enterFarm(loader, "", Config.getSelfId());
99+
if(s == null)
100+
{
101+
Thread.sleep(RandomUtils.delay());
102+
s = AntFarmRpcCall.rpcCall_enterFarm(loader, "", Config.getSelfId());
103+
}
98104
JSONObject jo = new JSONObject(s);
99105
String memo = jo.getString("memo");
100106
if(memo.equals("SUCCESS"))
@@ -168,16 +174,14 @@ public void run()
168174
}
169175
}
170176

171-
if(Config.receiveFarmToolReward() && Statistics.canReceiveFarmToolRewardToday())
177+
if(Config.receiveFarmToolReward())
172178
{
173179
receiveToolTaskReward(loader);
174-
Statistics.receiveFarmToolRewardToday();
175180
}
176181

177-
if(Config.useNewEggTool() && Statistics.canUseNewEggToolToday())
182+
if(Config.useNewEggTool())
178183
{
179184
useFarmTool(loader, ownerFarmId, ToolType.NEWEGGTOOL);
180-
Statistics.useNewEggToolToday();
181185
syncAnimalStatus(loader, ownerFarmId);
182186
}
183187

@@ -196,7 +200,6 @@ public void run()
196200
if(Config.answerQuestion() && Statistics.canAnswerQuestionToday())
197201
{
198202
answerQuestion(loader);
199-
Statistics.answerQuestionToday();
200203
}
201204

202205
if(Config.receiveFarmTaskAward())receiveFarmTaskAward(loader);
@@ -586,6 +589,7 @@ private static void answerQuestion(ClassLoader loader)
586589
Statistics.setQuestionHint(rightReply);
587590
Log.recordLog("未找到正确答案,放弃作答。提示:" + rightReply, "");
588591
}
592+
Statistics.answerQuestionToday();
589593
}else
590594
{
591595
Log.recordLog(memo, s);
@@ -777,7 +781,6 @@ private static void feedFriend(ClassLoader loader)
777781
&& AnimalFeedStatus.HUNGRY.name().equals(jo.getString("animalFeedStatus")))
778782
{
779783
feedFriendAnimal(loader, friendFarmId, Config.getNameById(userId));
780-
Statistics.feedFriendToday(userId);
781784
}
782785
break;
783786
}
@@ -820,6 +823,7 @@ private static void feedFriendAnimal(ClassLoader loader, String friendFarmId, St
820823
{
821824
add2FoodStock(-feedFood);
822825
Log.farm("喂〔" + user + "〕的小鸡〔" + feedFood + "克〕饲料,剩余〔" + foodStock + "克〕");
826+
Statistics.feedFriendToday(AntFarmRpcCall.farmId2UserId(friendFarmId));
823827
}
824828
}else
825829
{

app/src/main/java/pansong291/xposed/quickenergy/AntForest.java

+31-24
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public CharSequence nickName()
3232
return nickNames[ordinal()];
3333
}
3434
}
35+
36+
private static int times = 0;
3537

3638
private static boolean checkingIds = false;
3739
private static long serverTime = -1;
@@ -62,7 +64,7 @@ private static void queryEnergyRanking(ClassLoader loader, String startPoint)
6264
String userId = jo.getString("userId");
6365
if(optBoolean && !userId.equals(selfId))
6466
{
65-
canCollectEnergy(loader, userId);
67+
canCollectEnergy(loader, userId, true);
6668
}else
6769
{
6870
Config.getNameById(userId);
@@ -90,6 +92,7 @@ private static void canCollectSelfEnergy(ClassLoader loader)
9092
long end = System.currentTimeMillis();
9193
if(s == null)
9294
{
95+
Thread.sleep(RandomUtils.delay());
9396
start = System.currentTimeMillis();
9497
s = AntForestRpcCall.rpcCall_queryNextAction(loader, "");
9598
end = System.currentTimeMillis();
@@ -104,6 +107,8 @@ private static void canCollectSelfEnergy(ClassLoader loader)
104107
jo = jo.getJSONObject("userEnergy");
105108
selfId = jo.getString("userId");
106109
String selfName = jo.getString("displayName");
110+
if(selfName == null || selfName.isEmpty())
111+
selfName = "我";
107112
Config.putIdMap(selfId, selfName);
108113
Log.recordLog("进入【" + selfName + "】的蚂蚁森林", "");
109114
Config.saveIdMap();
@@ -124,7 +129,7 @@ private static void canCollectSelfEnergy(ClassLoader loader)
124129
if(Config.getDontCollectList().contains(selfId))
125130
break;
126131
long produceTime = jo.getLong("produceTime");
127-
if(produceTime - serverTime < Config.timeInterval())
132+
if(produceTime - serverTime < Config.checkInterval())
128133
execute(loader, selfName, selfId, null, bubbleId, produceTime);
129134
else
130135
setLaterTime(produceTime);
@@ -135,30 +140,28 @@ private static void canCollectSelfEnergy(ClassLoader loader)
135140
{
136141
Log.recordLog(jo.getString("resultDesc"), s);
137142
}
138-
if(Statistics.canReceiveForestTaskAwardToday() && Config.receiveForestTaskAward())
143+
if(times == 0)
139144
{
140145
receiveTaskAward(loader);
141-
Statistics.receiveForestTaskAwardToday();
142-
}
143-
if(Statistics.canWaterFriendListToday())
144-
{
145146
for(int i = 0; i < Config.getWaterFriendList().size(); i++)
146147
{
148+
String uid = Config.getWaterFriendList().get(i);
149+
if(selfId.equals(uid)) continue;
147150
int waterCount = Config.getWaterCountList().get(i);
148151
if(waterCount <= 0) continue;
149152
if(waterCount > 3) waterCount = 3;
150-
waterFriendEnergy(loader, Config.getWaterFriendList().get(i), waterCount);
153+
waterFriendEnergy(loader, uid, waterCount);
151154
}
152-
Statistics.waterFriendListToday();
153155
}
154156
}catch(Throwable t)
155157
{
156158
Log.i(TAG, "canCollectSelfEnergy err:");
157159
Log.printStackTrace(TAG, t);
158160
}
161+
times = (times + 1) % (3600_000 / Config.checkInterval());
159162
}
160163

161-
private static void canCollectEnergy(ClassLoader loader, String userId)
164+
private static void canCollectEnergy(ClassLoader loader, String userId, boolean laterCollect)
162165
{
163166
try
164167
{
@@ -176,11 +179,11 @@ private static void canCollectEnergy(ClassLoader loader, String userId)
176179
JSONArray jaBubbles = jo.getJSONArray("bubbles");
177180
jo = jo.getJSONObject("userEnergy");
178181
String userName = jo.getString("displayName");
182+
if(userName == null || userName.isEmpty())
183+
userName = "*null*";
179184
String loginId = userName;
180185
if(jo.has("loginId"))
181186
loginId += "(" + jo.getString("loginId") + ")";
182-
if(loginId == null || loginId.isEmpty())
183-
loginId = "*null*";
184187
Config.putIdMap(userId, loginId);
185188
Log.recordLog("进入【" + loginId + "】的蚂蚁森林", "");
186189
Config.saveIdMap();
@@ -212,10 +215,10 @@ private static void canCollectEnergy(ClassLoader loader, String userId)
212215
break;
213216

214217
case WAITING:
215-
if(Config.getDontCollectList().contains(userId))
218+
if(!laterCollect || Config.getDontCollectList().contains(userId))
216219
break;
217220
long produceTime = jo.getLong("produceTime");
218-
if(produceTime - serverTime < Config.timeInterval())
221+
if(produceTime - serverTime < Config.checkInterval())
219222
execute(loader, userName, userId, bizNo, bubbleId, produceTime);
220223
else
221224
setLaterTime(produceTime);
@@ -235,7 +238,7 @@ private static void canCollectEnergy(ClassLoader loader, String userId)
235238
}
236239
if(helped > 0)
237240
{
238-
canCollectEnergy(loader, userId);
241+
canCollectEnergy(loader, userId, false);
239242
}
240243
collectedEnergy += collected;
241244
}else
@@ -249,7 +252,7 @@ private static void canCollectEnergy(ClassLoader loader, String userId)
249252
}
250253
}
251254

252-
private static synchronized int collectEnergy(ClassLoader loader, String userId, long bubbleId, String userName, String bizNo)
255+
private static int collectEnergy(ClassLoader loader, String userId, long bubbleId, String userName, String bizNo)
253256
{
254257
int collected = 0;
255258
try
@@ -566,11 +569,11 @@ public void run()
566569
Log.i(TAG, "服务器时间:" + serverTime + ",本地减服务器时间差:" + offsetTime);
567570
jo = jo.getJSONObject("userEnergy");
568571
String userName = jo.getString("displayName");
572+
if(userName == null || userName.isEmpty())
573+
userName = "*null*";
569574
String loginId = userName;
570575
if(jo.has("loginId"))
571576
loginId += "(" + jo.getString("loginId") + ")";
572-
if(loginId == null || loginId.isEmpty())
573-
loginId = "*null*";
574577
Config.putIdMap(unknownIds[i], loginId);
575578
Log.recordLog("进入【" + loginId + "】的蚂蚁森林", "");
576579
Config.saveIdMap();
@@ -589,11 +592,14 @@ public void run()
589592

590593
public static void execute(ClassLoader loader, String userName, String userId, String bizNo, long bubbleId, long produceTime)
591594
{
592-
BubbleTimerTask btt = new BubbleTimerTask(loader, userName, userId, bizNo, bubbleId, produceTime);
593-
long delay = btt.getDelayTime();
594-
btt.start();
595-
collectTaskCount++;
596-
Log.recordLog(delay / 1000 + "秒后尝试收取能量", "");
595+
for(int i = Config.threadCount(); i > 0; i--)
596+
{
597+
BubbleTimerTask btt = new BubbleTimerTask(loader, userName, userId, bizNo, bubbleId, produceTime);
598+
long delay = btt.getDelayTime();
599+
btt.start();
600+
collectTaskCount++;
601+
Log.recordLog(delay / 1000 + "秒后尝试收取能量", "");
602+
}
597603
}
598604

599605
public static class BubbleTimerTask extends Thread
@@ -637,7 +643,8 @@ public void run()
637643
{
638644
collected = collectEnergy(loader, userId, bubbleId, userName, bizNo);
639645
if(collected > 0) break;
640-
Thread.sleep(Config.collectInterval());
646+
if(Config.collectInterval() > 0)
647+
Thread.sleep(Config.collectInterval());
641648
}
642649
}catch(Throwable t)
643650
{

app/src/main/java/pansong291/xposed/quickenergy/AntMember.java

+39-30
Original file line numberDiff line numberDiff line change
@@ -11,46 +11,54 @@ public class AntMember
1111
{
1212
public static final String TAG = AntMember.class.getCanonicalName();
1313

14+
private static int times = 0;
15+
1416
public static void receivePoint(ClassLoader loader)
1517
{
16-
if(!Statistics.canReceivePointToday() || !Config.receivePoint())
18+
if(!Config.receivePoint())
1719
return;
18-
new Thread()
19-
{
20-
ClassLoader loader;
2120

22-
public Thread setData(ClassLoader cl)
21+
if(times == 0)
22+
new Thread()
2323
{
24-
loader = cl;
25-
return this;
26-
}
24+
ClassLoader loader;
2725

28-
@Override
29-
public void run()
30-
{
31-
try
26+
public Thread setData(ClassLoader cl)
3227
{
33-
String s = AntMemberRpcCall.rpcCall_memberSignin(loader);
34-
JSONObject jo = new JSONObject(s);
35-
if(jo.getString("resultCode").equals("SUCCESS"))
28+
loader = cl;
29+
return this;
30+
}
31+
32+
@Override
33+
public void run()
34+
{
35+
try
3636
{
37-
Log.other(
38-
"领取〈每日签到〉〈" + jo.getString("signinPoint") +
39-
"积分〉,已签到〈" + jo.getString("signinSumDay") + "天〉");
40-
}else
37+
if(Statistics.canMemberSigninToday())
38+
{
39+
String s = AntMemberRpcCall.rpcCall_memberSignin(loader);
40+
JSONObject jo = new JSONObject(s);
41+
if(jo.getString("resultCode").equals("SUCCESS"))
42+
{
43+
Log.other(
44+
"领取〈每日签到〉〈" + jo.getString("signinPoint") +
45+
"积分〉,已签到〈" + jo.getString("signinSumDay") + "天〉");
46+
Statistics.memberSigninToday();
47+
}else
48+
{
49+
Log.recordLog(jo.getString("resultDesc"), s);
50+
}
51+
}
52+
queryPointCert(loader, 1, 8);
53+
claimFamilyPoint(loader);
54+
}catch(Throwable t)
4155
{
42-
Log.recordLog(jo.getString("resultDesc"), s);
56+
Log.i(TAG, "receivePoint.run err:");
57+
Log.printStackTrace(TAG, t);
4358
}
44-
queryPointCert(loader, 1, 8);
45-
claimFamilyPoint(loader);
46-
Statistics.receivePointToday();
47-
}catch(Throwable t)
48-
{
49-
Log.i(TAG, "receivePoint.run err:");
50-
Log.printStackTrace(TAG, t);
5159
}
52-
}
53-
}.setData(loader).start();
60+
}.setData(loader).start();
61+
times = (times + 1) % (3600_000 / Config.checkInterval());
5462
}
5563

5664
private static void queryPointCert(ClassLoader loader, int page, int pageSize)
@@ -96,7 +104,8 @@ private static void claimFamilyPoint(ClassLoader loader)
96104
{
97105
try
98106
{
99-
String s = AntMemberRpcCall.rpcCall_familyHomepage(loader);
107+
String s = AntMemberRpcCall.rpcCall_familySignin(loader);
108+
s = AntMemberRpcCall.rpcCall_familyHomepage(loader);
100109
JSONObject jo = new JSONObject(s);
101110
if(jo.getBoolean("success"))
102111
{

0 commit comments

Comments
 (0)