Giter Site home page Giter Site logo

mrksbrg / racketghost Goto Github PK

View Code? Open in Web Editor NEW
5.0 4.0 1.0 45.96 MB

Android Open Source Ghosting Coach for Squash, Badminton and Racketlon

License: MIT License

Java 100.00%
fitness-app squash badminton fitness app android sports workout ghosting racketlon

racketghost's Introduction

RacketGhost

Maintainability CodeScene Code Health

  • Android Open Source Ghosting Coach for Squash, Badminton, and Racketlon

Background

Ghosting is an established training exercise in racket sports to practice court movement without a ball. Running to the various corners of the court improves both footwork and general stamina. In the best of worlds, your coach or sparring partner will always be ready to point you to random corners at a pace that pushes you to your limits.

Unfortunately, few people have access to a coach at all times, thus have to run the exercise on their own. That means the randomness in the order of corners is missing.

With RacketGhost you get to have a ghosting coach on your mobile device, always ready to run a ghosting session with you!

Getting Started

Using RacketGhost means following these steps:

  1. Configure your ghosting session.
  2. Put your mobile device in front of you on the court.
  3. Press "GO!" to start your ghosting session.
  4. Move to the starting position (mid court).
  5. RacketGhost highlights court positions for you to reach.
  6. Compare your recent session with your ghosting history.
  7. Press "Back" to return to the main screen.

In the main screen you get to set the following parameters for your next ghosting session:

  • Reps: The number of repetitions per set, i.e., the number of corners to reach. [DEFAULT=15]
  • Sets: The number of sets in the ghosting session. [DEFAULT=3]
  • Interval: The time (in milliseconds) between repetitions in the ghosting session. [DEFAULT=5000]
  • Break btw. sets: The time (in seconds) to rest between sets. [DEFAULT=15]

Furthermore, there are two checkboxes [DEFAULT=CHECKED]:

  • 6 corners: If checked, RacketGhost points you to six court positions, otherwise only the four corners are used.
  • Audio: Play complementing audio cues

Further Information

  • The current version of RacketGhost is tailored for squash. Although it works fine for badminton as well, refering to court positions as volley left/right does obviously not make sense.
  • As the frequent releases suggest, the project relies on continous deployment.
  • To compensate for the shorter distances, the interval for volley positions is automatically decreased to 2/3 of the setting.
  • In the main screen the last 3 ghosting sessions are listed, but in the summary screen 15 sessions are presented.
  • You can stop an ongoing ghosting session by pressing "Stop". Press "Back" to return to the main screen.

Version History

< 1.0.0 - Initial development

1.0.0 - Released on Amazon Appstore: http://www.amazon.com/Markus-Borg-RacketGhost/dp/B013YY2MKE/

1.1.0 - Audio added. Released on Google Play: https://play.google.com/store/apps/details?id=com.markusborg.test&hl=en

1.2.0 - Released on Google Play Oct 3, 2015

  • Added picture of squash ball
  • Increased countdown from 3s to 5s
  • Minor bug fixes

1.2.1 - Released on Google Play Oct 10, 2015

  • Fixed sound bug on Sony Xperia

1.2.2 - Released on Google Play Oct 11, 2015

  • Changed minSdkVersion to 9
  • Added SharedPreferences to store the latest setting between sessions

1.3.0 - Released on Google Play and Amazon Appstore Oct 14, 2015

  • First release with a stable implementation of all basic features
  • Major layout fixes

1.3.1 - Released on Google Play Oct 18, 2015

  • Updated the layout for ghosting sessions, added the logo in the center

1.3.2 - Released on Google Play Oct 18, 2015

  • Fixed bug, no squash balls presented on volley left and right

1.4.0 - Released on Google Play Oct 21, 2015

  • A badminton mode has been added
  • Squash/badminton is chosen using a Spinner
  • Seek bars replace the edit texts in the main activity

1.5.0 - Released on Google Play Nov 23, 2015

  • Added a listview with a custom adapter to the ResultsActivity

1.5.1 - Released on Google Play Nov 24, 2015

  • Bug fix for parsing the history file of early versions of RacketGhost

1.5.2 - Released on Google Play Nov 25, 2015

  • Bug fix for API versions before LOLLIPOP
  • Fixed presentation issue in MainActivity

1.6.0 - Released on Google Play Dec 23, 2015

  • Major changes to the thread model

1.7.0 - Released on Google Play Jan 5, 2016

  • Major changes to the graphics

1.7.1 - Released on Google Play Jan 13, 2016

  • Updated the RacketGhost icon
  • Improved text visibility
  • Updated Help and About dialogs

1.8.0 - Released on Google Play Jan 28, 2016

  • Added sport-specific click sounds
  • Added stereo effects during ghosting

1.8.1 - Released on Google Play Jul 11, 2016

  • Updated and tested for Marshmallow
  • Improved in-app help
  • Added a splash screen

1.8.2 - Released on Google Play Sep 24, 2018

  • Meets Google Play's new requirements for target API 26
  • Updated and tested for Pie (API 28)

1.8.3 - Released on Google Play May 1, 2019

  • Increased font size (user request)

1.8.4 - Submitted to Google Play Aug 18, 2023

  • Meets Google Play's new requirements for target API 33
  • Migrated to AndroidX
  • Updated Gradle

racketghost's People

Contributors

mrksbrg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ryanc0714

racketghost's Issues

Need more time before first set starts

It takes a while to put the device in a good position on the court and return to the starting position. Add a longer count down before the first set, maybe 10 s?

RacketGhost crashes at startup

After patching to 1.5.0 a crash has been reported on Samsung Galaxy Express 2:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.markusborg.test/com.markusborg.ui.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2447)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2507)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5692)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
at com.markusborg.logic.Setting.(Setting.java:53)
at com.markusborg.logic.LogHandler.(LogHandler.java:44)
at com.markusborg.ui.MainActivity.onCreate(MainActivity.java:66)
at android.app.Activity.performCreate(Activity.java:5541)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
... 11 more

Add optional "push" sound

Add optional "push" sound when there is only a few more reps to go. Make it an option in the settings.

Frash start

Replace everything by a new Android Studio project.

Crash when session completed

On Samsung Galaxy Express 2, crash when opening new listview on v. 1.5.1. Linking appears wrong, getBallIcon is not found.

Do clean and rebuild?

Add autotests

The project should have a regression suite of autotests to catch defects before new code is introduced.

The volley corners should be faster

Running to the four real corners takes some time; Doing the volleys is significantly faster. The interval time should reflect this. Possibly 2/3 of the time?

Store last setting

The app should store the setting using SharedPreferences, and load it in OnCreate. There should also be a Reset button to get the default (recommended) setting.

Very low sound on Sony device

Very low sound (but sound at least!) on a Sony Xperia M device. Could the default volume be increased in the app?

Immediate on screen timer

User request:

Start the on-screen timer between reps immediately, rather than giving a 5 second countdown.

Add audio

Implement the audio announcements.

Replace settings menu by about

The setting menu doesn't make sense. Instead, it could be replaced by a simple about option. Popup with link to Github repo?

Add a splash screen

The special edition for Swedish Open has a splash screen. Add one also for the standard version of RacketGhost.

Ghosting AsyncTask continues after pressing 'back'

The AsyncTask does not stop, but continues in the background. The same happens when switching to another app or pressing 'home'; The activity continues in the background and keeps playing sounds, but it cannot become active again.

Such operations should stop the ghosting session.

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.