Compare commits
2 commits
9d0e9e2c19
...
6e220073d8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e220073d8 | ||
|
|
cb05247b5d |
100
README.md
100
README.md
|
|
@ -1,62 +1,38 @@
|
||||||
# freezer
|
# freezer
|
||||||
|
|
||||||
Free, unlimited, without DRM music streaming app, which uses Deezer as backend.
|
Free, unlimited, without DRM music streaming app, which uses Deezer as backend.
|
||||||
This app is still in BETA, so it is missing features and contains bugs.
|
This app is still in BETA, so it is missing features and contains bugs.
|
||||||
If you want to report bug or request feature, please open an issue.
|
If you want to report bug or request feature, please open an issue.
|
||||||
|
|
||||||
## Downloads:
|
## Downloads:
|
||||||
Downloads are currently distributed in [Telegram channel](https://t.me/freezereleases) and the [Freezer website](https://www.freezer.life/)
|
|
||||||
**You might get Play Protect warning - just select install anyway or disable Play Protect** - it is because the keys used for signing this app are new.
|
Downloads are distributed in [Telegram channel](https://t.me/+lm3uxdt8exgzODA0).
|
||||||
**App not installed** error - try different version (arm32/64) or uninstall old version.
|
|
||||||
|
## Compile from source
|
||||||
## Compile from source
|
|
||||||
|
Install flutter SDK: https://flutter.dev/docs/get-started/install
|
||||||
Install flutter SDK: https://flutter.dev/docs/get-started/install
|
(Optional) Generate keys for release build: https://flutter.dev/docs/deployment/android
|
||||||
(Optional) Generate keys for release build: https://flutter.dev/docs/deployment/android
|
|
||||||
|
Download source:
|
||||||
Download source:
|
|
||||||
```
|
```
|
||||||
git clone https://git.freezer.life/exttex/freezer
|
git clone https://fem.mint.lgbt/pato05/freezer.git
|
||||||
git submodule init
|
```
|
||||||
git submodule update
|
|
||||||
```
|
Compile:
|
||||||
|
|
||||||
Compile:
|
```
|
||||||
```
|
flutter pub get
|
||||||
flutter pub get
|
flutter pub run build_runner build
|
||||||
flutter build apk
|
flutter build apk # or windows/linux
|
||||||
```
|
```
|
||||||
NOTE: You have to use own keys, or build debug using `flutter build apk --debug`
|
|
||||||
|
NOTE: You have to use own keys, or build debug using `flutter build apk --debug`
|
||||||
## Links
|
|
||||||
Telegram group: https://t.me/freezerandroid
|
## Disclaimer
|
||||||
Discord server: https://discord.gg/7ap654Tp3z
|
|
||||||
|
```
|
||||||
|
Freezer was not developed for piracy, but educational and private usage.
|
||||||
## Credits
|
It may be illegal to use this in your country!
|
||||||
**Tobs**: Beta tester
|
I am not responsible in any way for the usage of this app.
|
||||||
**Xandar**: Community manager, helper, tester
|
```
|
||||||
**Bas Curtiz**: Icon, Logo, Banner, Design suggestions
|
|
||||||
**Deemix**: https://git.rip/RemixDev/deemix/
|
|
||||||
**Annexhack**: Android Auto help and resources
|
|
||||||
|
|
||||||
**Huge thanks to all the Crowdin translators and all the contributors to this project <3**
|
|
||||||
|
|
||||||
### just_audio, audio_service
|
|
||||||
This app depends on modified just_audio and audio_service plugins with Deezer support.
|
|
||||||
Both plugins were originally written by ryanheise, all credits to him.
|
|
||||||
Forked versions for Freezer:
|
|
||||||
https://git.rip/freezer/just_audio
|
|
||||||
https://git.rip/freezer/audio_service
|
|
||||||
|
|
||||||
## Support me
|
|
||||||
BTC: `14hcr4PGbgqeXd3SoXY9QyJFNpyurgrL9y`
|
|
||||||
ETH: `0xb4D1893195404E1F4b45e5BDA77F202Ac4012288`
|
|
||||||
|
|
||||||
|
|
||||||
## Disclaimer
|
|
||||||
```
|
|
||||||
Freezer was not developed for piracy, but educational and private usage.
|
|
||||||
It may be illegal to use this in your country!
|
|
||||||
I am not responsible in any way for the usage of this app.
|
|
||||||
```
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,8 @@ import 'package:window_manager/window_manager.dart';
|
||||||
|
|
||||||
final sysTray = SysTray._();
|
final sysTray = SysTray._();
|
||||||
|
|
||||||
class SysTray with TrayListener {
|
/// Handles system tray and window events
|
||||||
|
class SysTray with TrayListener, WindowListener {
|
||||||
SysTray._();
|
SysTray._();
|
||||||
|
|
||||||
static String getIcon({bool forcePng = false}) {
|
static String getIcon({bool forcePng = false}) {
|
||||||
|
|
@ -33,6 +34,8 @@ class SysTray with TrayListener {
|
||||||
if (_inited) return;
|
if (_inited) return;
|
||||||
_inited = true;
|
_inited = true;
|
||||||
|
|
||||||
|
windowManager.addListener(this);
|
||||||
|
|
||||||
updateIcon();
|
updateIcon();
|
||||||
try {
|
try {
|
||||||
await trayManager.setToolTip('freezer');
|
await trayManager.setToolTip('freezer');
|
||||||
|
|
@ -65,22 +68,19 @@ class SysTray with TrayListener {
|
||||||
MenuItem.separator(),
|
MenuItem.separator(),
|
||||||
MenuItem(
|
MenuItem(
|
||||||
label: 'Previous'.i18n,
|
label: 'Previous'.i18n,
|
||||||
onClick: (menuItem) => audioHandler.skipToPrevious()),
|
onClick: (_) => audioHandler.skipToPrevious()),
|
||||||
playing
|
playing
|
||||||
? MenuItem(
|
? MenuItem(label: 'Pause'.i18n, onClick: (_) => audioHandler.pause())
|
||||||
label: 'Pause'.i18n, onClick: (menuItem) => audioHandler.pause())
|
: MenuItem(label: 'Play'.i18n, onClick: (_) => audioHandler.play()),
|
||||||
: MenuItem(
|
MenuItem(label: 'Next'.i18n, onClick: (_) => audioHandler.skipToNext()),
|
||||||
label: 'Play'.i18n, onClick: (menuItem) => audioHandler.play()),
|
|
||||||
MenuItem(
|
|
||||||
label: 'Next'.i18n, onClick: (menuItem) => audioHandler.skipToNext()),
|
|
||||||
MenuItem.separator(),
|
MenuItem.separator(),
|
||||||
MenuItem(
|
MenuItem(
|
||||||
label: 'Show'.i18n,
|
label: 'Show'.i18n,
|
||||||
// we can safely ignore it if it errors, as it's expected
|
// we can safely ignore it if it errors, as it's expected
|
||||||
onClick: (menuItem) => windowManager.show().catchError((e) {})),
|
onClick: (_) => windowManager.show().catchError((e) {})),
|
||||||
MenuItem(
|
MenuItem(
|
||||||
label: 'Exit'.i18n,
|
label: 'Exit'.i18n,
|
||||||
onClick: (menuItem) async {
|
onClick: (_) async {
|
||||||
await audioHandler.pause();
|
await audioHandler.pause();
|
||||||
SystemNavigator.pop();
|
SystemNavigator.pop();
|
||||||
},
|
},
|
||||||
|
|
@ -103,5 +103,8 @@ class SysTray with TrayListener {
|
||||||
void onTrayIconRightMouseUp() => trayManager.popUpContextMenu();
|
void onTrayIconRightMouseUp() => trayManager.popUpContextMenu();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onTrayMenuItemClick(MenuItem menuItem) {}
|
void onWindowClose() {
|
||||||
|
// release resources before closing
|
||||||
|
audioHandler.stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue