Giter VIP home page Giter VIP logo

percolator's Introduction

PERCOLATOR

Overview

Build

  1. Install latest Android SDK
  2. Install Android SDK artifacts into local Maven repository The Maven Android SDK Deployer makes this easy. Sonatype have some good documentation for this step.
  3. Build Percolator
    • mvn clean package

Release

To build Percolator for release, simply build with the 'release' profile: mvn clean package -Prelease

Note that to sign the apk for release on Google Play, you will need to have the keystore used to sign Percolator.

percolator's People

Contributors

connollyst avatar

Watchers

 avatar James Cloos avatar  avatar

percolator's Issues

Add Vibrate Notification

Vibrate the phone when a notification comes in.

Note, this should be off my default and thus requires the Settings feature to be included.

Sort List

It's currently sorted the wrong way, we want most active notifications up top.

Add Settings

Add a settings page with available configurations:

  • Early cutoff time
  • Late cutoff time
  • Maximum reminders per day
  • Number of reminders per card? (eg, 3 reminders total vs 5)

Improve Notification UI

Add color, icon, buttons, etc.

When you tap it, it should go to that notification.
When you swipe, it it should go away.
There should be buttons to dismiss it or to open it maybe.

What about challenges?

Improve Textboxes

When you type, the text should shrink to fit.. to a certain extent.

Replace queryForAll with Iteration (performance)

We currently query for all Cards in one go. It would be safer to iterate through them one at a time. Similarly, the ListView depends on knowing all cards up front.. can we just fetch the visible cards?

State Not Saved on Close

If you type some text into the fields, then close out of the app and reopen it, all previous input is lost.

Prioritize Short Term Notifications

We should give priority to short term notifications over long term notifications. That is, if a one day notification should be scheduled tomorrow, but tomorrow has reached it's max because of one month notifications, it shouldn't be bumped to the day after, one of the other notifications should.

Crash on Startup

Application crashes when device starts. Probably a configuration with the background activity.

Can Enter Blank Reminder

Currently, we can just click save and save a blank reminder.

The Save button shouldn't be enabled until some text has been entered.

Can a reminder be submitted without a description?

Message Frequency Issue

Too many messages are sent in a single day. We should limit it to one message a day for simplicity until this bug is fixed.

List Activity Crash

I opened the app and clicked the 'List' button to get this error:

