Code Monkey home page Code Monkey logo

alarmio's Introduction

Open Source

I've written a wide range of software for various reasons - to suit my needs, experiment with new functionality, or just mess around for fun.

Much of it is buggy, inefficient, out of date, or otherwise incomplete - but I like to open source it regardless so anyone can see what I'm working on. Generally, it's a lot more interesting to interact with other people and collaborate on improving my work.

If you need help with the contributing process in any of my projects, have any questions or confusion, or want to get feedback before a contribution, please don't hesitate to get in touch!

Discord Twitch

Elsewhere

alarmio's People

Contributors

ajayyy avatar fennifith avatar friederzi avatar ikanakova avatar larnicone avatar meskobalazs avatar pablomeza10 avatar poussinou avatar quipri avatar raboof avatar suburbanno avatar theonesean avatar yzqzss 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

alarmio's Issues

Android Q Compatibility

Activities can no longer be launched while the app is in the background. I'm not sure how this affects AlarmManager (an activity launched directly by the system might be okay), but Alarmio will probably have to change its behavior of starting a BroadcastReceiver before checking the alarm and having that start the alarm activity. Rip.

App gets killed by android system

Device Info

  • Brand: Samsunokiapplackberriaomissentialg
  • Model name: John Doe
  • Android version: Stock, hopefully.

Steps to Reproduce

  • download the app
  • hop on your left foot three times
  • turn 90 degrees counterclockwise
  • head, shoulders knees and toes knees and toes knees and toes knees and toes knees and toes knees and toes knees and toes knees and toes knees and toes

Detailed Audio Options in Ringtone Picker

It seems you can't change the volume of the 'alarms' channel on some skins of Android. Either that or it just isn't very intuitive to do so. Yay, more things to do.

This should also involve the ability to pick which audio stream the alarm will play from; the "alarms" channel should be the default, but media audio would be useful sometimes as well - to play the alarm over a bluetooth speaker, for example.

  • volume selector
  • "stream" chooser (alarm / media channels)

repeated crash log, while opening the app

this error happens mostly two or three times a day(I open the app mostly 6-8 times a day), I ignored it for sometime, but now I think there's maybe a real problem.
is there a more convenient way to send the logs without emailing it.
maybe instead of share, a linking to upload it to a server or something like that.
thanks.

