loading streaming url at runtime dynamically
This commit is contained in:
@@ -1,11 +1,28 @@
|
||||
import 'package:audio_service/audio_service.dart';
|
||||
import 'package:audio_session/audio_session.dart';
|
||||
import 'package:audioplayers/audioplayers.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import 'ListenHandler.dart';
|
||||
|
||||
late final ListenHandler _listenHandler;
|
||||
late final AudioSession _session;
|
||||
|
||||
final String _fallback =
|
||||
"https://generic.ything.app/music/separation-185196.mp3";
|
||||
final _urlSource = Uri.parse("https://generic.ything.app/music/player.url");
|
||||
late final String _radioUrl;
|
||||
|
||||
Future<void> loadCurrentUrl() async {
|
||||
final resp = await http.get(_urlSource);
|
||||
if (resp.statusCode == 200) {
|
||||
_radioUrl = resp.body.trim();
|
||||
} else {
|
||||
_radioUrl = _fallback;
|
||||
print('Request for current streaming url failed');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> setupListenHandler() async {
|
||||
_listenHandler = await AudioService.init(
|
||||
builder: () => ListenHandler(),
|
||||
@@ -51,6 +68,10 @@ Future<void> setupListenHandler() async {
|
||||
|
||||
ListenHandler getListenHandlder() => _listenHandler;
|
||||
|
||||
UrlSource getUrlSource() {
|
||||
return UrlSource(_radioUrl, mimeType: "audio/mpeg");
|
||||
}
|
||||
|
||||
Future<bool> startAudioSession() async {
|
||||
return await _session.setActive(true);
|
||||
}
|
||||
|
||||
@@ -5,9 +5,7 @@ import 'package:ything_radio/Globals.dart';
|
||||
class ListenHandler extends BaseAudioHandler {
|
||||
final _player = AudioPlayer();
|
||||
|
||||
final UrlSource _radioSource = UrlSource(
|
||||
"https://generic.ything.app/music/separation-185196.mp3",
|
||||
mimeType: "audio/mpeg");
|
||||
final UrlSource _radioSource = getUrlSource();
|
||||
|
||||
setup_player() {
|
||||
_player.setReleaseMode(ReleaseMode.release);
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'Globals.dart';
|
||||
import 'YthingRadio.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
await loadCurrentUrl();
|
||||
await setupListenHandler();
|
||||
runApp(const YthingRadio());
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ packages:
|
||||
source: hosted
|
||||
version: "7.7.0"
|
||||
http:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: http
|
||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
||||
|
||||
@@ -40,6 +40,7 @@ dependencies:
|
||||
flutter_tabler_icons: ^1.38.0
|
||||
audio_service: ^0.18.15
|
||||
audio_session: ^0.1.21
|
||||
http: ^1.2.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
Reference in New Issue
Block a user