11-24 11:53:28.449: INFO/PowerManagerService(386): Waking up from sleep...
11-24 11:53:28.504: INFO/WindowManager(386): Lock screen displayed!
11-24 11:53:28.668: VERBOSE/DigitalWidgetViewsFactory(6490): DigitalWidget sets next alarm string to Mon 09:30
11-24 11:53:28.824: DEBUG/PowerManagerService-JNI(386): Excessive delay in autosuspend_disable() while turning screen on: 347ms
11-24 11:53:28.824: DEBUG/SurfaceFlinger(125): Screen acquired, type=0 flinger=0x4119f478
11-24 11:53:28.910: DEBUG/LightsService(386): Excessive delay setting light: 82ms
11-24 11:53:31.340: DEBUG/PhoneStatusBar(481): disable: < expand* icons alerts ticker* system_info BACK HOME recent* CLOCK search >
11-24 11:53:31.402: DEBUG/PhoneStatusBar(481): disable: < expand icons alerts ticker system_info back* home* recent clock* search >
11-24 11:53:31.402: WARN/InputMethodManagerService(386): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@42973048 attribute=android.view.inputmethod.EditorInfo@434f3640, token = android.os.BinderProxy@432786e8
11-24 11:53:31.871: VERBOSE/TAG(386): bug 7643792: fitSystemWindows([0,50][0,0])
11-24 11:53:33.011: VERBOSE/PanelView(481): animationTick called with dtms=0; nothing to do (h=723.0 v=306.96854)
11-24 11:53:33.011: VERBOSE/PanelView(481): animationTick called with dtms=-4; nothing to do (h=723.0 v=306.96854)
11-24 11:53:34.254: INFO/ActivityManager(386): START u0 {flg=0x14000000 cmp=com.whatsapp/.Conversation bnds=[0,102][720,410] (has extras)} from pid -1
11-24 11:53:34.363: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 2088K, 19% free 19908K/24404K, paused 104ms, total 104ms
11-24 11:53:34.379: WARN/KeyguardViewMediator(386): verifyUnlock called when not externally disabled
11-24 11:53:34.386: VERBOSE/PanelView(481): animationTick called with dtms=0; nothing to do (h=1184.0 v=-4000.0)
11-24 11:53:34.582: VERBOSE/PanelView(481): animationTick called with dtms=0; nothing to do (h=378.9159 v=-4000.0)
11-24 11:53:34.590: DEBUG/dalvikvm(2677): GC_CONCURRENT freed 2414K, 33% free 16497K/24308K, paused 3ms+8ms, total 70ms
11-24 11:53:35.074: INFO/ActivityManager(386): Displayed com.whatsapp/.Conversation: +701ms
11-24 11:53:41.675: DEBUG/LightsService(386): Excessive delay setting light: 66ms
11-24 11:53:45.340: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 630K, 19% free 19798K/24404K, paused 97ms, total 97ms
11-24 11:53:45.425: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 14K, 18% free 20156K/24404K, paused 75ms, total 75ms
11-24 11:53:45.425: INFO/dalvikvm-heap(386): Grow heap (frag case) to 20.085MB for 380496-byte allocation
11-24 11:53:45.504: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 0K, 18% free 20527K/24776K, paused 83ms, total 83ms
11-24 11:53:45.605: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 743K, 21% free 19784K/24776K, paused 95ms, total 95ms
11-24 11:53:45.613: INFO/ActivityManager(386): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 386
11-24 11:53:45.668: DEBUG/dalvikvm(481): GC_CONCURRENT freed 1863K, 53% free 14232K/30032K, paused 3ms+7ms, total 49ms
11-24 11:53:45.699: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 377K, 19% free 20157K/24776K, paused 82ms, total 82ms
11-24 11:53:45.902: WARN/IInputConnectionWrapper(2677): showStatusIcon on inactive InputConnection
11-24 11:53:50.215: VERBOSE/PanelView(481): animationTick called with dtms=0; nothing to do (h=639.0 v=-3425.1406)
11-24 11:53:50.465: WARN/InputMethodManagerService(386): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@433005e8 attribute=null, token = android.os.BinderProxy@43278870
11-24 11:53:54.433: DEBUG/dalvikvm(481): GC_FOR_ALLOC freed 1545K, 53% free 14120K/30032K, paused 26ms, total 26ms
11-24 11:53:54.457: INFO/ActivityManager(386): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 386
11-24 11:53:57.636: DEBUG/dalvikvm(621): GC_CONCURRENT freed 2305K, 17% free 15800K/19004K, paused 6ms+4ms, total 52ms
11-24 11:53:57.636: DEBUG/dalvikvm(621): WAIT_FOR_CONCURRENT_GC blocked 19ms
11-24 11:54:00.941: DEBUG/Launcher.Model(621): DbDebug    Add item (Percolator) to db, id: 88 (-100, 2, 3, 2)
11-24 11:54:02.035: INFO/ActivityManager(386): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 386
11-24 11:54:02.894: INFO/ActivityManager(386): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.dosbcn.percolator/.MainActivity bnds=[520,585][680,785]} from pid 621
11-24 11:54:03.043: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 927K, 21% free 19805K/24776K, paused 95ms, total 96ms
11-24 11:54:03.129: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 758K, 21% free 19790K/24776K, paused 75ms, total 75ms
11-24 11:54:03.160: DEBUG/org.dosbcn.percolator.data.CardService(6472): Resetting all alarms.
11-24 11:54:03.175: INFO/org.dosbcn.percolator.notifications.CardAlarmQueue(6472): Queueing 'something' card for: 2013-11-24T19:11:38.551+01:00
11-24 11:54:03.175: INFO/org.dosbcn.percolator.notifications.CardAlarmQueue(6472): Queueing 'another' card for: 2013-11-24T12:07:03.033+01:00
11-24 11:54:03.207: INFO/LatinIME:LogUtils(568): Dictionary info: dictionary = ? ; version = ? ; date = ? ; filesize = 10190
11-24 11:54:03.410: INFO/ActivityManager(386): Displayed org.dosbcn.percolator/.MainActivity: +268ms
11-24 11:54:05.183: INFO/ActivityManager(386): START u0 {cmp=org.dosbcn.percolator/.ListActivity} from pid 6472
11-24 11:54:05.324: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 414K, 19% free 20176K/24776K, paused 92ms, total 92ms
11-24 11:54:05.402: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 748K, 21% free 19799K/24776K, paused 74ms, total 74ms
11-24 11:54:05.441: INFO/org.dosbcn.percolator.ListActivity(6472): Initializing adapter.
11-24 11:54:05.449: INFO/org.dosbcn.percolator.ListActivity(6472): Found cards: 2
11-24 11:54:05.519: DEBUG/AndroidRuntime(6472): Shutting down VM
11-24 11:54:05.519: WARN/dalvikvm(6472): threadid=1: thread exiting with uncaught exception (group=0x4207a700)
11-24 11:54:05.543: ERROR/AndroidRuntime(6472): FATAL EXCEPTION: main
        java.lang.IllegalArgumentException: Bad class: class org.joda.time.DateTime
        at java.text.DateFormat.format(DateFormat.java:296)
        at java.text.Format.format(Format.java:93)
        at org.dosbcn.percolator.view.CardViewAdapter.getView(CardViewAdapter.java:56)
        at android.widget.AbsListView.obtainView(AbsListView.java:2177)
        at android.widget.ListView.makeAndAddView(ListView.java:1840)
        at android.widget.ListView.fillDown(ListView.java:675)
        at android.widget.ListView.fillFromTop(ListView.java:736)
        at android.widget.ListView.layoutChildren(ListView.java:1655)
        at android.widget.AbsListView.onLayout(AbsListView.java:2012)
        at android.view.View.layout(View.java:14289)
        at android.view.ViewGroup.layout(ViewGroup.java:4559)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
        at android.view.View.layout(View.java:14289)
        at android.view.ViewGroup.layout(ViewGroup.java:4559)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
        at android.view.View.layout(View.java:14289)
        at android.view.ViewGroup.layout(ViewGroup.java:4559)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
        at android.view.View.layout(View.java:14289)
        at android.view.ViewGroup.layout(ViewGroup.java:4559)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
        at android.view.Choreographer.doCallbacks(Choreographer.java:562)
        at android.view.Choreographer.doFrame(Choreographer.java:532)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
