summaryrefslogtreecommitdiffstats
path: root/tests/UsageStatsTest
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2014-09-02 16:43:52 -0700
committerAdam Lesinski <adamlesinski@google.com>2014-09-04 12:15:32 -0700
commit7f61e96db7c90c1f4418359672aa4656aebee500 (patch)
tree6748f94db635e24c26a6a7236c444e2c0d906181 /tests/UsageStatsTest
parentd400ca2f8db42e57e41f2a999833703619348fef (diff)
downloadframeworks_base-7f61e96db7c90c1f4418359672aa4656aebee500.zip
frameworks_base-7f61e96db7c90c1f4418359672aa4656aebee500.tar.gz
frameworks_base-7f61e96db7c90c1f4418359672aa4656aebee500.tar.bz2
Add Configuration changes to UsageStats
Bug:17354208 Change-Id: I9b2f595e51b656607e30e798926cfb7e25134944
Diffstat (limited to 'tests/UsageStatsTest')
-rw-r--r--tests/UsageStatsTest/Android.mk2
-rw-r--r--tests/UsageStatsTest/res/layout/config_row_item.xml7
-rw-r--r--tests/UsageStatsTest/res/layout/row_item.xml12
-rw-r--r--tests/UsageStatsTest/src/com/android/tests/usagestats/UsageLogActivity.java90
4 files changed, 80 insertions, 31 deletions
diff --git a/tests/UsageStatsTest/Android.mk b/tests/UsageStatsTest/Android.mk
index 69fefeb..5f7467a 100644
--- a/tests/UsageStatsTest/Android.mk
+++ b/tests/UsageStatsTest/Android.mk
@@ -6,6 +6,8 @@ LOCAL_MODULE_TAGS := tests
# Only compile source java files in this apk.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
+
LOCAL_PACKAGE_NAME := UsageStatsTest
include $(BUILD_PACKAGE)
diff --git a/tests/UsageStatsTest/res/layout/config_row_item.xml b/tests/UsageStatsTest/res/layout/config_row_item.xml
new file mode 100644
index 0000000..547de04
--- /dev/null
+++ b/tests/UsageStatsTest/res/layout/config_row_item.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@android:id/text1"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"/>
diff --git a/tests/UsageStatsTest/res/layout/row_item.xml b/tests/UsageStatsTest/res/layout/row_item.xml
index da50163..4f2bfe4 100644
--- a/tests/UsageStatsTest/res/layout/row_item.xml
+++ b/tests/UsageStatsTest/res/layout/row_item.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
@@ -8,13 +9,10 @@
<TextView android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_centerVertical="true"
+ android:layout_weight="1"
android:textStyle="bold"/>
<TextView android:id="@android:id/text2"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_alignBaseline="@android:id/text1"/>
-</RelativeLayout>
+ android:layout_height="wrap_content"/>
+</LinearLayout>
diff --git a/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageLogActivity.java b/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageLogActivity.java
index 5f62ad8..31e7c38 100644
--- a/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageLogActivity.java
+++ b/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageLogActivity.java
@@ -21,6 +21,7 @@ import android.app.usage.UsageStatsManager;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
+import android.support.v4.util.CircularArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -35,11 +36,14 @@ public class UsageLogActivity extends ListActivity implements Runnable {
private UsageStatsManager mUsageStatsManager;
private Adapter mAdapter;
private Handler mHandler = new Handler();
+ private long mLastTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
+ mLastTime = System.currentTimeMillis() - USAGE_STATS_PERIOD;
+
mAdapter = new Adapter();
setListAdapter(mAdapter);
}
@@ -59,24 +63,31 @@ public class UsageLogActivity extends ListActivity implements Runnable {
@Override
public void run() {
long now = System.currentTimeMillis();
- long beginTime = now - USAGE_STATS_PERIOD;
- UsageEvents events = mUsageStatsManager.queryEvents(beginTime, now);
- mAdapter.update(events);
+ UsageEvents events = mUsageStatsManager.queryEvents(mLastTime, now);
+ long lastEventTime = mAdapter.update(events);
+ if (lastEventTime >= 0) {
+ mLastTime = lastEventTime + 1;
+ }
mHandler.postDelayed(this, 1000 * 5);
}
private class Adapter extends BaseAdapter {
+ private static final int MAX_EVENTS = 50;
+ private final CircularArray<UsageEvents.Event> mEvents = new CircularArray<>(MAX_EVENTS);
- private final ArrayList<UsageEvents.Event> mEvents = new ArrayList<>();
-
- public void update(UsageEvents results) {
- mEvents.clear();
+ public long update(UsageEvents results) {
+ long lastTimeStamp = -1;
while (results.hasNextEvent()) {
UsageEvents.Event event = new UsageEvents.Event();
results.getNextEvent(event);
- mEvents.add(event);
+ lastTimeStamp = event.getTimeStamp();
+ if (mEvents.size() == MAX_EVENTS) {
+ mEvents.popLast();
+ }
+ mEvents.addFirst(event);
}
notifyDataSetChanged();
+ return lastTimeStamp;
}
@Override
@@ -85,7 +96,7 @@ public class UsageLogActivity extends ListActivity implements Runnable {
}
@Override
- public Object getItem(int position) {
+ public UsageEvents.Event getItem(int position) {
return mEvents.get(position);
}
@@ -95,41 +106,72 @@ public class UsageLogActivity extends ListActivity implements Runnable {
}
@Override
+ public int getItemViewType(int position) {
+ final int eventType = getItem(position).getEventType();
+ if (eventType == UsageEvents.Event.CONFIGURATION_CHANGE) {
+ return 1;
+ }
+ return 0;
+ }
+
+ @Override
public View getView(int position, View convertView, ViewGroup parent) {
+ final UsageEvents.Event event = getItem(position);
+
final ViewHolder holder;
if (convertView == null) {
- convertView = LayoutInflater.from(UsageLogActivity.this)
- .inflate(R.layout.row_item, parent, false);
holder = new ViewHolder();
- holder.packageName = (TextView) convertView.findViewById(android.R.id.text1);
- holder.state = (TextView) convertView.findViewById(android.R.id.text2);
+
+ if (event.getEventType() == UsageEvents.Event.CONFIGURATION_CHANGE) {
+ convertView = LayoutInflater.from(UsageLogActivity.this)
+ .inflate(R.layout.config_row_item, parent, false);
+ holder.config = (TextView) convertView.findViewById(android.R.id.text1);
+ } else {
+ convertView = LayoutInflater.from(UsageLogActivity.this)
+ .inflate(R.layout.row_item, parent, false);
+ holder.packageName = (TextView) convertView.findViewById(android.R.id.text1);
+ holder.state = (TextView) convertView.findViewById(android.R.id.text2);
+ }
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
- holder.packageName.setText(mEvents.get(position).getPackageName());
- String state;
- switch (mEvents.get(position).getEventType()) {
+ if (holder.packageName != null) {
+ holder.packageName.setText(event.getPackageName());
+ }
+
+ if (holder.state != null) {
+ holder.state.setText(eventToString(event.getEventType()));
+ }
+
+ if (holder.config != null &&
+ event.getEventType() == UsageEvents.Event.CONFIGURATION_CHANGE) {
+ holder.config.setText(event.getConfiguration().toString());
+ }
+ return convertView;
+ }
+
+ private String eventToString(int eventType) {
+ switch (eventType) {
case UsageEvents.Event.MOVE_TO_FOREGROUND:
- state = "Foreground";
- break;
+ return "Foreground";
case UsageEvents.Event.MOVE_TO_BACKGROUND:
- state = "Background";
- break;
+ return "Background";
+
+ case UsageEvents.Event.CONFIGURATION_CHANGE:
+ return "Config change";
default:
- state = "Unknown: " + mEvents.get(position).getEventType();
- break;
+ return "Unknown: " + eventType;
}
- holder.state.setText(state);
- return convertView;
}
}
static class ViewHolder {
public TextView packageName;
public TextView state;
+ public TextView config;
}
}