How to create a standalone Android application with Aware Applications sensor
I recently had to create a standalone android application with Aware applications sensor.
I summed up the steps in this post for a reference.
Add the following variable to build.gradle (Project: Application) (it should be added just before buildscript{})
project.ext {
aware_libs = (System.getenv("aware_libs") as String ?: "development-SNAPSHOT")
}
Add Aware in build.gradle (Module: app). In order to do that inside the dependencies curly braces put:
api "com.github.denzilferreira:aware-client:$aware_libs"
Add jitpack repository in build.gradle (Module: app). For that inside repositories curly braces add:
maven { url 'https://jitpack.io' }
Inside values folder create bools.xml file containing the following: (please remember these are all tags, they are not being displayed in my blog, but I will fix it later once I have)
< ?xml version="1.0" encoding="utf-8"? >
< resources>
< item name="accessibility_access" format="boolean" type="bool">true</ item>
< item name="standalone" format="boolean" type="bool">true</ item>
</ resources>
5. Override < service> tag in the Manifest file < application> tag:
< service
android:name="com.aware.Applications"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
tools:replace="android:enabled">
< intent-filter>
< action android:name="android.accessibilityservice.AccessibilityService" />
< category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC" />
</ intent-filter>
< meta-data
android:name="android.accessibilityservice"
android:resource="@xml/aware_accessibility_config" />
</ service>
Add permissions inside the Manifest file before the < application> tag:
< permission
android:name="com.aware.READ_CONTEXT_DATA"
android:description="@string/read_permission"
android:icon="@drawable/ic_launcher_settings"
android:label="Read AWARE's Context data"
android:protectionLevel="normal" />
< permission
android:name="com.aware.WRITE_CONTEXT_DATA"
android:description="@string/write_permission"
android:icon="@drawable/ic_launcher_settings"
android:label="Write to AWARE's Context data"
android:protectionLevel="normal" />
Within the MainActivity (or service) where you want to use the sensor, start Aware:
either using the intent:
Intent aware = new Intent(this, Aware.class);
startService(aware);
or simply calling:
Aware.startAWARE(this);
Start the Applications sensor:
Aware.setSetting(this, Aware_Preferences.STATUS_APPLICATIONS, true);
Applications.isAccessibilityServiceActive(getApplicationContext());
Set Applications sensor observer:
Applications.setSensorObserver(new Applications.AWARESensorObserver() {
@Override
public void onForeground(ContentValues data) {
Log.d(TAG, data.toString());
}
@Override
public void onNotification(ContentValues data) {
}
@Override
public void onCrash(ContentValues data) {
}
@Override
public void onKeyboard(ContentValues data) {
}
@Override
public void onBackground(ContentValues data) {
}
@Override
public void onTouch(ContentValues data) {
}
});
Your application should be working fine now.
Written on March 13, 2018