The Page
michpohl / loopy Goto Github PK
View Code? Open in Web Editor NEWAndroid app written in Kotlin and C++ to manage and play audio loops using oboe
License: Apache License 2.0
Android app written in Kotlin and C++ to manage and play audio loops using oboe
License: Apache License 2.0
I expected that I could click on every option after denying access permission.
When I tried to click on "Browse music library" after denying the access permission, then the app crashed.
1. If your phone has already this app installed then revoke the access permission from your phone's settings or reinstall this after uninstalling.
2. Your phone will ask you to grant all permission, click on "DENY".
3. Then go to this app's options and click on "Browse music library".
4. See error.
05-07 13:28:08.357 7350 7350 D AndroidRuntime: Shutting down VM
05-07 13:28:08.367 7350 7350 E AndroidRuntime: FATAL EXCEPTION: main
05-07 13:28:08.367 7350 7350 E AndroidRuntime: Process: de.michaelpohl.loopy, PID: 7350
05-07 13:28:08.367 7350 7350 E AndroidRuntime: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/albums from pid=7350, uid=10424 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1620)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:502)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:445)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at de.michaelpohl.loopy.model.DataRepository.getAlbumTitles(DataRepository.kt:5)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at de.michaelpohl.loopy.ui.main.filebrowser.AlbumBrowserFragment.onCreate(AlbumBrowserFragment.kt:2)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:64)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:24)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:11)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:44)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:10)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:4)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:1)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7325)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
05-07 13:28:08.367 7350 7350 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Too big audio files can cause OOM when generating the wave image, since they are saved in raw PCM.
A quick fix would be to disable the wave generation for filles larger than a certain limit.
Would you consider making the APK of your app available outside Google's walled garden – for those having no access there? Thanks in advance!
The users should be able to remove loops from the selected loop's dashboard without getting any trouble.
The removed loops vanished for a while only. But when I restart the app, those loops appears again on the player.
1. Open the app.
2. Then go to "Browse music library".
3. Click on "OPEN SELECTION" after selecting a few songs (You selected songs will be added to the selection dashboard).
4. Then try to remove the song/loop by clicking at the cross button at the side of your song on selection dashboard.
5. At last, exit and reopen the app and notice that your removed loops are still on the list.
The user should be able to start/stop the player using bluetooth devices like headphones etc.
wäre es möglich in das App eine Bluetooth funkion aufzunehmen, mit der
per BD Fußschalter ein STop und Start gemacht wird?
As far as it looks updating the progressBar for player items gets wonky when the currentPlayer gets swapped in LoopedPlayer.
This is just a minor cosmetic issue, but fixing it won't be super easy so I'll resolve this once I get around to it.
I expected that the player would move to my selected next song after finishing the first song without playing two songs at the same time.
I changed this app's setting to "wait until finished" after then this app is playing two songs at the same time and "Pause" "Stop" "Play" button doesn't work as well.
It's currently hard-wired. Shouldn't be
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.