io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | Cannot call this method while RecyclerView is computing a layout or scrolling androidx.recyclerview.widget.RecyclerView{5c38390 VFED..... ......ID 0,0-1080,1775 #7f0900c9 app:id/recycler}, adapter:me.jfenn.alarmio.adapters.PreferenceAdapter@9167f24, layout:androidx.recyclerview.widget.GridLayoutManager@3294a8d, context:me.jfenn.alarmio.activities.MainActivity@1234bd5
	at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
	at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
	at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
	at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)
	at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.tryEmit(ObservableFlatMap.java:265)
	at io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver.onNext(ObservableFlatMap.java:572)
	at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
	at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)
	at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)
	at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:196)
	at io.reactivex.internal.operators.observable.ObservablePublish$PublishObserver.onNext(ObservablePublish.java:172)
	at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)
	at com.afollestad.rxkprefs.RxkPrefs$onKeyChange$1$changeListener$1.onSharedPreferenceChanged(RxkPrefs.kt:44)
	at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:607)
	at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:489)
	at com.afollestad.aesthetic.utils.PrefsExtKt.save(PrefsExt.kt:14)
	at com.afollestad.aesthetic.Aesthetic.colorPrimary(Aesthetic.kt:126)
	at me.jfenn.alarmio.Alarmio.updateTheme(Alarmio.java:253)
	at me.jfenn.alarmio.data.preference.ThemePreferenceData$2.onSunriseChanged(ThemePreferenceData.java:78)
	at me.jfenn.alarmio.data.preference.ThemePreferenceData.bindViewHolder(ThemePreferenceData.java:114)
	at me.jfenn.alarmio.data.preference.ThemePreferenceData.bindViewHolder(ThemePreferenceData.java:33)
	at me.jfenn.alarmio.adapters.PreferenceAdapter.onBindViewHolder(PreferenceAdapter.java:26)
	at me.jfenn.alarmio.adapters.PreferenceAdapter.onBindViewHolder(PreferenceAdapter.java:11)
	at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
	at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
	at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
	at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019)
	at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
	at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
	at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
	at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:557)
	at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
	at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
	at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171)
	at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)
	at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641)
	at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4194)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at androidx.viewpager.widget.ViewPager.onLayout(ViewPager.java:1775)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
	at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at androidx.coordinatorlayout.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1183)
	at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:870)
	at com.google.android.material.bottomsheet.BottomSheetBehavior.onLayoutChild(BottomSheetBehavior.java:232)
	at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:888)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
	at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
	at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
	at com.android.internal.policy.DecorView.onLayout(DecorView.java:753)
	at android.view.View.layout(View.java:20676)
	at android.view.ViewGroup.layout(ViewGroup.java:6194)
	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2810)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2337)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1478)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7373)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
	at android.view.Choreographer.doCallbacks(Choreographer.java:761)
	at android.view.Choreographer.doFrame(Choreographer.java:696)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
	at android.os.Handler.handleCallback(Handler.java:873)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:193)
	at android.app.ActivityThread.main(ActivityThread.java:6723)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling androidx.recyclerview.widget.RecyclerView{5c38390 VFED..... ......ID 0,0-1080,1775 #7f0900c9 app:id/recycler}, adapter:me.jfenn.alarmio.adapters.PreferenceAdapter@9167f24, layout:androidx.recyclerview.widget.GridLayoutManager@3294a8d, context:me.jfenn.alarmio.activities.MainActivity@1234bd5
	at androidx.recyclerview.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:2880)
	at androidx.recyclerview.widget.RecyclerView$RecyclerViewDataObserver.onChanged(RecyclerView.java:5281)
	at androidx.recyclerview.widget.RecyclerView$AdapterDataObservable.notifyChanged(RecyclerView.java:11997)
	at androidx.recyclerview.widget.RecyclerView$Adapter.notifyDataSetChanged(RecyclerView.java:7070)
	at me.jfenn.alarmio.fragments.SettingsFragment.accept(SettingsFragment.java:106)
	at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
	... 95 more

SleepReminderService not calling startForeground

This is a problem. This causes a crash. It... probably shouldn't. Ideally it should figure out if it's going to call startForeground before starting... and not just decide not to once it's started. I can't remember what the reasoning was behind this.

Full stack trace:

android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{84272d3 u0 me.jfenn.alarmio/.services.SleepReminderService}
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1745)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6718)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Privacy policy?

Hi, I'm Harry. I wanted to inquire if you had a privacy policy for your app. If you don't, I could help create one. It is quite an important document.

Tasker / Webhook Integration

Triggers for when alarms/timers ring, when a stopwatch runs/stops/laps, etc. Main use I can think of right now is turning on all the lights in your room when you're supposed to wake up, but I'm sure there are more possibilities.

The Tasker integration should be fairly straightforward, but IFTTT will be... more confusing. It may require syncing alarms with a server (signing in through g+ or something, or maybe I could just set up Firebase to generate a UID) then selecting which alarms to perform an action for through IFTTT. Related: #7

Time Zone Dialog is Glitchy

Can't remember how I managed to make it do this, but the bottom of the dialog (in the settings) flickers a little while items are loading. I might just remake the entire dialog, as there are a few other aspects of the time zone selection that could be made a little more intuitive.

Can't Select Certain Background Images

Unsure what the cause is. Some work, some don't. Possibly related to their storage location, but haven't been able to test enough to verify this yet.

(BUG) The app gets crashes when I click about & OSS licenses

Project Information

Expected behavior

When I click on About & OSS Licenses, the application should not be crashed when I click on About & OSS Licenses should show details of the application

Actual behavior

The app gets crashes when I click about & OSS licenses

How to reproduce

  • open the application

  • Go to the setting

  • click on about & OSS licenses

  • Note the BUG

  • Browser/App version: 1.0.1

  • Operating system: 6.0

Recording Of The Bug

20190608_163718

Logcat

D/AndroidRuntime(32068): Shutting down VM

E/AndroidRuntime(32068): FATAL EXCEPTION: main