11-24 11:54:05.550: WARN/ActivityManager(386): Force finishing activity org.dosbcn.percolator/.ListActivity
11-24 11:54:05.855: INFO/WindowManager(386): Screenshot max retries 4 of Token{43287548 ActivityRecord{42ffbc80 u0 org.dosbcn.percolator/.ListActivity}} appWin=Window{43150e10 u0 org.dosbcn.percolator/org.dosbcn.percolator.ListActivity} drawState=1
11-24 11:54:05.855: WARN/WindowManager(386): Screenshot failure taking screenshot for (720x1280) to layer 21030
11-24 11:54:05.855: WARN/ActivityManager(386): Force finishing activity org.dosbcn.percolator/.MainActivity
11-24 11:54:06.355: WARN/ActivityManager(386): Activity pause timeout for ActivityRecord{42ffbc80 u0 org.dosbcn.percolator/.ListActivity}
11-24 11:54:09.246: INFO/Process(6472): Sending signal. PID: 6472 SIG: 9
11-24 11:54:09.269: INFO/ActivityManager(386): Process org.dosbcn.percolator (pid 6472) has died.
11-24 11:54:09.269: INFO/WindowState(386): WIN DEATH: Window{43150e10 u0 org.dosbcn.percolator/org.dosbcn.percolator.ListActivity}
11-24 11:54:09.277: WARN/InputDispatcher(386): channel '431b1bf0 org.dosbcn.percolator/org.dosbcn.percolator.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
11-24 11:54:09.277: ERROR/InputDispatcher(386): channel '431b1bf0 org.dosbcn.percolator/org.dosbcn.percolator.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
11-24 11:54:09.277: WARN/InputDispatcher(386): Attempted to unregister already unregistered input channel '431b1bf0 org.dosbcn.percolator/org.dosbcn.percolator.MainActivity (server)'
11-24 11:54:09.277: INFO/WindowState(386): WIN DEATH: Window{431b1bf0 u0 org.dosbcn.percolator/org.dosbcn.percolator.MainActivity}
11-24 11:54:09.277: INFO/WindowState(386): WIN DEATH: Window{42f41d20 u0 org.dosbcn.percolator/org.dosbcn.percolator.MainActivity}
11-24 11:54:09.316: INFO/ActivityManager(386): Start proc org.dosbcn.percolator for activity org.dosbcn.percolator/.MainActivity: pid=9751 uid=10073 gids={50073, 1028}
11-24 11:54:09.324: DEBUG/dalvikvm(9751): Late-enabling CheckJNI
11-24 11:54:09.480: DEBUG/dalvikvm(9751): GC_CONCURRENT freed 221K, 3% free 9142K/9404K, paused 2ms+3ms, total 24ms
11-24 11:54:09.480: DEBUG/dalvikvm(9751): WAIT_FOR_CONCURRENT_GC blocked 8ms
11-24 11:54:09.504: DEBUG/dalvikvm(9751): GC_FOR_ALLOC freed 255K, 5% free 9234K/9656K, paused 15ms, total 15ms
11-24 11:54:09.582: DEBUG/dalvikvm(9751): GC_CONCURRENT freed 170K, 3% free 9516K/9724K, paused 2ms+2ms, total 24ms
11-24 11:54:09.691: DEBUG/dalvikvm(9751): GC_CONCURRENT freed 248K, 3% free 9736K/10024K, paused 2ms+4ms, total 26ms
11-24 11:54:09.761: DEBUG/dalvikvm(9751): GC_FOR_ALLOC freed 239K, 3% free 9764K/10052K, paused 17ms, total 17ms
11-24 11:54:09.769: INFO/dalvikvm-heap(9751): Grow heap (frag case) to 11.033MB for 1536016-byte allocation
11-24 11:54:09.785: DEBUG/dalvikvm(9751): GC_FOR_ALLOC freed 0K, 3% free 11264K/11556K, paused 18ms, total 18ms
11-24 11:54:09.800: DEBUG/dalvikvm(9751): GC_CONCURRENT freed <1K, 3% free 11263K/11556K, paused 2ms+1ms, total 20ms
11-24 11:54:09.832: DEBUG/dalvikvm(9751): GC_FOR_ALLOC freed <1K, 3% free 11263K/11556K, paused 15ms, total 15ms
11-24 11:54:09.840: INFO/dalvikvm-heap(9751): Grow heap (frag case) to 16.891MB for 6144016-byte allocation
11-24 11:54:09.855: DEBUG/dalvikvm(9751): GC_CONCURRENT freed 0K, 2% free 17263K/17560K, paused 3ms+1ms, total 20ms
11-24 11:54:09.855: DEBUG/dalvikvm(9751): WAIT_FOR_CONCURRENT_GC blocked 17ms
11-24 11:54:09.933: DEBUG/org.dosbcn.percolator.data.CardService(9751): Resetting all alarms.
11-24 11:54:10.113: INFO/org.dosbcn.percolator.notifications.CardAlarmQueue(9751): Queueing 'something' card for: 2013-11-24T19:11:38.551+01:00
11-24 11:54:10.113: INFO/org.dosbcn.percolator.notifications.CardAlarmQueue(9751): Queueing 'another' card for: 2013-11-24T12:07:03.033+01:00
11-24 11:54:10.152: DEBUG/libEGL(9751): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
11-24 11:54:10.160: DEBUG/libEGL(9751): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
11-24 11:54:10.168: DEBUG/libEGL(9751): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
11-24 11:54:10.261: DEBUG/OpenGLRenderer(9751): Enabling debug mode 0
11-24 11:54:10.261: WARN/InputMethodManagerService(386): Got RemoteException sending setActive(false) notification to pid 6472 uid 10073
11-24 11:54:10.410: INFO/ActivityManager(386): Displayed org.dosbcn.percolator/.MainActivity: +1s108ms (total +5s6ms)
11-24 11:54:13.941: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 876K, 20% free 19901K/24776K, paused 99ms, total 99ms
11-24 11:54:14.027: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 425K, 19% free 20220K/24776K, paused 77ms, total 77ms
11-24 11:54:14.035: INFO/ActivityManager(386): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 386
11-24 11:54:14.058: DEBUG/dalvikvm(481): GC_FOR_ALLOC freed 1844K, 55% free 13713K/30032K, paused 28ms, total 29ms
11-24 11:54:14.113: DEBUG/dalvikvm(386): GC_FOR_ALLOC freed 749K, 20% free 19851K/24776K, paused 71ms, total 71ms
11-24 11:54:14.222: DEBUG/dalvikvm(621): GC_CONCURRENT freed 1504K, 13% free 16548K/19004K, paused 3ms+5ms, total 44ms
11-24 11:54:14.988: DEBUG/AlarmManagerService(386): Kernel timezone updated to -60 minutes west of GMT
11-24 11:54:14.988: DEBUG/SystemClock(597): Setting time of day to sec=1385290455
11-24 11:54:15.022: VERBOSE/DigitalWidgetViewsFactory(6490): DigitalWidget sets next alarm string to Mon 09:30
11-24 11:54:15.038: VERBOSE/AlarmClock(6490): Alarm set for id=2 09:30:00.000/Mon
11-24 11:54:15.038: DEBUG/dalvikvm(597): GC_CONCURRENT freed 414K, 5% free 9370K/9824K, paused 4ms+3ms, total 45ms
11-24 11:54:15.054: VERBOSE/AlarmClock(6490): Setting next alarm string in system to Mon 09:30
11-24 11:54:15.061: VERBOSE/DigitalWidgetViewsFactory(6490): DigitalWidget sets next alarm string to Mon 09:30
11-24 11:54:15.069: VERBOSE/AlarmClock(6490): AlarmInitReceiver finished
11-24 11:54:15.108: INFO/ActivityManager(386): Start proc com.google.android.keep for broadcast com.google.android.keep/.notification.AlertReceiver: pid=9776 uid=10075 gids={50075, 3003, 1015, 1028}
11-24 11:54:15.132: DEBUG/dalvikvm(126): GC_EXPLICIT freed 40K, 1% free 8863K/8940K, paused 2ms+3ms, total 33ms

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.