Giter Site home page Giter Site logo

lumpen-radio's Introduction

WLPN 105.5 FM Lumpen Radio Chicago

Stack Share Dependency Status devDependency Status Tips

Never listen to a radio commercial again. The free Lumpen Radio app is here!

WLPN neon artowrk

Features

  • Streams WLPN-LP 105.5 FM Lumpen Radio Chicago
  • Gorgeous video loop with AirPlay support
  • Intelligent handling of common audio interruptions
  • Detailed connection status and play state messaging
  • Translations for English, Spanish, German and Chinese
  • Remote control via Bluetooth and compatible headset
  • Supports iPad and iPhone with iOS 8+

Usage

  • Tapping radio button starts and stops the audio
  • Long-pressing the radio button restarts the audio
  • If the app crashes for any reason please close and reopen it

Getting started

  1. Clone this project.

  2. Install dependencies.

    pod install
    npm install

    Note: If, no when, you run into problems with the Pod installation please review CocoaPods Troubleshooting and pay special attetion to any error messages received during the Pod installation.

  3. Run npm start to start the Webpack watcher and the React Packager in a single shot.

    Note: The Webpack watcher builds the index.ios.js file expected by React Native.

  4. Open WLPN.xcworkspace in XCode and run the project.

Digging in

To learn more about React Native and how this app is built check out the slides originating from my talk on 30 Jun 2015. Additional materials will become available following a free Webcast offered in partnership with O'Reilly Media (scheduled 27 Aug 2015).

File Structure

├── iOS                         # Source code
│   ├── Classes                 # Objective-C, Swift classes
│   │   ├── AppDelegate         # Application initialization and React Native config
│   │   ├── AudioManager        # Lib to access platform APIs and bridge to JS
│   │   └── RootViewController  # RCTRootViewController override to manage Remote Control events
│   ├── Images.xcassets         # Launch screens and native image assets
│   ├── Resources               # Other native resources
│   ├── Constants.h             # Native globals
│   ├── Info.plist              # Project configuration
│   ├── main.jsbundle           # React Native placeholder file
│   └── main.m                  # Application entry point
├── src                         # Source code
│   ├── assets                  # Static resources
│   │   └── videos              # Video assets
│   ├── components              # React Native Components
│   ├── lib                     # JS libraries
│   ├── stores                  # JS persistence with Flux
│   ├── actions.es6             # Flux actions
│   ├── main.es6                # JS application entry point
│   └── styles.es6              # React Native Style Rules
├── .eslintrc                   # JS linter configuration
├── .flowconfig                 # Facebook flow config file
├── .gitignore                  # VCS blacklist
├── Podfile                     # CocoaPods dependency specs
├── Podfile.lock                # Native dependency lock file
├── WLPN-Bridging-Header.h      # Objective-C, Swift bridge support file
├── ignored-modules.js          # RegExp containing modules ignored by watcher
├── npm-shrinkwrap.js           # JS dependency lock file
├── package.json                # NPM dependency specs
├── webpack-watch.js            # Filesystem watcher for JS
└── webpack-config.js           # WebPack configuration

Todo

  • Add background playback support
  • Show progress for initial connection
  • Indicate progress for long-running ops
  • Allow audio disruption for calls, etc.
  • Automatically reconnect if disconnected
  • Icon long-press restarts stream
  • Support Control Center / Remote Control events (thanks to Wayne Wright for the suggestion)
  • Integrate push notifications

Ideas

  • Long-pauses restart stream
  • Add now playing metadata (if available)
  • Provide on-air/off-air indication

Known issues

  • Background video delays device wake then turns black.
  • Audio stream does not automatically restart after some device interruptions (e.g. incoming call sent to voice mail)
  • Audio buffer out after 20 seconds of interrupted call time followed by 20 seconds of play
  • Play button does not function when disconnected from the Internet
  • App appears to buffer indefinitely if playing and Internet connection restarted
  • Launch screen skews on iPad

Credits

Developed for Public Media Institute by Josh Habdas.

Artwork by Jermiah Chiu. App interface and icon by Josh Habdas.

Turntable loop video by Scott Schiller, BSD.

Inspired by open source work by Steffen Tröster.

Many thanks to Public Media Institute, Lumpen Radio and all the wonderful beta testers for helping make this happen. You are beautiful.

  • Ed Marszewski
  • Logan Bay
  • Eric Olson
  • Wayne Wright
  • Elizabeth Rossman
  • Joseph Alfallah
  • Harrison Jones
  • Nick Hausman

lumpen-radio's People

Contributors

filp avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

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.