ajout son dans partition (peut lancer / pause / arreter et s'arrete quand on retour arriere) + truc du prof pour charger et stokcer sur le tel

code
Vivien DUFOUR 2 years ago
parent 3005fd83b0
commit 279abcc6bf

@ -5,10 +5,13 @@ namespace MusiLib;
public partial class App : Application
{
public Manager MyManager { get; private set; } = new Manager();
public Manager MyManager { get; private set; } = new Manager(new Stub.Stub());
public App()
{
/*MyManager.chargerDonnees();*/
MyManager.chargeDonnees();
MyManager.Persistance = new DataContractPersistance.DataContractPers();
MyManager.sauvegardeDonnees();
InitializeComponent();

@ -0,0 +1,72 @@
using Android;
using AndroidX.Core.App;
using AndroidX.Core.Content;
using Android.OS;
using Java.Security;
using MusiLib.Model;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using Android.Content.PM;
using Android.App;
namespace MusiLib.DataContractPersistance
{
public class DataContractPers : IPersistanceManager
{
private static readonly int requestCode = 100;
public string FilePath { get; set; } = Path.Combine(Android.OS.Environment.DataDirectory.AbsolutePath, "fr.vivienmaxime.musilib");
public string FileNameP { get; set; } = "UserFavoris.xml";
public string FileNameU { get; set; } = "UserData.xml";
public (List<Partition>, List<Utilisateur>) chargeDonnees()
{
var serializerU = new DataContractSerializer(typeof(Utilisateur));
List<Utilisateur> util = new List<Utilisateur>();
using (Stream stream = File.OpenRead(Path.Combine(FilePath, FileNameU)))
{
util = serializerU.ReadObject(stream) as List<Utilisateur>;
}
return (new List<Partition>(), util);
}
public void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u)
{
// Vérifiez si l'application a l'autorisation de lire/écrire des fichiers
if (ContextCompat.CheckSelfPermission(Android.App.Application.Context, Manifest.Permission.ReadExternalStorage) == Android.Content.PM.Permission.Denied ||
ContextCompat.CheckSelfPermission(Android.App.Application.Context, Manifest.Permission.WriteExternalStorage) == Android.Content.PM.Permission.Denied)
{
// Demandez à l'utilisateur la permission d'accéder aux fichiers
ActivityCompat.RequestPermissions((Android.App.Activity)Android.App.Application.Context,
new string[] { Manifest.Permission.ReadExternalStorage, Manifest.Permission.WriteExternalStorage },
requestCode);
}
var serializerU = new DataContractSerializer(typeof(Utilisateur));
if (!Directory.Exists(FilePath))
{
System.Diagnostics.Debug.WriteLine("Directory créé à l'instant");
System.Diagnostics.Debug.WriteLine(Directory.GetDirectoryRoot);
System.Diagnostics.Debug.WriteLine(FilePath);
Directory.CreateDirectory(FilePath);
}
else
{
using (Stream stream = File.Create(Path.Combine(FilePath, FileNameU)))
{
serializerU.WriteObject(stream, u);
}
}
}
}
}

@ -17,9 +17,8 @@ public static class MauiProgram
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
builder.Services.AddSingleton(AudioManager.Current);
builder.Services.AddTransient<Accueil>();
builder.Services.AddSingleton(AudioManager.Current);
return builder.Build();
return builder.Build();
}
}