E/AndroidRuntime(32068): Process: me.jfenn.alarmio, PID: 32068

E/AndroidRuntime(32068): android.content.res.Resources$NotFoundException: File res/drawable/ic_attribouter_github.xml from drawable resource ID #0x7f080079

E/AndroidRuntime(32068): 	at android.content.res.Resources.loadDrawableForCookie(Resources.java:2946)

E/AndroidRuntime(32068): 	at android.content.res.Resources.loadDrawable(Resources.java:2821)

E/AndroidRuntime(32068): 	at android.content.res.Resources.getDrawable(Resources.java:1050)

E/AndroidRuntime(32068): 	at android.content.res.Resources.getDrawable(Resources.java:1032)

E/AndroidRuntime(32068): 	at android.content.Context.getDrawable(Context.java:403)

E/AndroidRuntime(32068): 	at androidx.core.a.a.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.appcompat.widget.i.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.appcompat.widget.i.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.appcompat.a.a.a.b(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.appcompat.widget.m.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.appcompat.widget.n.setImageResource(Unknown Source)

E/AndroidRuntime(32068): 	at me.jfenn.attribouter.f.c.a(Unknown Source)

E/AndroidRuntime(32068): 	at me.jfenn.attribouter.wedges.link.LinkWedge.a(Unknown Source)

E/AndroidRuntime(32068): 	at me.jfenn.attribouter.wedges.link.LinkWedge.a(Unknown Source)

E/AndroidRuntime(32068): 	at me.jfenn.attribouter.wedges.link.LinkWedge.a(Unknown Source)

E/AndroidRuntime(32068): 	at me.jfenn.attribouter.a.a.a(Unknown Source)

E/AndroidRuntime(32068): 	at me.jfenn.attribouter.a.a.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView$a.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView$a.b(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView$p.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView$p.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView$p.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView$p.c(Unknown Source)

E/AndroidRuntime(32068): 	at com.google.android.flexbox.FlexboxLayoutManager.o(Unknown Source)

E/AndroidRuntime(32068): 	at com.google.android.flexbox.FlexboxLayoutManager.a(Unknown Source)

E/AndroidRuntime(32068): 	at com.google.android.flexbox.d.a(Unknown Source)

E/AndroidRuntime(32068): 	at com.google.android.flexbox.d.a(Unknown Source)

E/AndroidRuntime(32068): 	at com.google.android.flexbox.FlexboxLayoutManager.q(Unknown Source)

E/AndroidRuntime(32068): 	at com.google.android.flexbox.FlexboxLayoutManager.c(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView.N(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView.onMeasure(Unknown Source)

E/AndroidRuntime(32068): 	at android.view.View.measure(View.java:17951)

E/AndroidRuntime(32068): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5797)

E/AndroidRuntime(32068): 	at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)

E/AndroidRuntime(32068): 	at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)

E/AndroidRuntime(32068): 	at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)

E/AndroidRuntime(32068): 	at android.view.View.measure(View.java:17951)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView$i.a_(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.LinearLayoutManager.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.LinearLayoutManager.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.LinearLayoutManager.c(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView.N(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView.q(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.recyclerview.widget.RecyclerView.onLayout(Unknown Source)

E/AndroidRuntime(32068): 	at android.view.View.layout(View.java:16075)

E/AndroidRuntime(32068): 	at android.view.ViewGroup.layout(ViewGroup.java:5300)

E/AndroidRuntime(32068): 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)

E/AndroidRuntime(32068): 	at android.widget.FrameLayout.onLayout(FrameLayout.java:514)

E/AndroidRuntime(32068): 	at android.view.View.layout(View.java:16075)

E/AndroidRuntime(32068): 	at android.view.ViewGroup.layout(ViewGroup.java:5300)

E/AndroidRuntime(32068): 	at com.google.android.material.appbar.c.b(Unknown Source)

E/AndroidRuntime(32068): 	at com.google.android.material.appbar.d.a(Unknown Source)

E/AndroidRuntime(32068): 	at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.a(Unknown Source)

E/AndroidRuntime(32068): 	at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(Unknown Source)

E/AndroidRuntime(32068): 	at android.view.View.layout(View.java:16075)

E/AndroidRuntime(32068): 	at android.view.ViewGroup.layout(ViewGroup.java:5300)

E/AndroidRuntime(32068): 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)

E/AndroidRuntime(32068): 	at android.widget.FrameLayout.onLayout(FrameLayout.java:514)

E/AndroidRuntime(32068): 	at android.view.View.layout(View.java:16075)

E/AndroidRuntime(32068): 	at android.view.ViewGroup.layout(ViewGroup.java:5300)

E/AndroidRuntime(32068): 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)

E/AndroidRuntime(32068): 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)

