Skip to content

Commit

Permalink
Update documents && Change version to v0.5
Browse files Browse the repository at this point in the history
  • Loading branch information
renyuneyun committed Dec 20, 2017
2 parents 9a8fbdc + 9c42bcb commit c7f54dd
Show file tree
Hide file tree
Showing 79 changed files with 2,042 additions and 62 deletions.
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
CHANGELOG
======

* v0.5: Add Timer and NFC Event & Set alarm Operation && Fix leaked BroadcastListener && Fix "unsatisfied" not triggered && Better UI for settings page
* Add `TimerEventPlugin` to set a timer which allows delaying for a few time
* Add `NfcTagEventPlugin` to listen to NFC tag being scanned
* Add `AlarmOperationPlugin` to set alarm
* Fix leaked BroadcastListener in two classes (should benefit battery consumption)
* Fix "unsatisfied" not trigger (fix part of the desired function)
* Better UI for settings page
* Add spaces between each categories
* Fix translation
* Add "back" to the UI
* Fix title for "settings" and "about"

* v0.4.9: Add Event for listening to notifications and Operation for sending notifications && Add a setting entry for enabling / disabling plugins && Add compatibility checking for plugins && Inform future changes && Bug fixes
* Add `NotificationEventPlugin` to listen to notifications and `SendNotificationOperationPlugin` to post notifications
* Add a setting entry to enable or disable plugins
Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ android {
applicationId 'ryey.easer'
minSdkVersion 15
targetSdkVersion 23
versionCode 48
versionName "0.4.9"
versionCode 49
versionName "0.5"

vectorDrawables.useSupportLibrary = true

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package ryey.easer.plugins.event.nfc_tag;

import android.os.Parcel;

import org.junit.Test;

import ryey.easer.plugins.operation.TestHelper;

import static org.junit.Assert.assertEquals;

public class NfcTagEventDataTest {

public static NfcTagEventData createDummyData() {
NfcTagEventData dummyData = new NfcTagEventData();
dummyData.set("01479362");
return dummyData;
}

@Test
public void testParcel() {
NfcTagEventData dummyData = createDummyData();
Parcel parcel = TestHelper.writeToParcel(dummyData);
NfcTagEventData parceledData = NfcTagEventData.CREATOR.createFromParcel(parcel);
assertEquals(dummyData, parceledData);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package ryey.easer.plugins.event.timer;

import android.os.Parcel;

import org.junit.Test;

import ryey.easer.plugins.operation.TestHelper;

import static org.junit.Assert.assertEquals;

public class TimerEventDataTest {

public static TimerEventData createDummyData() {
TimerEventData dummyData = new TimerEventData();
TimerEventData.Timer timer = new TimerEventData.Timer();
timer.exact = true;
timer.repeat = true;
timer.minutes = 102;
dummyData.set(timer);
return dummyData;
}

@Test
public void testParcel() {
TimerEventData dummyData = createDummyData();
Parcel parcel = TestHelper.writeToParcel(dummyData);
TimerEventData parceledData = TimerEventData.CREATOR.createFromParcel(parcel);
assertEquals(dummyData, parceledData);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package ryey.easer.plugins.operation.alarm;

import android.os.Parcel;

import org.junit.Test;

import java.util.Calendar;

import ryey.easer.plugins.operation.TestHelper;

import static org.junit.Assert.assertEquals;

public class AlarmOperationDataTest {

public static AlarmOperationData createDummyData() {
AlarmOperationData dummyData = new AlarmOperationData();
AlarmOperationData.AlarmData alarmData = new AlarmOperationData.AlarmData();
alarmData.time = Calendar.getInstance();
alarmData.message = "my message";
alarmData.absolute = false;
dummyData.set(alarmData);
return dummyData;
}

@Test
public void testParcel() {
AlarmOperationData dummyData = createDummyData();
Parcel parcel = TestHelper.writeToParcel(dummyData);
AlarmOperationData parceledData = AlarmOperationData.CREATOR.createFromParcel(parcel);
assertEquals(dummyData, parceledData);
}

}
24 changes: 18 additions & 6 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Expand All @@ -21,6 +22,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />

<application
android:name=".EaserApplication"
Expand Down Expand Up @@ -48,8 +50,12 @@
android:name=".core.ProfileLoaderIntentService"
android:exported="false" />

<activity android:name=".core.ui.AboutActivity" />
<activity android:name=".core.ui.setting.SettingsActivity" />
<activity
android:name=".core.ui.AboutActivity"
android:label="@string/title_about" />
<activity
android:name=".core.ui.setting.SettingsActivity"
android:label="@string/title_setting" />

<receiver
android:name=".core.BootupReceiver"
Expand All @@ -62,11 +68,10 @@

<activity android:name=".core.ui.edit.EditEventActivity" />
<activity android:name=".core.ui.edit.EditProfileActivity" />

<activity
android:name="ryey.easer.plugins.operation.brightness.DumbSettingBrightnessActivity"
android:taskAffinity="com.antonc.phone_schedule.Dummy"
android:name=".plugins.operation.brightness.DumbSettingBrightnessActivity"
android:excludeFromRecents="true"
android:taskAffinity="com.antonc.phone_schedule.Dummy"
android:theme="@style/EmptyActivity" />

<service
Expand All @@ -77,7 +82,6 @@
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>

<service
android:name=".plugins.event.notification.NotificationEventListenerService"
android:label="@string/label_event_notification_listener_service"
Expand All @@ -86,6 +90,14 @@
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>

<activity android:name=".plugins.event.nfc_tag.WaitForNfcActivity"
android:theme="@style/AppTheme.ActivityDialog">
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ public interface PluginDef {

/**
* Check whether this plugin is compatible to the current device.
* @param context Easer's context
* @return Whether the plugin is compatible or not
*/
boolean isCompatible();
boolean isCompatible(@NonNull final Context context);

/**
* Checks all permission(s) used by this plugin
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/ryey/easer/core/EHService.java
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ public void onCreate() {
public void onDestroy() {
Logger.v("onDestroy");
super.onDestroy();
mCancelTriggers();
unregisterReceiver(mReceiver);
running = false;
Intent intent = new Intent(ACTION_STATE_CHANGED);
Expand Down
9 changes: 1 addition & 8 deletions app/src/main/java/ryey/easer/core/Lotus.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public void onReceive(Context context, Intent intent) {
{
filter = new IntentFilter();
filter.addAction(ACTION_SLOT_SATISFIED);
filter.addAction(ACTION_SLOT_UNSATISFIED);
filter.addCategory(CATEGORY_NOTIFY_LOTUS);
filter.addDataScheme(uri.getScheme());
filter.addDataAuthority(uri.getAuthority(), null);
Expand All @@ -96,14 +97,6 @@ public void onReceive(Context context, Intent intent) {
intent1.setAction(ACTION_SLOT_UNSATISFIED);
notifyLotusUnsatisfiedIntent = PendingIntent.getBroadcast(context, 0, intent1, 0);

IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_SLOT_SATISFIED);
filter.addCategory(CATEGORY_NOTIFY_LOTUS);
filter.addDataScheme(uri.getScheme());
filter.addDataAuthority(uri.getAuthority(), null);
filter.addDataPath(uri.getPath(), PatternMatcher.PATTERN_LITERAL);
context.registerReceiver(mReceiver, filter);

mSlot = dataToSlot(eventTree.getEvent());
mSlot.register(notifyLotusIntent, notifyLotusUnsatisfiedIntent);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import java.util.List;
import java.util.Map;

import ryey.easer.commons.plugindef.eventplugin.EventData;
import ryey.easer.core.data.EventStructure;
import ryey.easer.core.data.EventTree;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class PluginEnabledPreference extends CheckBoxPreference {
super(context);
setKey(CommonHelper.pluginEnabledKey(plugin));
setTitle(plugin.name());
boolean isCompatible = plugin.isCompatible();
boolean isCompatible = plugin.isCompatible(context);
if (isCompatible) {
setDefaultValue(true);
} else {
Expand Down
13 changes: 13 additions & 0 deletions app/src/main/java/ryey/easer/core/ui/setting/SettingsActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.Toast;

import com.orhanobut.logger.Logger;
Expand Down Expand Up @@ -43,6 +44,18 @@ protected void onCreate(Bundle savedInstanceState) {
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
Expand Down
8 changes: 7 additions & 1 deletion app/src/main/java/ryey/easer/plugins/PluginRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,14 @@
import ryey.easer.plugins.event.connectivity.ConnectivityEventPlugin;
import ryey.easer.plugins.event.date.DateEventPlugin;
import ryey.easer.plugins.event.dayofweek.DayOfWeekEventPlugin;
import ryey.easer.plugins.event.nfc_tag.NfcTagEventPlugin;
import ryey.easer.plugins.event.notification.NotificationEventPlugin;
import ryey.easer.plugins.event.sms.SmsEventPlugin;
import ryey.easer.plugins.event.time.TimeEventPlugin;
import ryey.easer.plugins.event.timer.TimerEventPlugin;
import ryey.easer.plugins.event.wifi.WifiEventPlugin;
import ryey.easer.plugins.operation.airplane_mode.AirplaneModeOperationPlugin;
import ryey.easer.plugins.operation.alarm.AlarmOperationPlugin;
import ryey.easer.plugins.operation.bluetooth.BluetoothOperationPlugin;
import ryey.easer.plugins.operation.brightness.BrightnessOperationPlugin;
import ryey.easer.plugins.operation.broadcast.BroadcastOperationPlugin;
Expand Down Expand Up @@ -92,6 +95,8 @@ final public class PluginRegistry {
event().registerPlugin(BroadcastEventPlugin.class);
event().registerPlugin(SmsEventPlugin.class);
event().registerPlugin(NotificationEventPlugin.class);
event().registerPlugin(TimerEventPlugin.class);
event().registerPlugin(NfcTagEventPlugin.class);

operation().registerPlugin(WifiOperationPlugin.class);
operation().registerPlugin(CellularOperationPlugin.class);
Expand All @@ -108,6 +113,7 @@ final public class PluginRegistry {
operation().registerPlugin(AirplaneModeOperationPlugin.class);
operation().registerPlugin(SendSmsOperationPlugin.class);
operation().registerPlugin(SendNotificationOperationPlugin.class);
operation().registerPlugin(AlarmOperationPlugin.class);
//TODO: write more plugins
}

Expand Down Expand Up @@ -174,7 +180,7 @@ public List<T> getEnabledPlugins(@NonNull Context context) {
PreferenceManager.getDefaultSharedPreferences(context);
for (T plugin : pluginList) {
if (settingsPreference.getBoolean(CommonHelper.pluginEnabledKey(plugin), true)
&& plugin.isCompatible()) {
&& plugin.isCompatible(context)) {
enabledPlugins.add(plugin);
}
}
Expand Down
15 changes: 13 additions & 2 deletions app/src/main/java/ryey/easer/plugins/event/SelfNotifiableSlot.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public abstract class SelfNotifiableSlot extends AbstractSlot {
// After sent, this will trigger onNegativeNotified().
// Meant to be used when the event is going to a negative state.
protected final PendingIntent notifySelfIntent_negative;
private final IntentFilter filter;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Expand All @@ -45,13 +46,13 @@ public void onReceive(Context context, Intent intent) {

protected SelfNotifiableSlot(@NonNull Context context) {
super(context);
IntentFilter filter = new IntentFilter();
filter = new IntentFilter();
filter.addAction(ACTION_SATISFIED);
filter.addAction(ACTION_UNSATISFIED);
filter.addCategory(CATEGORY_NOTIFY_SLOT);
filter.addDataScheme(uri.getScheme());
filter.addDataAuthority(uri.getAuthority(), null);
filter.addDataPath(uri.getPath(), PatternMatcher.PATTERN_LITERAL);
context.registerReceiver(mReceiver, filter);

Intent intent = new Intent(ACTION_SATISFIED);
intent.addCategory(CATEGORY_NOTIFY_SLOT);
Expand All @@ -61,6 +62,16 @@ protected SelfNotifiableSlot(@NonNull Context context) {
notifySelfIntent_negative = PendingIntent.getBroadcast(context, 0, intent, 0);
}

@Override
public void listen() {
context.registerReceiver(mReceiver, filter);
}

@Override
public void cancel() {
context.unregisterReceiver(mReceiver);
}

protected void onPositiveNotified() {
Logger.v("onPositiveNotified");
changeSatisfiedState(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public int name() {
}

@Override
public boolean isCompatible() {
public boolean isCompatible(@NonNull final Context context) {
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public int name() {
}

@Override
public boolean isCompatible() {
public boolean isCompatible(@NonNull final Context context) {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
return adapter != null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public int name() {
}

@Override
public boolean isCompatible() {
public boolean isCompatible(@NonNull final Context context) {
return true;
}

Expand Down
Loading

0 comments on commit c7f54dd

Please sign in to comment.