Sai Voice

一个广播播放器,从 Radio Sai Global Harmony 流式传输音频。

Radio Streams include

  • Asia Stream
  • Africa Stream
  • America Stream
  • Bhajan Stream
  • Discourse Stream
  • Telugu Stream.

流畅:该应用程序旨在提供流畅的用户体验。用户可以通过向上滑动面板并选择新的流来轻松更改他们想要收听的流。

无缝收听:它可以在后台运行,直到应用程序从进程中被移除。打开应用程序后,只需点击一下即可收听您最喜欢的广播流(应用程序启动时设置收藏夹流的选项)。

媒体控制:它可以处理从手机到耳机的音频选项,从锁屏通知到耳机按钮点击。当另一个播放器开始播放时,它也会暂停,并且不会中断任何传入的通知。

深色主题:该应用程序还带有深色主题。用户可以从设置中更改他们想要的主题。

分屏:该应用程序适合分屏使用。在操作其他应用程序的同时操作此应用程序。

日程:从应用程序内查看不同流的广播时间表(重定向到官方网站)。

Sai Inspires:应用程序内提供 Sai Inspires 的每日思想。用户可以通过放大来以任何文本大小阅读。用户还可以通过单击复制图标(复制到剪贴板)来共享内容。用户还可以查看和保存图像。

免费无广告:该应用程序对所有人免费,并且将继续保持免费。应用程序中不会显示任何广告。这要归功于 Radio Sai Global Harmony 免费提供内容。与 Sai 组织一样,我们相信无私的服务,不期望任何回报。

开源:我们认为没有什么需要隐藏的,并希望您体验 Swamy 的喜悦。因此,应用程序的源代码是开源的,并且将来也将保持如此。

文件权限:仅请求写入文件权限是为了保存 Sai Inspires 的图像。用户可以从设置中拒绝这些权限。

"Sai Ram,收听愉快"

未来更新

*我无法保证以下任何一项。但是,如果我能做到,我将尽力在未来的版本中包含这些功能(如果可能的话)

  • 添加 Android Auto 支持
  • 添加 Google Chrome Cast 支持

广播播放器流程

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

动机

我喜欢听各种 bhaj歌,这让我爱上了 radio sai。我安装了该应用程序并一直在听广播,这给了我平静。我觉得应用程序的 UI/UX 还有待改进。音频会中途停止,并且在我接到电话或播放其他媒体时无法处理音频。这就是我开始构思构建一个可以解决这些问题的应用程序的想法。我开始从广播播放的源头收集资源,并最终达到了公开发布应用程序的程度。在构建此应用程序时,我参考了 radio sai 应用程序及其功能。

我认为这个应用程序解决了我和许多其他人遇到的问题,并想与大家分享。用户可以选择使用任何他们觉得方便的应用程序。

屏幕截图

screenshot_1

screenshot_2

screenshot_3

screenshot_4

screenshot_5

screenshot_6

screenshot_7

screenshot_8

screenshot_9

screenshot_10

screenshot_11

screenshot_12

架构

大多数主要功能都使用 bloc 架构,通过 provider 和 streams。使用这种架构有助于应用程序不会完全刷新,而只会帮助平滑地更新所需的组件。

lib
├───audio_service   # audio service related task
│   └── 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

以上内容是在 lib/ 中使用“tree”命令生成的

开源库

shared_preferenecs
用于在本地存储短数据,例如:关闭应用程序时保存广播流并在应用程序启动时显示相同内容,在应用程序启动时显示喜欢的广播流;保存用户偏好的应用程序主题。

sliding_up_panel
用于通过向上滑动面板来选择不同的广播流。

shimmer
用于在数据加载屏幕中显示加载进度

internet_connection_checker
用于检测设备的互联网状态

flutter_downloader
用于从互联网下载文件/媒体

just_audio & audio_service
应用程序的主要基础,有助于无缝播放音频并进行媒体控制。感谢 @ryanheise

以及许多其他开源库。

感谢开源社区提供如此优秀的库和框架,它们在构建应用程序方面非常有帮助。

GitHub

https://github.com/immadisairaj/radiosai