E/AndroidRuntime(32068): 	at android.widget.Li

a shortcut isn't available, standard Alarm ringtone bug.

have one wish and one bug to report:

  1. the app doesn't open when I tap the hour in the notifications panel, even if it's the only app to provide an hour. so it would be great if you could integrate it more into the android UI(into this shortcut).

  2. this one is the bug, steps:

  • set a certain ringtone as standard
  • create a new alarm
  • still have to set a ringtone for this new alarm, otherwise it's "none"(this doesn't happen with a new timer)

thanks.

[Feature Request] Restore Background Image / default settings

I can't restore default Background Image or default settings.

Device Info

  • Brand: Nokia
  • Model name: Nokia 6.1
  • Android version: Android 9

Steps to Reproduce

  • download the app
  • change background image in menu Settings
  • try restore default image or default settings.

Alarm Times Being Weird

I put off creating this for a while, as it's a little weird to reproduce, but I have managed to get it to happen on multiple occasions now, warranting an issue. I am not sure why any of this happens. It is weird.

  1. Start the app.
  2. Create an alarm, set for ex. 07:30 (24-hour time, though it shouldn't make a difference)
  3. Look at the created alarm. It is set to 07:30.
  4. Close the app (force-stop if necessary)
  5. Start the app.
  6. Look at the created alarm. It is set to 19:00. Wth.

I have also noticed a few weird discrepancies with repeating alarms ringing on the wrong day / not ringing on the right day. This may be caused by the same issue. I hope it is. Otherwise I need to create another issue.

Make Alarm Ringing screen more intuitive

The current version is unintuitive and dissatisfies the great seal. Currently the solution that we have agreed upon is a 24dp translucent circle which expands to 56dp on press. When it is dragged to the side past one of the limits, it'll do some sort of ripple/bounce animation indicating that it can be released. If it is not interacted with, it will animate a bounce/wiggle thing from side to side to indicate that it can be dragged. This will need a custom view to actually be useable. Fun stuff.

Travis doesn't like changelogs

The last Travis build (0.7 release) failed for some reason. It didn't like that the changelog had more than one line in it. Unsure how to fix.

UI Prompt for Battery Optimizations

Hello again, just wanted to point out, that with some more conservative cpu profiles, the app does miss some of the alarms which results,-you can guess- "missing the lecture" issue, I've tested it with some other clock-apps and noted that it didn't happen, secondly I disabled the battery optimizations of the app, hoping to avoid this issue, it worked so far, will report further. Maybe this should be implemented(asking to disable the battery optimizations at start).
Thanks for your work.

Implement "increasing volume"

This functionality is just missing. It's in the description for one of the settings. But it doesn't do anything. I forgot to write it. Rip.

AlarmActivity icons not themed correctly

The icon contrast is off. The icons should be white on the dark themes & dark on the light themes, like the rest of the app. I'm pretty sure all that needs to be changed for some of these is adding the ":aesthetic_ignore" tag like a few other views so Aesthetic doesn't auto-theme them, but the FAB might need more work.

F-droid publication

It'd be really to have this in F-droid!

I don't believe there's anything blocking this from being published there. ;)

[Feature Request] Add some task to turn off alarm ?

As far as I search, there are some foss android alarm clock app out there, but this one seems the only one that up to date. In our foss android world right now we don't have any alternative to alarmy or i can't wake up.

Do you have any intent to add some taks (.e.g math task, rewrite task, barcode task, etc) to toggle off alarm ?

Thank you for alarmio

Repeat launches two alarms

