A radio player mobile application which streams audio from Radio Sai Global Harmony.

Overview

Sai Voice

A radio player which streams audio from Radio Sai Global Harmony.

*Special Thanks to Aman Achutan for the logo

Om Sri Sai Ram 🙏

Sai Voice is an audio app that streams audio data broadcasted by Radio Sai Global Harmony.

⚠️ Internet is needed for the app to function properly.

*All the data inside the app is taken from radiosai.org

Radio Streams include:

  • Asia Stream
  • Africa Stream
  • America Stream
  • Bhajan Stream
  • Discourse Stream
  • Telugu Stream
đź“ť Radio Streams in iOS takes some time to load due to a constraint with the http audio source

Smooth: The app is built to keep a smooth user experience. One can change the streams they want to listen to with ease by just sliding the panel up and selecting the new stream.

Seamless Listening: It is capable of running in the background until the app is removed from the process. Listen to your favourite radio stream with just one click after opening the app (an option to set the favourite stream at the start of the app)

Media Control: It can handle the audio options from a handset to a headset, from lock screen notifications to earphones button click. It also pauses when another player starts and doesn't interrupt any incoming notifications.

Dark Theme: The app also comes with dark theme. One can change the theme they want from settings.

Split Screen: The app is suitable for split screen. Operate this app while doing work in a different app.

Schedule: Look at the radio schedule of different streams from within the app. One can see and listen to the different media present in the schedule by clicking one them.

Sai Inspires: Thought of the day by Sai Inspires is present inside the app. One can read it at any text size they want by zooming in. One can also share the content by clicking the copy icon (copies to clipboard). One can also view and save the image.

Search: Searching through out the Radio Sai audio is now possible from the app. Once can search by filtering through category or streamed date. Listening to the audio from the search is also possible now in the app.

Media Player: A new media player which is capable of playing the media seamlessly. Sharing the link to the media, adding/removing from playing queue, shuffling the queue, repeat mode, and other functions are present in the media player. Drawback of the player is the playing queue is cleared when radio is played or when the player is stopped.

Free without ads: The app is free for all and will remain the same further. No ads are shown in the app. This is thanks to Radio Sai Global Harmony for providing the content without any charge. Like the Sai Organization, we believe in selfless service and do not expect anything in return.

Open Source: We believe that there is nothing to hide and like you to experience the bliss of Swamy. So, the source code of the app is open-source and will remain the same in future.

File Permissions: File write permission is requested only to save images from Sai Inspires. One can deny these permissions from the settings.

"Sai Ram, and Happy Listening"

Future Updates

*I cannot guarantee any of the below. But, will try my best to include such features in future releases (if I can)

  • Add android auto support
  • Add google chrome cast support

Radio Player Flow

Stop State -> Play in app screen (user action) -> Play State
Stop State -> Change Radio Stream (user action) -> Changes Radio Stream -> Stop State
Play State -> Change Radio Stream (user action) -> Stop State -> Changes Radio Stream -> Play State
Play State -> Pause in app screen (user action) -> Stop State

Play State -> Pause in notification (user action) -> Pause State
Play State -> Stop in notification (user action) -> Stop State

Motivation

I like to listen to various bhajans which made me fond of radio sai. I've installed the app and kept listening to the radio that gave me peace. I felt the application UI/UX was not up to the mark. The audio stops in between and doesn't handle audio when I receive a call or play another media. That was the start of the idea to build an app that solves these problems. I started to collect resources from where the radio is broadcasted and finally reached the point to have a public release of the app. I referred to the radio sai app and its functionality while building this app.

I feel this app solves the problems that I (and many others) face and would like to share this with all. It's one's choice to use whichever app is comfortable

Screenshots

Architecture

Most of the main features use bloc architecture using providers and streams. The usage of this architecture helps the app no to completely refresh but just helpful for updating the needed components smoothly.

lib
├───audio_service   # audio service related handlers
│   └── notifiers
├───bloc            # business logic files related to screens
│   ├───media
│   ├───radio
│   ├───radio_schedule
│   └───settings
├───constants       # constants
├───helper          # helper classes
├───screens         # all screens
│   ├── audio_archive
│   ├───media
│   ├───media_player
│   ├───radio
│   ├───sai_inspires
│   ├───radio_schedule
│   └───settings
│       └───general
└───widgets         # widgets related to screens
    ├───radio
    └───settings

Above is generated using "tree" command inside lib/

OpenSource Libraries

shared_preferenecs: used to store short data locally like: saving the radio stream while closing the app and displays the same on app start, display the favourite radio stream on app start; save the user preference app theme.

sliding_up_panel: used to select a different radio stream by sliding up the panel.

shimmer: used to show loading progress in the data loading screens

internet_connection_checker: used to detect the internet status of the device

flutter_downloader: used to download files/media from the internet

just_audio & audio_service: the main base of the app helps play the audio seamlessly with media control. Thank you @ryanheise

and many other open-source libraries.

Thanks to the Open Source community for providing such great libraries and framework which was very helpful in building the application.

Built using

  • Flutter version: 2.8.1
  • Dart version: 2.15.1
  • Visual Studio Code: 1.63.2
  • Operating System: macOS Big Monterey version 12.1.0
  • Gradle version: 7.0.4
  • Android Emulator: Pixel 4a API 31
  • iOS Simulator: Apple iPhone 13 iOS 15

Privacy Policy

The Privacy Policy of the app is in the site: immadisairaj.github.io/radiosai/privacy_policy.html

License

This project is licensed under the GNU General Public License V2, see the LICENSE.md for more details.

You might also like...

ClinicO is an android mobile application which helps in smooth scheduling of appointments at clinics/hospitals.

ClinicO ClinicO is an android moblile application which can be downloaded from here. Problem Statement Nowadays, whenever we fall ill, we visit the do

Feb 14, 2022

A Deep Learning Based Attendance System is a mobile application that aims to make it easier for lecturers to check the attendance status of students which are attending the course.

A Deep Learning Based Attendance System is a mobile application that aims to make it easier for lecturers to check the attendance status of students which are attending the course.

Attendance System / Flutter App A Deep Learning Based Attendance System is a mobile application that aims to make it easier for lecturers to check the

Oct 24, 2022

Real short video app with firebase and pixels API.Where you can create a short video with pixels' stock videos and also merge your audio.

Real short video app with firebase and pixels API.Where you can create a short video with pixels' stock videos and also merge your audio.

Flutter Short Videos Platform Short videos platform with Flutter and Firebase. About Real short video app with firebase and pixels API.Where you can c

Dec 26, 2022

🎞 Flutter media playback, broadcast & recording library for Windows, Linux & macOS. Written in C++ using libVLC & libVLC++. (Both audio & video)

🎞 Flutter media playback, broadcast & recording library for Windows, Linux & macOS. Written in C++ using libVLC & libVLC++. (Both audio & video)

dart_vlc Flutter media playback, broadcast, recording & chromecast library for Windows, Linux & macOS. Written in C++ using libVLC & libVLC++. Install

Dec 29, 2022

An app that records, changes, and plays audio.

An app that records, changes, and plays audio.

