trynoice / android-app Goto Github PK
View Code? Open in Web Editor NEWThe Android app for Noice.
Home Page: https://trynoice.com
License: GNU General Public License v3.0
The Android app for Noice.
Home Page: https://trynoice.com
License: GNU General Public License v3.0
There is a little bit less audio in the library, I think I can customize Then import the white noise audio file from the phone
Will there be such a function in the future? ๏ผ๏ผ
Using this on my Galaxy S7, I've let this play through the night since I installed it. I've noticed that it appears to stop on its own after about 7 hours of continuous playback. Is there a time limit to the playback that cuts it off after a certain period of time? I don't set a timer, just opened the app and started the sound I wanted.
Play button in Sound library stops responding on performing the following steps.
Steps to reproduce the behavior:
The sound should play? jeez. what's up with all the questions
The following ViewAction is buggy and seek action starts and ends at incorrect positions. Tests doesn't fail because we only seek to extreme positions which somehow works fine.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Noice app utilizes certain type of sounds which leans toward a (mid-)high frequency band, such as sound of rain, chirping birds, sea wave, etc. But MP3 codec has a limited bandwidth and some encoders usually clip the frequency range above 16khz for compression. This leads to an audible loss of quality in such sounds. Unlike contemporary music, this is a playback in a loop, so it is even easier to notice the quality loss.
A clear and concise description of what you want to happen.
I wonder if it's possible to use Ogg Vorbis codec instead of MP3 file as long as Noice can handle a gapless loop playback of it. Ogg Vorbis is far superior to MP3 in many ways, especially when it comes to preserving (mid-)high frequency band. I think modern Android devices are powerful enough to handle an extra processing for Ogg Vorbis playback. Battery capacity is sufficient too. The downside would be negligible while the sound quality can be improved much better.
Add any other context or screenshots about the feature request here.
Some of the included samples are terribly irritating. An example is the Bonfire sample. It's about 1 1/2 seconds long, and for all the world sounds like somebody left a record player on after the record was finished.
Sounds which by nature will have a repetitive pattern like this one are easily masked, however. You simply have two separate samples of different lengths. For example, for this bonfire, I would recommend two samples, one eight seconds long, and one 15 seconds long. If you start them both at the same time, and repeat them both (assuming a smooth transition on both samples, of course), it would be several minutes before the pattern repeats.
Both samples should be of equal volume, and could both be controlled by the same volume selector. This functionality is simply to provide a non repetative sample, it's not necessary to have it appear as two separate samples. ;)
My list of custom saved sound combinations is duplicated twice, after I've opened either of the timer screens and then go back to the sound combinations screen. If I click on one of the duplicated listings, multiples of the same combinations begin playing. If I then click to stop one of the ones playing, the remaining ones keep playing.
Steps to reproduce the behavior:
I expect the list of saved sound combinations to remain the same, wether I have opened either of the timer windows or not.
If applicable, add screenshots to help explain your problem.
The mentioned side drawer option has a missing word.
Open the drawer.
The option is fully visible.
Starting in 0.3.1, at some point during the night, the sounds turn off. I suspect that they pause for a notification noise or something, then never turn back on.
Steps to reproduce the behavior:
Sounds remain on until you shut them off (since there is no timer).
I sometimes like to use the app as background sound when I can't fall asleep. However, I do not want the app to run all night.
I would really love an option to stop the sound after a period of time I can define, probably somewhere between ten minutes and two hours.
Noises are definite, aren't they?
I cant understand clearly what the small timer icon on some sound tracks EXACTLY does? (like sea belt beeps, distant thunder, or train horn.) I know that these tracks are non looping, and that the timer slider is maybe related to the gap between repetition, but i couldn't say exactly as i couldn't see the difference in the short trial.
Some about page here on gitlab, oops, github maybe.
Label can be ~support_question or smth like that.
One of the presets I made doesn't turn its play button into a stop button when I play it, and one of its tracks isn't playing.
Steps to reproduce the behavior:
After pressing the play button to play the preset, all tracks in the preset should play. Additionally, the play button should change to a stop button, just like for other presets.
it looks like the track in question got renamed from wind_in_chimes_of_shells
to wind_chimes_of_shells
. This is based on names in the presets JSON data as viewed with "Preferences Manager" from F-Droid. I compared the old preset with a new one with just "Wind in chimes of shells". Also, manually removing _in
from the buggy preset fixes it.
I suspect a grep --recursive "wind_chimes_of_shells"
followed by a git blame "$FILE_THAT_GREP_FINDS" | grep "wind_chimes_of_shells"
will find the problem commit. I would've done it myself, but GitHub was being excruciatingly slow at letting me clone this repo (Receiving objects: 13% (539/4023), 9.54 MiB | 23.00 KiB/s
in the 8 minutes it's been downloading).
I'm always frustrated when [...] I can find an app only on Play Store, with no privacy-friendly alternative. I don't use Play Store at all; all my devices run LineageOS without GApps, and have F-Droid instead.
I'd like to see the app available in an alternative place โ like, at F-Droid, or at least the APK here at Github (ideally attached to its corresponding releases/
).
Uhm, if you ask so directly: With the APK available here, I could immediately pick it and add it to my repo, which can be used with the F-Droid client. I also gladly assist in bringing your app to the official repo, if you wish so.
Could we get the plain cricket noise back? I grew up being sung to sleep be crickets, and it was by far my favorite noise. The current one with the cicadas jars me awake every time the cicada chirps.. until I'm too tired to care.
In would suggest adding 'Crickets' to the list. I'm sure that there are plenty of people from the south who prefer the noise with the cicadas. ;)
Some of the samples are small enough to have a noticeable pattern when repeating, which can be distracting. While pondering possible solutions, I thought it would be a great feature (and solve the issue) if users were allowed to supply their own samples.
As a user, I would like to imitate rain variability. This means I would like to start off with a light rain sound and then eventually transition to a heavy rain sound and vice versa.
I propose to add transition effects into the app.
A user can select multiple sounds and group them as 'transition sounds'. This means the app will cycle through those sounds (from the group created) after X amount of time for a single track (each group = 1 track)
So in my example, I would create a group called "Rain Sounds". in that group I would select 3 different sounds: light rain, medium rain and heavy rain. After creating the group, I could then go ahead and add other tracks separate from the group (as you normally can now).
The app will randomly start one of the 3 rain tracks which were added to the group above. For example, it starts with light rain. After an hour or so, Noice will transition to one of the other two rain tracks. It will do this until either the Noice timer goes of or the user turns Noice off.
I prefer to set my alarm based on time and not a countdown timer.
Instead of having a wake-up timer, I would like an option to set an actual time for an alarm (7AM).
N/A.
It will be very nice addition to the app and will make it stand different for every other app if the time between the sound, for example thunders or rain drops or village sound were randomised
Happening due to the recent change in Service launch logic. Moving the service launch to onResume
put us in crosshair of a bug in Android 9.
Original bug reports
The bug is intermittent. Sometimes it crashes the app. Sometimes everything works as expected.
No crash
N/A
From the Play Store
java.lang.RuntimeException:
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4016)
at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4048)
at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:51)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:145)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1950)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7073)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
Caused by: java.lang.IllegalStateException:
at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1666)
at android.app.ContextImpl.startService (ContextImpl.java:1611)
at android.content.ContextWrapper.startService (ContextWrapper.java:677)
at com.github.ashutoshgngwr.noice.MainActivity.onResume (MainActivity.java:10)
at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1412)
at android.app.Activity.performResume (Activity.java:7572)
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4008)
at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4048)
at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:51)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:145)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1950)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7073)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
I found this app: https://play.google.com/store/apps/details?id=cm.whitenoise.sound on the Google Play Store. This guy just took your source code, added some ads in it and put it on the Store, without warning this is free software...
As you are the owner of the source code, feel free to open a request to google here to remove this copy from the Store, if it's your wish ;)
Don't forget to tell Google that:
(sort in title means for track order)
Similar tracks are not ordered/placed consecutively in Library.
(idk how things work in backend, so if i say something, it means it seems like that to me - not that i know definitively)
Library is sorted alphabetically (implicit). So to follow that, the tracks name can be changed like Moving train
--> Train - moving
(i think it is called tree structure, idk)
pro
minimum viable change (MVC) (even more minimal ifcon
naming can be criticised by someAlphabetic sorting can be replaced by Sorting by similarity
pro
kinda nice middle ground (if current sorting is not automatic)con
mmm... some may say that the order seems kinda randomThere can be multiple options to sort
pro
naming stays samecon
not so minimal change in code, UX and UIBrownian Noise
Pink Noise
White noise
Heavy rain
Light rain
Moderate rain
Distant thunder
Rolling thunder
Thunder crack
Moving train
Train horn
(Wind items can also be grouped, but i dont feel like they are similar enough)
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Thank you for the great app. I'm not sure what this entails or if a change is even needed on this side of things. The FDroid page appropriately links to the source code, website, issues, and other related pages for this project, but it is missing a link to your changelog.md.
A clear and concise description of what you want to happen.
A link to the changelog within the FDroid app, like other FDroid apps have.
Add any other context or screenshots about the feature request here.
Please refer to the Weblate project.
As a user, I would like to have some quick presets for the sleep timer as it currently takes too much effort to set the timer. For example, there could be buttons for:
There should be a number of presets instead of the current radial dials (which can be confusing for tired people). Allow the user to select a specific time like it is now BUT present pre-sets before making the user have to hop through the loops of that radial dial.
I guess the real point of this request is that the radial dial is not very nice. Image you are going to bed and don't have your glasses on... it's really hard to set that dial.
Clicking on 'About' in the menu crashes the app.
Steps to reproduce the behavior:
Should show some information about the app.
Please help in translating Noice to your local language.
Note: Even if translations for your local language exist in Noice, it is a good idea to revisit them. The project is always under development and translations are lagging behind. If you have Android Studio environment setup on your local machine, clone the repository and take a look at values/strings.xml
. Android Lint will highlight missing translations.
strings.xml
file for translations
Available qualifiers
add Locale
to Chosen qualifiers
strings.xml
file.translatable
strings in values/strings.xml
Also, see CONTRIBUTING.md.
You can use Google translate to quickly come up with rough translations of all the strings. But since additional context is needed to translate English to most languages properly, you should edit these rough translations by hand until it conveys same message as its English counterpart.
On clicking play button for any looping sound, it immediately starts playing at the set volume. This feels somewhat intrusive. A fade-in effect will ease in the sound on top of other (if any).
Noice crashes when I select "saved presets" after updating from version 0.2.7.
Steps to reproduce the behavior:
I expected my saved presets to be saved and accessible after updating Noice.
Using the "Preferences Manager" app from F-Droid, I found a JSON-encoded "presets" setting. The schema seems to have changed between versions, as illustrated by these examples:
[{"a":"foo","b":[{"a":"birds","b":0.2,"c":60}]}]
[{"a":"foo","b":[{"b":4,"c":30,"e":"birds"}]}]
Note that I couldn't get this for Noice 0.3.3 because it crashes when I try to save a preset. I reset app data before each of theses tests to avoid conflicts. Noice 0.3.3 additionally crashes when trying to view saved presets from 0.3.1 (in addition to the crash when trying to view presets from 0.2.7), but not when viewing an empty list of presets.
I suspect that you'll want to change this bug to be more specifically about the JSON handling (which you seem to be aware of issues with due to PR #105) or split the different crash scenarios into different bugs. But this 0.2.7 -> 0.3.x upgrade crash is the one I personally ran into as a user.
Most of the times, this happens due to efficiency issues with emulator. However, recently the following two test cases are more likely fail than anything else.
https://github.com/ashutoshgngwr/noice/blob/1dde94f6c3802f51988d2ab9b202ab1fe0c3d877/app/src/androidTest/java/com/github/ashutoshgngwr/noice/MainActivityTest.kt#L74-L103
This fails with following logs (mostly on Android 29)
com.github.ashutoshgngwr.noice.MainActivityTest > testThemeMenuItem[android-29(AVD) - 10] FAILED
java.lang.AssertionError: expected:<2> but was:<1>
at org.junit.Assert.fail(Assert.java:89)
Steps to reproduce the behavior: N/A
The tests shouldn't fail this often. In other words, these tests should be more tolerant to thread sync lag and/or CPU throttle.
N/A
Support playing noise on Chromecast devices
Love this app and it's potential! Already deleted another that does similar :)
Maybe this is isolated to my Samsung Galaxy S7, but I noticed that after an alarm turned on (set in the Clock app), I dismiss the alarm to turn it off but Noice didn't immediately play again, or restart the sound, as I expected? It'd be great for this feature to be updated to continue after the interruption is dismissed.
Hi there,
There appears to be an issue playing to Chromecast speaker groups
In my own testing, audio seems to only be sent to one of the speakers in the group
In my case, I am attempting to play to two speakers, one a JBL Link 10 and the other a Sony LF-S50G.
This is a pretty highly desirable feature for me, because it helps enormously with the believability of the generated sound.
Thanks (:
When listening to all the sounds in the library one after another, sometimes it would be handy if you wouldn't have to scroll to the top to stop the sound again
A clear and concise description of what you want to happen.
Please add an option to turn off this behaviour
Hello,
When saving a preset with system default (light) theme, fonts appears white (or almost white) on a white background. Then, writing a description is very difficult.
When I open the application, all feature should appear and the application should not be crashed.
The application crashes when I open the application
Download the application
open the application
Note the Error
Browser/App version: Current Version 0.2.5
Operating system: 6.0
D/AndroidRuntime(17855): Shutting down VM
E/AndroidRuntime(17855): FATAL EXCEPTION: main
E/AndroidRuntime(17855): Process: com.github.ashutoshgngwr.noice, PID: 17855
E/AndroidRuntime(17855): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.github.ashutoshgngwr.noice/com.github.ashutoshgngwr.noice.MainActivity}: android.view.InflateException: Binary XML file line #14: Error inflating class com.google.android.material.navigation.NavigationView
E/AndroidRuntime(17855): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2695)
E/AndroidRuntime(17855): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
E/AndroidRuntime(17855): at android.app.ActivityThread.access$900(ActivityThread.java:177)
E/AndroidRuntime(17855): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
E/AndroidRuntime(17855): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(17855): at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(17855): at android.app.ActivityThread.main(ActivityThread.java:5910)
E/AndroidRuntime(17855): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(17855): at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(17855): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
E/AndroidRuntime(17855): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
E/AndroidRuntime(17855): Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class com.google.android.material.navigation.NavigationView
E/AndroidRuntime(17855): at android.view.LayoutInflater.createView(LayoutInflater.java:633)
E/AndroidRuntime(17855): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
E/AndroidRuntime(17855): at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
E/AndroidRuntime(17855): at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
E/AndroidRuntime(17855): at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
E/AndroidRuntime(17855): at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
E/AndroidRuntime(17855): at b.b.a.x.b()
E/AndroidRuntime(17855): at b.b.a.m.setContentView()
E/AndroidRuntime(17855): at com.github.ashutoshgngwr.noice.MainActivity.onCreate()
E/AndroidRuntime(17855): at android.app.Activity.performCreate(Activity.java:6178)
E/AndroidRuntime(17855): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
E/AndroidRuntime(17855): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
E/AndroidRuntime(17855): ... 10 more
E/AndroidRuntime(17855): Caused by: java.lang.reflect.InvocationTargetException
E/AndroidRuntime(17855): at java.lang.reflect.Constructor.newInstance(Native Method)
E/AndroidRuntime(17855): at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
E/AndroidRuntime(17855): at android.view.LayoutInflater.createView(LayoutInflater.java:607)
E/AndroidRuntime(17855): ... 21 more
E/AndroidRuntime(17855): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070077
E/AndroidRuntime(17855): at android.content.res.Resources.getValue(Resources.java:1542)
E/AndroidRuntime(17855): at b.b.f.ca.d(:4)
E/AndroidRuntime(17855): at b.b.f.ca.a(:11)
E/AndroidRuntime(17855): at b.b.f.ca.b()
E/AndroidRuntime(17855): at b.b.b.a.a.c()
E/AndroidRuntime(17855): at b.b.e.a.o.getIcon(:2)
E/AndroidRuntime(17855): at c.c.a.a.n.j$b.c(:5)
E/AndroidRuntime(17855): at c.c.a.a.n.j.a(:1)
E/AndroidRuntime(17855): at com.google.android.material.navigation.NavigationView.c()
E/AndroidRuntime(17855): at com.google.android.material.navigation.NavigationView.(:24)
E/AndroidRuntime(17855): at com.google.android.material.navigation.NavigationView.()
E/AndroidRuntime(17855): ... 24 more
This icon will not be used by fdroid as python pillow cannot read it.
Also imagemagick identify
shows the error:
$ identify build/com.github.ashutoshgngwr.noice/fastlane/metadata/android/fr-FR/images/featureGraphic.png
build/com.github.ashutoshgngwr.noice/fastlane/metadata/android/fr-FR/images/featureGraphic.png PNG 1024x500 1024x500+0+0 8-bit sRGB 944954B 0.000u 0:00.001
identify: iCCP: CRC error `build/com.github.ashutoshgngwr.noice/fastlane/metadata/android/fr-FR/images/featureGraphic.png' @ warning/png.c/MagickPNGWarningHandler/1748.
Hey, everybody, very cool little app.
Some suggestions for new sounds :)
I love the app, but I find that sudden loud peaks in the audio are disruptive and distracting and undermine the whole relaxation aspect of using the app.
It would be great to get an option to enforce loudness equalization i.e. decreasing the volume difference between the highest and lowest volume parts of a track.
Please add support for icon shape
https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive.html
https://material.io/guidelines/style/icons.html
Please add a feature for users to add their own sounds
Playing non-loopable sounds on Android 9 results in no playback. Furthermore, if time-period seek is reduced to minimum, the app crashes.
Steps to reproduce the behavior:
Well some playback without any crashes would be marvellous.
N/A
java.lang.ArithmeticException:
at com.github.ashutoshgngwr.noice.SoundManager.play (SoundManager.java)
at com.github.ashutoshgngwr.noice.SoundManager.play (SoundManager.java)
at com.github.ashutoshgngwr.noice.fragment.SoundLibraryFragment$SoundListAdapter$ViewHolder$1.onClick (SoundLibraryFragment.java)
at android.view.View.performClick (View.java:6597)
at android.view.View.performClickInternal (View.java:6574)
at android.view.View.access$3100 (View.java:778)
at android.view.View$PerformClick.run (View.java:25889)
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:6746)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
AppIntroTest suite has somehow retriggered flakiness in the tests. Tests fail continuously until they pass, by retrying indefinitely. I ran these tests for about an hour on an infinite loop on my machine and they didn't even crash/fail once. The only difference between runtime environments was that CI runs on macOS while I was running on Linux.
testOnDonePressed
and testOnSkipPressed
or both the tests fail.All tests pass! Duh!
Starting in version 0.3.1, sounds do not automatically move to the top of the list when enabled.
Not sure if this feature is necessary, but I noticed it.
Edit:
...not sure why there's no 'bug' tag on this.
Steps to reproduce the behavior: N/A
N/A
N/A
N/A
I first noticed the behavior in 0.3.3. When you click the on/off buttons, the button state doesn't immediately change. If you scroll it off screen, you can see that the state changed.
Hello, firstly lovely app. Would love it even more if you could add a few more sound options like
I hope you could add these to the already awesome collection of sounds in your app.
Thank you
Starting on 0.3.1 can't recall exactly which sound pair I noticed the behavior in, but for example, if the bonfire noise is on, and you turn the wind in tree nice on and raise its volume, the bonfire volume also goes up.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.