Page 1 of 5 1 2 3 ... LastLast
Results 1 to 15 of 66

Thread: MP3 player

  1. #1

    MP3 player

    Ik probeer deze MP3 player werkend te krijgen in XE8:
    http://www.fmxexpress.com/build-an-m...droid-and-ios/

    Hiervoor is component 'ID3v2 Library' nodig, deze heb ik gedownload: http://www.3delite.hu/Object%20Pasca...v2library.html
    Maar hoe installeer ik precies dit component ?
    Last edited by MMSoft; 27-Jul-16 at 14:28.

  2. #2
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Quote Originally Posted by MMSoft View Post
    Maar hoe instaleer ik precies dit component ?
    Niet.

    Uit de begeleidende readme:
    Quote Originally Posted by ID3v2 Library 2.0 ReadMe.txt
    Installation:
    =============

    Add the directory to the search path, and to Uses list add: ID3v1Library and/or ID3v2Library.
    TMemoryLeak.Create(Nil);

  3. #3
    Ik heb nu de bestanden: ID3v1Library.pas en ID3v2Library.pas toegevoegd aan het project.

    Ik probeer de voorbeeld code te plaatsen, maar in het FireMonkey voorbeeld wordt (in Unit1) een OpenDialog en SaveDialog box gebruikt, en dat lijkt mij niet mogelijk bij FM, tenminste deze zijn bij mij niet selecteerbaar als ik deze op het Form wil plaatsen.
    Ik loop dus al meteen vast hoe ik een MP3 bestand open om dit af te kunnen spelen.

    Hoe kan ik nu een MP3 bestand afspelen denken jullie ?
    Last edited by MMSoft; 27-Jul-16 at 15:53.

  4. #4
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Dan is of de demo niet goed (en gebruikt hij een TOpenDialog/TSaveDialog terwijl dit helemaal niet kan),
    of je vergist je (en kun je wel gewoon een TOpenDialog/TSaveDialog binnen FMX gebruiken).

    Ik weet verder helemaal niets van vuur-aap, dus daar kan ik je echt niet bij helpen.
    TMemoryLeak.Create(Nil);

  5. #5
    Bij de TOpenDialog/TSaveDialog boxen staat niet dat deze geschikt zijn voor Android, en dat staat bij een TEdit en een TButton bijvoorbeeld wel (zie het schermpje dat kort even verschijnt als je er even met de muis op gaat staan (op de plaats waar je het component kiest)).
    De TOpenDialog/TSaveDialog kunnen niet geselecteerd worden, en de TEdit en een TButton wel.

    Het lijkt dus niet aan mij te liggen

    Stel dat ik het Pad en de naam van één MP3 bestand heb, hoe kan ik dit bestand dan afspelen denken jullie ?, want dat kan ik (nog) niet vinden in de code...

  6. #6
    Quote Originally Posted by MMSoft View Post
    Ik probeer de voorbeeld code te plaatsen, maar in het FireMonkey voorbeeld wordt (in Unit1) een OpenDialog en SaveDialog box gebruikt, en dat lijkt mij niet mogelijk bij FM, tenminste deze zijn bij mij niet selecteerbaar als ik deze op het Form wil plaatsen.
    Geen ervaring met FMX maar ik bekeek even het voorbeeld daar is geen enkele Opendialog of SaveDialog in te vinden. De code gaat naar een fixed directory toe en zet alle *.mp3 bestanden in een lijst (via TDirectory.GetFiles). Die bestanden kan je vervolgens afspelen met TMediaPlayer

    http://delphifmandroid.blogspot.fr/2...3-android.html

  7. #7
    Tijdens mijn zoek tocht op internet ben ik op een gegeven moment op een site gekomen waar dat voorbeeld stond waar ik mee bezig bleef, maar inderdaad zat ik daarmee verkeerd.
    Ik heb het inmiddels al een beetje werkend, en probeer nu het volume te regelen, maar dit werkt niet:

    MediaPlayer1.Volume.MinValue := 0; //Min. 0
    MediaPlayer1.Volume.MaxValue := 100; //Max. 100
    MediaPlayer1.Volume := 25; //Volume op 25%

    Hoe pak ik dit aan ?
    Last edited by MMSoft; 28-Jul-16 at 16:04.

  8. #8
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Wat werkt niet?

    Compileert de code niet, krijg je een vaudtmelding, doet 't niet wat jij verwacht, etc. etc.?
    TMemoryLeak.Create(Nil);

  9. #9
    Het compileren gaat goed, geen enkele fout melding. Alleen het volume wijzigt niet.
    Het werkt dus niet zoals ik had verwacht.

  10. #10
    Ik heb al diverse voorbeelden geprobeerd maar krijg het volume niet gewijzigd met code.
    Ik begin mij dan ook af te vragen of ik dat wel in MediaPlayer moet doen en niet ergens in het systeem van de GSM zelf ?
    Wie kan hier iets meer over vertellen ?

  11. #11
    Uit de documentatie
    Volume takes values in the range from 0 through 1. If Volume is 1, then the media file is played at the maximum native volume. If Volume is 0, then the media file is mute.
    http://docwiki.embarcadero.com/Libra...aPlayer.Volume

    Wat gebeurt er als je het volume op 0.25 zet?

  12. #12
    Perfect, dit werkt:
    MediaPlayer1.Volume := TrackBar2.Value / 100; //De TrackBar geeft een waarde van 0...100 gedeeld door 100 is een waarde van 0....1

    Nu ben ik er bijna, alles werkt maar alle liedjes staan nu in één "ListView"

    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    var
      LList: TStringDynArray; //
      LItem: TListViewItem; //
      path: string; //
      i: Integer;
    begin
    
      if TDirectory.Exists('/storage/') then
         path := '/storage/'
      else path := '/sdcard/';
    
    { ? mp3 ? }
      try
        LList := TDirectory.GetFiles(path, '*.mp3', TSearchOption.soAllDirectories);
      except
        ShowMessage('?????? #1!');
        Exit;
      end;
    
    
      ListView1.BeginUpdate;
      try
        for i := 0 to Length(LList) - 1 do
        begin
          LItem := ListView1.Items.Add;
    
          LItem.Text := TPath.GetFileNameWithoutExtension(LList[I]);
          LItem.Detail := LList[I];
        end;
      finally
        ListView1.EndUpdate;
      end;
    
    end;
    Ik zou graag eerst de Mappen zien waarin de muziek staat, en dan één Map kunnen kiezen en de liedjes uit deze map in de ListView te zien krijgen.
    Hoe kan ik dat voor elkaar krijgen ?
    Last edited by MMSoft; 29-Jul-16 at 14:30.

  13. #13
    Als ik de regel: LItem.Text := TPath.GetFileNameWithoutExtension(LList[I]);
    Wijzig in: LItem.Text := TPath.GetDirectoryName(LList[I]);

    Dan krijg ik een hele lijst met van elk MP3 bestand het Path.
    Hoe kan ik het voor elkaar krijgen dat ik alleen 1x de Map (zonder Path) in een lijst krijg, van elke map waarin MP3 bestanden staan ?

    Ik heb de liedjes in mappen staan, met als map naam de naam van de artiest.
    Deze lijst wil ik graag zien.

  14. #14
    Stel ik heb deze map: /Muziek/Artiest_1

    Dan kan ik daarvan de Driver, het Path en het bestand in deze map uit filteren:
    Drive := ExtractFileDir( Items[I] );
    Path := ExpandFileName( Items[I] );
    File := ExtractFileName( Items[I] );

    Maar nu heb ik alleen de laatste map van dit path nodig, dus "Artiest_1"
    Hoe kan ik dat voor elkaar krijgen ?

  15. #15
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Door eerst een TStrings o.i.d. te gebruiken voor je lijst en dan deze filteren en je vonden items naar Tlistview sturen.
    Als je wilt filteren (en zowiezo gebuik maken van een map lezen) is het het beste om deze los te houden van de GUI component, zodat je zelf kan bepalen wat er wel en niet in moet.
    Delphi is great. Lazarus is more powerfull

Page 1 of 5 1 2 3 ... LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •