GithubHelp home page GithubHelp logo

simplepomodoro-android's Introduction

PLEASE NOTE, THIS PROJECT IS NO LONGER BEING MAINTAINED


Simple Pomodoro Google Play

This a pomodoro timer android app.

Features:
• FAST MODE - Auto lock/unlock screen and you can forget your lockscreen button, just focus on your work!
• Full function - White/Black theme, lights on, weekly statistics, vibrations, alert, etc.
• Beautiful & Simple - SimplePomodoro is beautifully designed, simple to use and user friendly.
• Google task - Sync your tasks between your device and Google.

Building

Import PullToRefresh-ListView and Android-ViewPagerIndicator as library manaully.

License

  • MIT License

Thanks

Contributing

Please fork this repository and contribute back using pull requests.

Any contributions, large or small, major features, bug fixes, additional language translations, unit/integration tests are welcomed

simplepomodoro-android's People

Contributors

dacer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

simplepomodoro-android's Issues

Ability to stop a pomodoro early

Functionality to stop a pomodoro early for if you finish the task at hand and want to take your break early inorder to avoid task switching..

Repeated notification when entering / leaving pause

With a one-time sound notification, it is really easy to miss when you are supposed to start or finish a pomodoro. It would be helpful to (optionally?) set a repeated notification, e.g. a sound once a minute

V2.0 crashes when starting a pomodoro session

Earlier today, I got the version 2.0 update of Simple Pomodoro through Google Play. Now, when I begin a new pomodoro session, the app crashes within seconds. I tried running logcat and this was the output:

I/ActivityManager( 1287): Starting: Intent { flg=0x10000 cmp=com.dacer.simplepomodoro/.MainActivity } from pid 26743
D/dalvikvm(26743): GC_CONCURRENT freed 617K, 49% free 3121K/6087K, external 643K/1026K, paused 2ms+4ms
I/ActivityManager( 1287): Displayed com.dacer.simplepomodoro/.MainActivity: +424ms
I/ActivityManager( 1287): Starting: Intent { flg=0x10000 cmp=com.dacer.simplepomodoro/.PomoRunningActivity } from pid 26743
D/dalvikvm(26743): GC_CONCURRENT freed 208K, 45% free 3349K/6087K, external 491K/994K, paused 3ms+3ms
E/Database(26743): close() was never explicitly called on database '/data/data/com.dacer.simplepomodoro/databases/recorder.db'
E/Database(26743): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
E/Database(26743): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1847)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
E/Database(26743): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:558)
E/Database(26743): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
E/Database(26743): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
E/Database(26743): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
E/Database(26743): at dacer.utils.MyPomoRecorder.getMonthUndeletedPomosStartTime(MyPomoRecorder.java:153)
E/Database(26743): at com.dacer.simplepomodoro.RecordFragment.getThisMonthPomoNum(RecordFragment.java:136)
E/Database(26743): at com.dacer.simplepomodoro.RecordFragment.onCreateView(RecordFragment.java:77)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
E/Database(26743): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431)
E/Database(26743): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
E/Database(26743): at android.support.v4.view.ViewPager.populate(ViewPager.java:804)
E/Database(26743): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
E/Database(26743): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/Database(26743): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
E/Database(26743): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/Database(26743): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewRoot.performTraversals(ViewRoot.java:841)
E/Database(26743): at android.view.ViewRoot.handleMessage(ViewRoot.java:1873)
E/Database(26743): at android.os.Handler.dispatchMessage(Handler.java:99)
E/Database(26743): at android.os.Looper.loop(Looper.java:130)
E/Database(26743): at android.app.ActivityThread.main(ActivityThread.java:3703)
E/Database(26743): at java.lang.reflect.Method.invokeNative(Native Method)
E/Database(26743): at java.lang.reflect.Method.invoke(Method.java:507)
E/Database(26743): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/Database(26743): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/Database(26743): at dalvik.system.NativeStart.main(Native Method)
E/MediaPlayer(26743): Unable to to create media player
D/MediaPlayer(26743): create failed:
D/MediaPlayer(26743): java.io.IOException: setDataSourceFD failed.: status=0x80000000
D/MediaPlayer(26743): at android.media.MediaPlayer.setDataSource(Native Method)
D/MediaPlayer(26743): at android.media.MediaPlayer.create(MediaPlayer.java:666)
D/MediaPlayer(26743): at dacer.service.WakeLockService.playTick(WakeLockService.java:82)
D/MediaPlayer(26743): at dacer.service.WakeLockService.init(WakeLockService.java:67)
D/MediaPlayer(26743): at dacer.service.WakeLockService.onCreate(WakeLockService.java:36)
D/MediaPlayer(26743): at android.app.ActivityThread.handleCreateService(ActivityThread.java:1962)
D/MediaPlayer(26743): at android.app.ActivityThread.access$2500(ActivityThread.java:117)
D/MediaPlayer(26743): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985)
D/MediaPlayer(26743): at android.os.Handler.dispatchMessage(Handler.java:99)
D/MediaPlayer(26743): at android.os.Looper.loop(Looper.java:130)
D/MediaPlayer(26743): at android.app.ActivityThread.main(ActivityThread.java:3703)
D/MediaPlayer(26743): at java.lang.reflect.Method.invokeNative(Native Method)
D/MediaPlayer(26743): at java.lang.reflect.Method.invoke(Method.java:507)
D/MediaPlayer(26743): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
D/MediaPlayer(26743): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
D/MediaPlayer(26743): at dalvik.system.NativeStart.main(Native Method)
D/AndroidRuntime(26743): Shutting down VM
W/dalvikvm(26743): threadid=1: thread exiting with uncaught exception (group=0x40015568)
E/Database(26743): close() was never explicitly called on database '/data/data/com.dacer.simplepomodoro/databases/recorder.db'
E/Database(26743): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
E/Database(26743): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1847)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
E/Database(26743): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:558)
E/Database(26743): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
E/Database(26743): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
E/Database(26743): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
E/Database(26743): at dacer.utils.MyPomoRecorder.getPomoOfThisWeek(MyPomoRecorder.java:105)
E/Database(26743): at com.dacer.simplepomodoro.RecordFragment.initCirView(RecordFragment.java:86)
E/Database(26743): at com.dacer.simplepomodoro.RecordFragment.onCreateView(RecordFragment.java:53)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
E/Database(26743): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431)
E/Database(26743): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
E/Database(26743): at android.support.v4.view.ViewPager.populate(ViewPager.java:804)
E/Database(26743): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
E/Database(26743): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/Database(26743): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
E/Database(26743): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/Database(26743): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewRoot.performTraversals(ViewRoot.java:841)
E/Database(26743): at android.view.ViewRoot.handleMessage(ViewRoot.java:1873)
E/Database(26743): at android.os.Handler.dispatchMessage(Handler.java:99)
E/Database(26743): at android.os.Looper.loop(Looper.java:130)
E/Database(26743): at android.app.ActivityThread.main(ActivityThread.java:3703)
E/Database(26743): at java.lang.reflect.Method.invokeNative(Native Method)
E/Database(26743): at java.lang.reflect.Method.invoke(Method.java:507)
E/Database(26743): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/Database(26743): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/Database(26743): at dalvik.system.NativeStart.main(Native Method)
E/Database(26743): close() was never explicitly called on database '/data/data/com.dacer.simplepomodoro/databases/recorder.db'
E/Database(26743): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
E/Database(26743): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1847)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
E/Database(26743): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
E/Database(26743): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:558)
E/Database(26743): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
E/Database(26743): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
E/Database(26743): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
E/Database(26743): at dacer.utils.MyPomoRecorder.getTotalPomo(MyPomoRecorder.java:184)
E/Database(26743): at com.dacer.simplepomodoro.RecordFragment.initFont(RecordFragment.java:122)
E/Database(26743): at com.dacer.simplepomodoro.RecordFragment.onCreateView(RecordFragment.java:52)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
E/Database(26743): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
E/Database(26743): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431)
E/Database(26743): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
E/Database(26743): at android.support.v4.view.ViewPager.populate(ViewPager.java:804)
E/Database(26743): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
E/Database(26743): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/Database(26743): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
E/Database(26743): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160)
E/Database(26743): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E/Database(26743): at android.view.View.measure(View.java:8363)
E/Database(26743): at android.view.ViewRoot.performTraversals(ViewRoot.java:841)
E/Database(26743): at android.view.ViewRoot.handleMessage(ViewRoot.java:1873)
E/Database(26743): at android.os.Handler.dispatchMessage(Handler.java:99)
E/Database(26743): at android.os.Looper.loop(Looper.java:130)
E/Database(26743): at android.app.ActivityThread.main(ActivityThread.java:3703)
E/Database(26743): at java.lang.reflect.Method.invokeNative(Native Method)
E/Database(26743): at java.lang.reflect.Method.invoke(Method.java:507)
E/Database(26743): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/Database(26743): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/Database(26743): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(26743): FATAL EXCEPTION: main
E/AndroidRuntime(26743): java.lang.RuntimeException: Unable to create service dacer.service.WakeLockService: java.lang.NullPointerException
E/AndroidRuntime(26743): at android.app.ActivityThread.handleCreateService(ActivityThread.java:1972)
E/AndroidRuntime(26743): at android.app.ActivityThread.access$2500(ActivityThread.java:117)
E/AndroidRuntime(26743): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985)
E/AndroidRuntime(26743): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(26743): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(26743): at android.app.ActivityThread.main(ActivityThread.java:3703)
E/AndroidRuntime(26743): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(26743): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(26743): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/AndroidRuntime(26743): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/AndroidRuntime(26743): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(26743): Caused by: java.lang.NullPointerException
E/AndroidRuntime(26743): at dacer.service.WakeLockService.playTick(WakeLockService.java:83)
E/AndroidRuntime(26743): at dacer.service.WakeLockService.init(WakeLockService.java:67)
E/AndroidRuntime(26743): at dacer.service.WakeLockService.onCreate(WakeLockService.java:36)
E/AndroidRuntime(26743): at android.app.ActivityThread.handleCreateService(ActivityThread.java:1962)
E/AndroidRuntime(26743): ... 10 more
W/ActivityManager( 1287): Force finishing activity com.dacer.simplepomodoro/.PomoRunningActivity
D/dalvikvm(26743): GC_CONCURRENT freed 479K, 46% free 3385K/6215K, external 491K/994K, paused 2ms+2ms
D/dalvikvm( 1287): GC_FOR_MALLOC freed 248K, 27% free 12153K/16583K, external 0K/0K, paused 200ms
W/ActivityManager( 1287): Activity pause timeout for HistoryRecord{40c53c28 com.dacer.simplepomodoro/.PomoRunningActivity}
W/ActivityManager( 1287): Activity destroy timeout for HistoryRecord{40bdf620 com.dacer.simplepomodoro/.MainActivity}
W/ActivityManager( 1287): Activity destroy timeout for HistoryRecord{40c53c28 com.dacer.simplepomodoro/.PomoRunningActivity}
D/dalvikvm( 1287): GC_FOR_MALLOC freed 190K, 27% free 12150K/16583K, external 0K/0K, paused 149ms
D/dalvikvm( 1287): GC_FOR_MALLOC freed 140K, 27% free 12151K/16583K, external 0K/0K, paused 121ms
I/Process (26743): Sending signal. PID: 26743 SIG: 9
I/ActivityManager( 1287): Process com.dacer.simplepomodoro (pid 26743) has died.

红米无法使用

红米,安装成功,点击图标直接报错,很抱歉,程序无法运行

Good and simple app: Any plans to resurrect it?

Hi, I used to use the SimplePomodoro app before. This was the only Android app (and probably still is) that synced with Google Tasks.

I managed to find the old apk, but on sync, it gives the error: UNREGISTERED_ON_API_CONSOLE. Any means to resolve this?

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.