voice_changer Voice Changer Application Getting Started This is an application that records, plays, and changes the properties of sound (like pitch an

Oct 13, 2022

A Flutter Plugin to visualize audio in android

A Flutter Plugin to visualize audio in android

flutter_visualizers (Depreciated & Not maintaining) A Flutter plugin to Visualize the audio being played (only android). Usage Add this to your pubspe

Nov 14, 2022

Amazing Flutter package for playing audio with a lot of features to offer.

Flutter_exoplayer A Flutter plugin that let's you play multiple audio files simultaneously with an option to choose if to play in background or as a f

Aug 7, 2022

Compress videos, remove audio, manipulate thumbnails, and make your video compatible with all platforms through this lightweight and efficient library.

video_compress Compress videos, remove audio, manipulate thumbnails, and make your video compatible with all platforms through this lightweight and ef

Dec 31, 2022

Audio manager - A flutter plugin for music playback, including notification handling.

Audio manager - A flutter plugin for music playback, including notification handling.

audio_manager A flutter plugin for music playback, including notification handling. This plugin is developed for iOS based on AVPlayer, while android

Oct 25, 2022
Comments
  • Issue with downloading Sai Inspires Image in iOS

    Issue with downloading Sai Inspires Image in iOS

    When the downloaded image in Sai Inspires Image is deleted in iOS, the application feels to not recognise the file has been deleted and doesn't download when try to download again.

    Steps to Reproduce

    1. Show Menu (home screen)
    2. Open "Sai Inspires"
    3. Click on the Image
    4. Download the Image
    5. Open "Photos" app and delete the image
    6. Switch to app and then download the image again

    How it is working?

    In the above steps, after 6th step, there will be a snackbar showing that the image is already downloaded

    How it should work?

    In the above steps, after 6th step, instead of showing the snackbar the application should download the image.

    đź“ť The issue is only in iOS simulator (didn't test in an actual device)

    bug 
    opened by immadisairaj 1
  • Implement Uni/Custom Links (uni_links) in iOS

    Implement Uni/Custom Links (uni_links) in iOS

    Deep Linking is available in android but not in iOS. Implement deep link in iOS.

    Dependency used is uni_links.

    Methods are already implemented for android. So, for iOS mostly only setup is required.

    enhancement 
    opened by immadisairaj 1
  • Optimize the UI for larger screen devices

    Optimize the UI for larger screen devices

    The current UI of the application well supports for mobile devices. Though the application supports for larger devices like Tablets, the UI seems to be a bit off. Optimising the UI of all screens would make the application look good in the devices like tablets.

    For example:

    • Text in larger screen devices have the same size as small screen devices and doesn't increase. Text size should change accordingly. (this is just an example, but almost all screens are similarly odd)

    đź“ť Make sure not to mess up the current code

    Below Images are of Pixel 4a Mobile and Pixel C Tablet

    These below images are for reference in only one of the screen (there are many screens similarly odd in tablet)

    Screenshot 2021-09-30 at 6 18 40 PM Screenshot 2021-09-30 at 6 19 50 PM enhancement 
    opened by immadisairaj 0
Releases(v1.1.1)
Flutter Music Player - First Open Source Flutter based material design music player with audio plugin to play local music files.

Flutter Music Player First Open Source Flutter based Beautiful Material Design Music Player(Online Radio will be added soon.) Demo App Play Store BETA

Pawan Kumar 1.5k Jan 8, 2023
null 357 Dec 27, 2022
Just audio background - A flutter package plugs into just audio to add background playback support and remote controls

just_audio_background This package plugs into just_audio to add background playb

lonyyy 1 Jan 11, 2022
This app brings latest updates and stats of the global pandemic Covid-19

C-19 Stats This repository has simple Covid-19 data monitoring app. The app is built with flutter. NOTE - Download the latest apk from here - Note: Yo

null 6 Aug 27, 2020
Demo app for Flutter Global Summit 21 Vol 2 talk by Oleksandr Leushchenko

Demo app for Flutter Global Summit 21 Vol 2 talk by Oleksandr Leushchenko This demo showcases a fake functional programming library usage. Go to the s

Oleksandr Leushchenko 1 Dec 9, 2021
YoYo Video Player is a HLS(.m3u8) video player for flutter.

YoYo Video Player YoYo Video Player is a HLS(.m3u8) video player for flutter. The video_player is a video player that allows you to select HLS video s

Ko Htut 89 Dec 23, 2022
Munem Sarker 1 Jan 25, 2022
A mobile image uploader in which you can upload image to your personal gallery from either your camera or mobile gallery and it can detect your current geographic location and address using firebase firestore and storage.

Image Uploader In Flutter About It is an Image Uploader gallery which tracks your address from which you're uploading using Flutter and Image picker.

Prahen parija 6 Dec 20, 2022
Radiao - a radio explorer app that lets you listen to several stations of various countries

radiao Radiao is a radio explorer app that lets you listen to several stations of various countries. features trending stations popular stations liste

null 4 Apr 20, 2022
Let me go is a mobile application which drivers can be notified when an Ambulance is near to them in a traffic.

Let Me Go Let Me Go is a mobile application which was build in order to notify vehicle drivers when an ambulance is near to them within a specific dis

Shakya Peiris 1 Dec 19, 2021