@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace MusiLib.Model
{
public interface IPersistenceManager
public interface IPersistanceManager
{
(List<Partition>, List<Utilisateur>) chargeDonnees();

@ -10,14 +10,23 @@ namespace MusiLib.Model
{
public class Manager
{
public IPersistanceManager Persistance { get; set; }
public List<Utilisateur> utilisateurs { get; private set; }
public List<Partition> partitions { get; private set; }
public Manager() {
public Manager()
{
utilisateurs = new List<Utilisateur>();
partitions = new List<Partition>();
}
public Manager(IPersistanceManager persistance)
{
Persistance = persistance;
utilisateurs = new List<Utilisateur>();
partitions = new List<Partition>();
}
public void ajouterUtilisateur(Utilisateur utilisateur)
{
utilisateurs.Add(utilisateur);
@ -28,39 +37,22 @@ namespace MusiLib.Model
partitions.Add(partition);
}
/*public class Manager
public void chargeDonnees()
{
public IPersistenceManager Persistence { get; set; }
public Manager(IPersistenceManager manager)
{
utilisateurs = new ReadOnlyCollection<>
public List<Partition> partitions { get; private set; }
var donnees = Persistance.chargeDonnees();
utilisateurs.AddRange(donnees.Item2);
partitions.AddRange(donnees.Item1);
}
public Manager()
public void sauvegardeDonnees()
{
utilisateurs = new List<Utilisateur>();
partitions = new List<Partition>();
Persistance.sauvegardeDonnees(partitions, utilisateurs);
}
public void ajouterUtilisateur(Utilisateur utilisateur)
{
utilisateurs.Add(utilisateur);
}
public void ajouterPartition(Partition partition)
{
partitions.Add(partition);
}
private void chargeDonnees()
{
var donnees = Persistence chargeDonnees();
}*/
}
}

@ -3,4 +3,8 @@
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace MusiLib.Stub
{
public class Stub : IPersistenceManager
public class Stub : IPersistanceManager
{
public (List<Partition>, List<Utilisateur>) chargeDonnees()
{

@ -85,12 +85,6 @@
BackgroundColor="Blue"
Clicked="GoToPartitionButton"/>
<Button Grid.Row="1" Grid.Column="2"
Text="Musique"
WidthRequest="75"
HeightRequest="75"
BackgroundColor="Blue"
Clicked="Button_Clicked"/>
</Grid>
</ScrollView>

@ -5,13 +5,10 @@ namespace MusiLib.Views;
public partial class Accueil : ContentPage, IAllowClick
{
private readonly IAudioManager audioManager;
public Accueil(IAudioManager audioManager)
public Accueil()
{
InitializeComponent();
this.audioManager = audioManager;
}
private void GoToFavorisButton(object sender, EventArgs e)
@ -34,17 +31,4 @@ public partial class Accueil : ContentPage, IAllowClick
IAllowClick.ResumeTap();
}
private async void Button_Clicked(object sender, EventArgs e)
{
/*var player = new Windows.Media.Playback.MediaPlayer();
var uri = new Uri($"C:/Users/Utilisateur/Documents/Cours/SAE/SAE_201/ViewsApp/ViewsApp/Resources/Raw/au_clair_de_la_lune.mp3");
player.SetUriSource(uri);
player.Volume = 0.5;
player.Play();*/
var player = audioManager.CreatePlayer(await FileSystem.OpenAppPackageFileAsync("au_clair_de_la_lune.wav"));
player.Volume = 1;
player.Play();
}
}

@ -0,0 +1,39 @@
using Plugin.Maui.Audio;
namespace MusiLib.Views
{
public interface IPlayMusic
{
static AudioPlayer player;
static bool isMusicPlaying = false;
static bool isMusicBeginning = false;
public static async void beginMusic()
{
player = (AudioPlayer)AudioManager.Current.CreatePlayer(await FileSystem.OpenAppPackageFileAsync("au_clair_de_la_lune.wav"));
player.Play();
isMusicPlaying = true;
isMusicBeginning = true;
}
public static void playMusic()
{
player.Play();
isMusicPlaying = true;
}
public static void pauseMusic()
{
player.Pause();
isMusicPlaying = false;
}
public static void stopMusic()
{
player.Stop();
isMusicPlaying = false;
isMusicBeginning = false;
}
}
}

@ -55,15 +55,23 @@
HorizontalOptions="Start"
/>
<Button Grid.Row="5" Grid.Column="0"
Text="E"
Text="Jouer"
WidthRequest="75"
HeightRequest="75"
HorizontalOptions="Start"
Clicked="Play_Music"
/>
<Button Grid.Row="5" Grid.Column="1"
Text="Arrêter"
WidthRequest="75"
HeightRequest="75"
HorizontalOptions="Start"
Clicked="Stop_Music"
/>
</Grid>
</VerticalStackLayout>
</HorizontalStackLayout>
<Button Text="Musique" Clicked="Button_Clicked"/>
</VerticalStackLayout>
</ScrollView>
</ContentPage>

@ -1,6 +1,5 @@
using Microsoft.Maui.Controls.PlatformConfiguration;
using MusiLib.Model;
using Plugin.Maui.Audio;
namespace MusiLib.Views;
@ -8,33 +7,44 @@ namespace MusiLib.Views;
public partial class Partition : ContentPage
{
/*private readonly IAudioManager audioManager;*/
public Manager MyManager => (App.Current as App).MyManager;
public Manager MyManager => (App.Current as App).MyManager;
public Partition()
{
InitializeComponent();
listUtil.BindingContext = MyManager;
/*this.audioManager = audioManager;*/
}
private async void Button_Clicked(object sender, EventArgs e)
private void Play_Music(object sender, EventArgs e)
{
/*var player = new Windows.Media.Playback.MediaPlayer();
var uri = new Uri($"C:/Users/Utilisateur/Documents/Cours/SAE/SAE_201/ViewsApp/ViewsApp/Resources/Raw/au_clair_de_la_lune.mp3");
player.SetUriSource(uri);
player.Volume = 0.5;
player.Play();*/
/*var player = audioManager.CreatePlayer(await FileSystem.OpenAppPackageFileAsync("au_clair_de_la_lune.wav"));
player.Play();
player.Dispose();*/
Button button = (Button)sender;
if (!IPlayMusic.isMusicBeginning)
{
IPlayMusic.beginMusic();
button.Text = "Pause";
}
else if(!IPlayMusic.isMusicPlaying)
{
IPlayMusic.playMusic();
button.Text = "Pause";
}
else
{
IPlayMusic.pauseMusic();
button.Text = "Jouer";
}
}
private void Stop_Music(object sender, EventArgs e)
{
IPlayMusic.stopMusic();
}
protected override bool OnBackButtonPressed()
{
IPlayMusic.stopMusic();
return base.OnBackButtonPressed();
}
}
Loading…
Cancel
Save