Skip to content

Commit 6750841

Browse files
committed
To-dos 1: query usage for a specific package.
1 parent 69c16b3 commit 6750841

20 files changed

Lines changed: 225 additions & 41 deletions

app/src/main/java/com/example/appusage/MainActivity.java

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,22 @@
1010
import android.widget.Spinner;
1111
import android.widget.TextView;
1212

13+
import com.squareup.picasso.Picasso;
14+
15+
import java.time.chrono.MinguoChronology;
1316
import java.util.List;
1417

18+
import bot.box.appusage.contract.PackageContracts;
1519
import bot.box.appusage.contract.UsageContracts;
1620
import bot.box.appusage.handler.Monitor;
21+
import bot.box.appusage.handler.UsageGenerator;
1722
import bot.box.appusage.model.AppData;
23+
import bot.box.appusage.presenter.UsagePresenter;
1824
import bot.box.appusage.utils.Duration;
1925
import bot.box.appusage.utils.UsageUtils;
2026

21-
public class MainActivity extends AppCompatActivity implements UsageContracts.View, AdapterView.OnItemSelectedListener {
27+
public class MainActivity extends AppCompatActivity implements UsageContracts.View
28+
, PackageContracts.View, AdapterView.OnItemSelectedListener {
2229

2330
private RecyclerView mRecycler;
2431
private AppAdapter mAdapter;
@@ -61,42 +68,39 @@ private void init() {
6168
mRecycler.setAdapter(mAdapter);
6269
}
6370

64-
/**
65-
* @param usageData list of application that has been within the duration for which query has been made.
66-
* @param mTotalUsage a sum total of the usage by each and every app with in the request duration.
67-
* @param duration the same duration for which query has been made i.e.fetchFor(Duration...)
68-
*/
71+
@Override
72+
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
73+
// Monitor.scan().getAppLists(this).fetchFor(Duration.TODAY);
74+
Monitor.scan().queryFor(this).whichPackage("com.whatsapp").
75+
fetchFor(Duration.TODAY);
76+
}
6977

7078
@Override
71-
public void getUsageData(List<AppData> usageData, long mTotalUsage, int duration) {
72-
if (usageData.size() > 0) {
73-
tv_totalUsage.setText("Total Usage is : " + UsageUtils.humanReadableMillis(mTotalUsage));
74-
mRecycler.setVisibility(View.VISIBLE);
75-
tvUsageStatus.setVisibility(View.GONE);
76-
mAdapter.updateData(usageData);
77-
} else {
78-
mRecycler.setVisibility(View.GONE);
79-
tvUsageStatus.setVisibility(View.VISIBLE);
80-
tvUsageStatus.setText(getResources().getString(R.string.not_active) + Duration.getCurrentReadableDay(duration));
81-
}
79+
public void onNothingSelected(AdapterView<?> adapterView) {
8280
}
8381

8482

8583
@Override
8684
public void showProgress() {
85+
8786
}
8887

8988
@Override
9089
public void hideProgress() {
90+
9191
}
92+
/**
93+
* @param usageData list of application that has been within the duration for which query has been made.
94+
* @param mTotalUsage a sum total of the usage by each and every app with in the request duration.
95+
* @param duration the same duration for which query has been made i.e.fetchFor(Duration...)
96+
*/
9297

9398
@Override
94-
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
95-
Monitor.scan().getAppLists(this).fetchFor(i);
99+
public void getUsageData(List<AppData> usageData, long mTotalUsage, int duration) {
100+
mAdapter.updateData(usageData);
96101
}
97102

98103
@Override
99-
public void onNothingSelected(AdapterView<?> adapterView) {
100-
104+
public void getUsageForPackage(String mPackage, long mTotalUsage, int duration) {
101105
}
102106
}

appusagemonitor/src/main/java/bot/box/appusage/BotMonitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/**
1111
* Created by BarryAllen
1212
*
13-
* @TheBotBOx boxforbot@gmail.com
13+
* @TheBotBox boxforbot@gmail.com
1414
*/
1515
public class BotMonitor {
1616

appusagemonitor/src/main/java/bot/box/appusage/contract/BaseView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/**
44
* Created by BarryAllen
55
*
6-
* @TheBotBOx boxforbot@gmail.com
6+
* @TheBotBox boxforbot@gmail.com
77
*/
88

99
public interface BaseView {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package bot.box.appusage.contract;
2+
3+
import bot.box.appusage.utils.Duration;
4+
5+
/**
6+
* Created by Barry Allen .
7+
* boxforbot@gmail.com
8+
*/
9+
10+
public class PackageContracts {
11+
12+
public interface View extends BaseView {
13+
14+
void getUsageForPackage(String mPackage, long mTotalUsage, @Duration.DURATION int duration);
15+
}
16+
17+
public interface Presenter {
18+
void loadUsageForPackage(int duration, String mPackageName);
19+
}
20+
}

appusagemonitor/src/main/java/bot/box/appusage/contract/UsageContracts.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
/**
99
* Created by BarryAllen
1010
*
11-
* @TheBotBOx boxforbot@gmail.com
11+
* @TheBotBox boxforbot@gmail.com
1212
*/
1313
public class UsageContracts {
1414

1515
public interface View extends BaseView {
1616
void getUsageData(List<AppData> usageData, long mTotalUsage, @Duration.DURATION int duration);
17+
18+
1719
}
1820

1921
public interface Presenter {

appusagemonitor/src/main/java/bot/box/appusage/datamanager/DataManager.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
/**
2020
* Created by BarryAllen
2121
*
22-
* @TheBotBOx boxforbot@gmail.com
22+
* @TheBotBox boxforbot@gmail.com
2323
*/
2424
public class DataManager {
2525

@@ -136,7 +136,6 @@ private AppData containItem(List<AppData> items, String packageName) {
136136
}
137137
return null;
138138
}
139-
140139
class ClonedEvent {
141140

142141
String packageName;

appusagemonitor/src/main/java/bot/box/appusage/delegate/FetchAppUsageDelegate.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
/**
1212
* Created by BarryAllen
1313
*
14-
* @TheBotBOx boxforbot@gmail.com
14+
* @TheBotBox boxforbot@gmail.com
1515
*/
1616
public class FetchAppUsageDelegate extends AsyncTask<Integer, Integer, List<AppData>> {
1717
private AppUsageCallback mListener;
@@ -39,12 +39,17 @@ protected void onPostExecute(List<AppData> aVoid) {
3939
for (AppData item : aVoid) {
4040
if (item.mUsageTime <= 0) continue;
4141
mTotalUsage += item.mUsageTime;
42-
item.mCanOpen = BotMonitor.getMonitorContext().getPackageManager().getLaunchIntentForPackage(item.mPackageName) != null;
42+
item.mCanOpen = BotMonitor.getMonitorContext().
43+
getPackageManager().getLaunchIntentForPackage(item.mPackageName) != null;
4344
}
4445

4546
this.mListener.onAppDataFetch(aVoid, mTotalUsage);
4647
}
4748

49+
public void executeExecutor(int duration) {
50+
executeOnExecutor(THREAD_POOL_EXECUTOR, duration);
51+
}
52+
4853
public interface AppUsageCallback {
4954
void onPreExecute();
5055

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package bot.box.appusage.delegate;
2+
3+
/**
4+
* Created by Barry Allen .
5+
* boxforbot@gmail.com
6+
*/
7+
8+
public class FetchPackageUsageDelegate {
9+
}

appusagemonitor/src/main/java/bot/box/appusage/handler/Monitor.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package bot.box.appusage.handler;
22

33
import bot.box.appusage.BotMonitor;
4+
import bot.box.appusage.contract.PackageContracts;
45
import bot.box.appusage.contract.UsageContracts;
6+
import bot.box.appusage.presenter.PackagePresenter;
57
import bot.box.appusage.presenter.UsagePresenter;
68

9+
import static bot.box.appusage.utils.UsageContants.QUERY_FOR_SPECIFIC_PACKAGE;
10+
711
/**
812
* Created by BarryAllen
913
*
10-
* @TheBotBOx boxforbot@gmail.com
14+
* @TheBotBox boxforbot@gmail.com
1115
*/
1216
public class Monitor {
1317

@@ -39,5 +43,9 @@ public UsageGenerator getAppLists(UsageContracts.View mView) {
3943
return new UsageGenerator(new UsagePresenter(mView));
4044
}
4145

46+
public PackageGenerator queryFor(PackageContracts.View mView) {
47+
return new PackageGenerator(new PackagePresenter(mView));
48+
}
49+
4250

4351
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package bot.box.appusage.handler;
2+
3+
import bot.box.appusage.contract.PackageContracts;
4+
import bot.box.appusage.utils.Duration;
5+
6+
/**
7+
* Created by Barry Allen .
8+
* boxforbot@gmail.com
9+
*/
10+
11+
public class PackageGenerator {
12+
13+
private PackageContracts.Presenter mPresenter;
14+
15+
PackageGenerator(PackageContracts.Presenter mPresenter) {
16+
this.mPresenter = mPresenter;
17+
}
18+
19+
20+
public void fetchFor(@Duration.DURATION int duration) {
21+
if (this.mPackageName.trim().length() != 0)
22+
fetchFor(duration, this.mPackageName);
23+
else
24+
throw new IllegalArgumentException("Must provide a legit package name i.e. " +
25+
"Monitor.scan().queryFor().whichPackage().fetchFor()");
26+
}
27+
28+
29+
private void fetchFor(@Duration.DURATION int duration, String mPackage) {
30+
if (mPresenter != null)
31+
this.mPresenter.loadUsageForPackage(duration, mPackage);
32+
else
33+
throw new IllegalStateException("Your view must implement UsageContract.View");
34+
}
35+
36+
private String mPackageName;
37+
38+
public PackageGenerator whichPackage(String mPackage) {
39+
if (mPackage.trim().length() == 0) {
40+
throw new IllegalArgumentException("Package Name must not be empty.");
41+
}
42+
this.mPackageName = mPackage;
43+
return this;
44+
}
45+
46+
}

0 commit comments

Comments
 (0)