Giter Site home page Giter Site logo

opensqueeze's Introduction

Open Squeeze

Overview

Introducing Open Squeeze, an Open Source fork of the commercial Android app Orange Squeeze from Orange Bike Labs. Orange Squeeze is an Android app that can be used to control Logitech Squeezebox devices on the Logitech Media Server platform.

Open Squeeze is a very bad example of how a modern Android app should be developed. It has a decade of legacy code/cruft and has survived to this day despite the very schizophrenic state of Android development. You've been warned.

History of Orange|Open Squeeze

Orange Squeeze 1.0 was released on December 15, 2011 targeting a minimum of Android 2.1. Since then the product has undergone development in fits and starts, but as of Spring 2020 most development stopped. Open Squeeze was released in July 2022 with Orange Squeeze branding and certain other unreleasable components removed, but is otherwise fully-functional.

Releases

Find pre-built APK releases (alpha, beta, and release) in the project's Github Releases.

You can also just get the latest release here.

Building

Use Android Studio Dolphin (2021.3.1) release to build the project. You need to install and configure the Android SDK first.

# .\gradlew assembleRelease

Then look in app\build\outputs\apk\release for the unsigned APK file that you can deploy to your device.

Contributing

If you'd like to submit a PR for a change, please feel free. Orange Bike Labs/Ben Sandee acts as stewards for the project for the time being.

Please use Conventional Commits for development moving forward.

Please mirror the existing code style as best as possible and use the project code formats defined in the Android Studio workspace. Certain legacy code style in the app is hideous and should be avoided for new code (e.g. the "m" member variable prefix).

It's possible that contributions may be folded into future releases of Orange Squeeze. If so, the authors will be recognized in the release notes.

Languages and Translations

Open Squeeze was developed by a native American English speaker. The German and French translations were initially machine generated and then heavily modified by users and contributors.

Translations to new languages and modifications to existing translations should be done via Weblate which is freely provided for Open Source projects. Thank you to them for providing this service!

License

The license for the code is Apache License, Version 2.0.

opensqueeze's People

Contributors

bensandee avatar dependabot[bot] avatar semantic-release-bot avatar

Stargazers

 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

Forkers

weblate

opensqueeze's Issues

Check permissions handling for various cases

Maybe write test cases.

The following areas in particular:

  • downloading files (write external) -- across several sdk versions due to varying behaviors
  • Setting mute behavior (read phone state)

SqueezePlayer autostart unavailable

This doesn't work in version 2.6.2.

Preserve previous connection to SqueezePlayer if SqueezePlayer autostart is used at server connection time.

No SqueezePlayer autostart preference available.

Regards,

David

volume control doesn't work anymore

Hi there,
Controlling the voulme doesn't work anymore in Android 13 (s22 ultra), neither within the app nor with the volume buttons. I could swear it worked a few days ago. Maybe the lastest sucurity update from Android?
Cheers,
Torsten

Enhancement: Add ability to mute/unmute current player.

I apologize if there is a way to do this but I can't find it. Other client apps use anything from a dedicated mute toggle button to a long press on the volume button. The mute function is useful for users of the Denon/Marantz AVR Control plugin to allow muting/unmuting of the AVR.

Mute on call behavior is wrong

User reports wrong behavior for mute current and pause all settings for on call behavior.

My Phone Setting        Sync                  Result
-----------             -------               ----------
Mute All                None                  Works
Mute Current            None                  Mute All
Pause All               None                  Mute Current
Pause Current           None                  Works

Left-over translations?

I see some strings in app/src/main/res/values/strings.xml that I can't find any other references to (they seem unused). Maybe remove these strings if they're not used?

The strings are:

  • playlist_action_remove
  • compilation_options
  • nowplaying_saveplaylist_message
  • nextbutton_label
  • neverbutton_label
  • customize_menu_title
  • feedback_collecting_logs
  • cancel_notification_desc
  • pref_autodiscovery_summary
  • pref_autodiscovery_title
  • pref_volumecontrol_notification
  • pref_verboselogging_summary
  • pref_verboselogging_title
  • pref_showreleasenotes_summary
  • pref_showreleasenotes_title

Enhancement: Allow player plugin menus to be added to the main menu via "Customize Menus"

I would like to be able to add the Denon/Marantz AVR Settings plugin menu to the main menu via the "Customize Menus" function. Otherwise, it can only be accessed by selecting "Players" from the main menu, selecting the "three-dot" icon for a player, selecting "More" from the dropdown, and finally selecting the menu from the resulting page. The "Customize Menus" screen would need to have an additional category of "Player" menus displayed, e.g. "Player -> Denon/Marantz AVR Settings", "Player -> Don't Stop The Music" etc., depending on what plugins are installed. As an example, Material Skin facilitates this by allowing shortcuts to these menus to be placed on its home page.

Widget closes when clicked

When using the Widget (Large) it closes straight away and goes to the home screen again.

Running on an Odroid N2L Lineage OS Android 13 with Open Squeeze 2.7.0-alpha.51

Using 2.6.2 it works ok

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.