On my Pixel 3, when repeat is enabled and the alarm rings, two alarms are launched. Somehow one of them dies on it's own pretty quickly (I only realized this was happening due to using a breakpoint). Is this intended behavior? It seems like the new alarm is added so quickly that it also gets triggered. This currently breaks the "increasing volume" I implemented, do to race conditions around checking appropriate volume levels.

Renaming of alarms fail

If you have more than 1 alarm and want to name every one of them, all get the same name in the end. If you try to delete the wrong name in the other alarm, all names change.

Device Info

  • Brand: Essential Industries
  • Model name: PH1
  • Android version: AOSiP 9

Steps to Reproduce

  • create more than one Alarm
  • try to name one of them
  • see how the others behave

Internet Radios Don't Work

Pretty sure this is just a bad implementation of ExoPlayer. I'll need to spend a couple minutes to do a proper dive into its documentation when I get the time and check that I'm doing everything properly.

Preset Radio Streams

It would be nice to implement a certain amount of "preset" radios streaming various content that the users can choose from, rather than having to locate stream URLs themselves in order to use this feature. I'll list radio streams I'm considering and streams that I am allowed to use (check mark = approved) below:

Streams will be linked to their original source for credit, either through a link in the about section, an info button next to the radio option itself, or both.

Sync Alarms Across Devices

Idk how this would work. Firebase? Either way, having alarms, timers, etc. ring on multiple devices at once would be useful. I guess there could be sync options in the settings to choose what other devices should do (ex: this device has its own set of alarms but still syncs timers, or something).

Snooze

Device Info

  • Brand: Nokia
  • Model name: Nokia 6.1
  • Android version: Android 9

Steps to Reproduce

  • Add new alarm
  • Snooze alarm

Expected behaviour

Silence for 2 minutes until repeat alarm.

Actual behaviour

The alarm clock (timer) is still ringing: video
Note: This ringing is different than adjusted alarm sound - it is system notification sound.

Display "scheduled ring times" on alarms

This will serve two purposes.
One: showing the user the next time it will ring and giving them the ability to cancel it one time without needing to remember to turn it back on again afterwards.
Two: helping me debug #25, which is still a problem.

Possibility to customize active alarm interface

Hi,

I would like to have the possibility to customize the interface of the alarm whole it's ringing.
E.g. I really would appreciate to use a big red button to stop alarm when it rings instead of the swipe button that you have at the moment.

Is it possibile to implement that?
Thanks

Time Picker Enhancements

As stated in this tweet (asking for feedback, all of which has been positive so far), I had originally planned to implement a more "standard" time picker later on. I don't know if it will replace the current one, but having more options for the input method would be nice - maybe a button to switch to the keypad like the system one has starting at Nougat (I think)...

Oreo Background Restrictions

The sleep reminder service doesn't like to start when the app is in the background for some reason. Might have to create a broadcast receiver to decide whether to start the service in the foreground first so that it doesn't crash.

Time Zone Changes Mess Up Time Zone Settings

It seems when the time zone settings are modified, it saves the "home" time zone in sharedprefs, causing it to no longer change with the device settings. Ideally, the first time zone in sharedprefs could change with the device settings while also preventing duplicate time zones from appearing in the list, but just implementing this functionality with nothing to indicate this behavior would be horrible for UX. Should probably just join this with #4 for a complete redesign of the settings.

Alarm screen doesn't expand properly

Device Info

  • Brand: Huawei
  • Model name: Mate SE, BND-L34
  • Android version: stock, 8.0.0

Steps to Reproduce

  • create multiple alarms
  • lowest alarm gets cut off on bottom
  • plus sign usually covers second alarm delete button or alarm on/off toggle
  • unable to expand alarm screen with an upwards slide, a tap, expanding first alarm, or any method.

The alarm screen works fine initially but quits working after some time.

Force stop and clear app data doesn't fix, but uninstall and reinstall does.

Happened multiple times after reinstalling.

Version 1.0.0 from Izzy's repo.

Switch FAB library

Unfortunately, while it still functions perfectly fine, jahirfiquitiva/FABsMenu is no longer maintained in favor of other projects like leinardi/FloatingActionButtonSpeedDial. I'm not entirely in favor of this, as the current dynamic theming implementation seems like it will be fairly convoluted to implement, but I will have to switch to a properly maintained library eventually.

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.