Giter VIP home page Giter VIP logo

ampflower's Introduction

ampflower

I'll attempt to write a Music player that will connect to the media server Ampache. It will run on Android.

Motivation

I'm not entirely satisfied with the existing music players, I was an avid user of Just Player but I can't find a more recent version so I thought, "How hard can it be?". So here we go!

Platform

This software will be written in Java and will be intended for Android. The most recent versions of Android will be supported.

Future features

This software will allow:

  • Downloading from the ampache server and playing audio files.
  • Reviewing and updating the catalog data of a file.
  • Maybe play videos? Not sure about that...

How to contribute

If you want to contribute, check out the code and submit a pull request, I'll be happy to review. You can also create issues to get my attention.

Testers welcome!

We're on Google Play and we're open for testing! Please use this link to download and test: https://play.google.com/store/apps/details?id=ar.com.strellis.ampflower

Example Screenshots

ampflower's People

Contributors

daxcurson avatar

Stargazers

 avatar  avatar

Watchers

 avatar

ampflower's Issues

LoginResponse objects different to request the playlist and the art?

Due to different loginResponse objects being picked up for getting the playlist and the art, the playlist is working while the art is not. Log example:

192.168.1.6 - - [02/Sep/2021:07:15:22 -0300] "GET /ampache/server/json.server.php?action=playlist_songs&auth=b2b7a8585dcdd75b7278fcaee02296f6&filter=9&offset=0&limit=2147483647 HTTP/1.1" 200 319163 "-" "okhttp/3.14.9"
192.168.1.6 - - [02/Sep/2021:07:15:23 -0300] "GET /ampache/image.php?object_id=2142&object_type=album&auth=b2b7a8585dcdd75b7278fcaee02296f6&name=art.jpg HTTP/1.1" 200 94566 "-" "okhttp/3.14.9"
192.168.1.6 - - [02/Sep/2021:07:15:26 -0300] "GET /ampache/server/json.server.php?action=get_art&auth=caa17cbc32bbc40a258311ec75183818&type=artist&id=222 HTTP/1.1" 200 84 "-" "okhttp/3.14.9"

The invalid ID is that for the art, which causes the background to be blank. We seriously need some way to update login response if they are found to be outdated...

Home screen is blank

My intention with that screen is showing the latest artists or the latest albums played or something, with their corresponding artwork. This may require quite a bit of work, and several subtasks...

Coloring the progress bar

When I replaced the default progress bar with that of the ExoPlayer, I lost the colorings of that original bar. I could recover the colors and use them here so it doesn't look all white and boring...

Rework search by query

Unexpectedly, I found that a mapping method over a LiveData object can be triggered by way of a Transformations:

Transformations.switchMap(dataSourceFactory.getNetworkStatus(),
NetAlbumsPageKeyedDataSource::getNetworkState);

The switchMap allows to invoke the method in the second parameter for a change in the observed object (in the first parameter). This can be used to trigger searches on the search string, to replace the current method where a new datasource is created for each change in the search string.

Shuffle button missing

There is no button for shuffling the playlist. Also, there is no infrastructure behind-the-scenes to do it, this would require some amount of work to get done.

The list of albums doesn't reset after searching

The string used to query for albums stays within the AlbumsRepository and there's no way to reset the search. Maybe after selecting songs to play I should reset it? Or if I just select an album, I create a new Repository with an empty search string to force it to reload the whole list of albums?

Server warnings in PHP output cause JSON parsing to fail

I think that the response from the server is actually 200 OK, but due to a permissions error, there is a warning inserted into the PHP output and it gets sent along with the Json response. I wonder if there is a way around this? I don't think so... I'll think about it, though.

Add to playlist

Other players have an Add to Playlist button. The current button replaces the songs in the list with the selected ones. Maybe I'll add another, add to playlist button?

Capture screenshots!

Capture screenshots of the player to add them to the github project page and make it more attractive...

Add an equalizer

Other music players have equalizers. I must have a demo equalizer interface somewhere, I would have to add it here. In fact, the 3-bar button right below the artwork in the palyer was meant to show the equalizer but it's not showing now.

Migrate to Paging 3

Currently the Paging version used is 2. It is possible to update to version 3.

Repeat button missing

There is no button for repeat. All music players have it. This should be fairly easy to do. The current buttons for the timer and volume, taken from the original implementation of the player, are still there but they could be replaced with those of shuffle and repeat. Also, apart from the button, some code behind-the-scenes would be required, this should be fairly easy as well, because Exoplayer contemplates the use of Repeat.

Clicking the notification doesn't open the application

In other applications, clicking the notification doesn't open the notification. This was working at some point, when the notification manager created a PendingIntent, but that was changed and now no longer works as expected.

Add to Google Play

Some day... some day, when this player is finished, or close to finishing, I'll add it to Google Play so it's easy to download by other enthusiasts of Ampache.

Unselected songs are shown in the playlist view, that are not sent to the MediaPlayer service

Strangely, a song that has not been selected in the Choose songs screen, and is not sent to the MediaPlayerService, is shown in the Playlist view. Later, the playlist view is confused and highlights the track by its track order, which would be fine as long as the Exoplayer playlist matches the contents of the view. Why unselected songs are sent to the playlist view?!?

Expiring session causes album/artist/playlist scroll list to crash the application

When the session expires and the user is browsing the list of albums/artists/playlists, the Server sends a response which contains a null data object and an error object, but the callback, which requires the parameters to be non-null, causes an assertion fail and the application crashes. The application should check if the data object received from the server in the Response is non-null, and in case it is, it should be able to catch the error and trigger a renewal of the session key.

The background of the player is gray

My intention is to show the face of the artist or something. The current message from the MediaPlayerService contains the album artwork URL but not that of the artist. It is possible, however, to send it with an "Extras" bundle. Something to think about...

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.