![]() |
kleines CarPC Programm
Liste der Anhänge anzeigen (Anzahl: 1)
Der MMPlayer läuft bei mir nun im Auto und kann soweit MP3s aus Ordnern einlesen,Playlisten einlesen,speichern.
Dazu können Titel in den Player eingelesen,in der Liste untereinander verschoben, einzelne gelöscht und somit die Playliste letztendlich abgespeichert werden. Er durchsucht die angewählten Ordner rekursiv nach den in den Einstellungen angegebenen Dateiendungen. Ein Doppelklick auf einen Titel startet die Wiedergabe,bei beenden des Titels dann der Umsprung auf den nächsten der Liste. Hier kam es oft zu Stillständen in der letzten Sekunden beim abspielen, da die Tracklänge irgendwie nicht ganz korrekt ausgelesen und somit das Trackende nicht erreicht wurde um dann auf den nächsten zu springen. Habe dort dann einen Timer 3 sekunden vor Ablauf eingesetzt, wenn dann nach dieser Zeit der Titel nicht umspringt, macht dies der Timer. Man kann durch das aktivieren des Pfeils rechts/mittig der Liste aktivieren, das sich der gerade abspielende Titel in der Mitte der Liste hält. Für weitere Aktivitäten innerhalb der Liste sollte dann der Pfeil wieder deaktiviert werden. Die Pfeile oben/unten an der Liste bewirken ein anspringen des ersten und letzten Titels. Eingebaut ist ebenfalls das Auslagern einer Datei, in welcher der "letzte Zustand" bei beenden hinterlegt wird, wenn man dies in Einstellungen so aktiviert hat. Die letzte Liste, sowie Lautstärke wird dann beim nächsten Start eingelesen. Beim Start wird die letzte Endlautstärke innerhalb einer Zeit hochgefahren (Softstart). Beim Starten des Programms werden die Titel der Liste abgefragt, ob diese noch wirklich existieren. In den Einstellungen kann das MP3-Root-verzeichnis einmal eingestellt werden, aus dem dann beim nächsten Einlesen/Hinzufügen von Titeln erstmal wieder gestartet wird. Die Navigation ist in den Einstellungen als externes Programm einstellbar. Es sollte dann beim start immer eine Leiste vom MP3-Player überlagernd am oberen Bildschirmrand verbleiben, um während er Navi noch Titel vor/zurück etc zu verstellen,oder im Menü zu navigieren. Die Grafik des Programms inklusive aller Buttons kann selbst verändert,erstellt werden. Dazu wird lediglich der Dateiname vorgegeben, die Position/Größen der Schaltflächen in den .Ini Dateien einstellen. Insgesamt läuft bei mir das Programm äußerst stabil. Kleine Fehler habe ich nach 3 Monaten Testphase auch immer wieder gefunden. Ich habe dies als Anfänger innerhalb von 4 Monaten geschrieben und gelernt mit Delphi zumindest ein wenig arbeiten zu können (Hobby). Nun, wenn euch etwas auffällt, ich erwarte gerne alle Kritiken. Wenn jemanden den Source interessiert,um ggf nach Lücken zu suchen, kein Problem. |
Re: kleines CarPC Programm
Hallo bluescreen25.
Für nen Änfänger hast Du das ganz toll hinbekommen! Nur die Navigation ist etwas gewöhnungsbedürftig. Mir würde ein Züruck mehr sagen als Beenden, bzw. Hauptmenü als Home. Den Play Button mußte ich erst suchen. Aber über dieses läßt sich streiten... Ansonsten: :thumb: Und mit dem Audi fährst Du in der Gegend rum? :shock: |
Re: kleines CarPC Programm
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Fehlt nur noch entweder die Anleitung wie, oder eine Art Skineditor....den müßte ich aber erst schreiben. Im Moment sind nur die Funktionen drin, die ich für meinen Eigenbedarf nutze. Als Navi setze ich da Navigon NCK 4 ein, das klappt gut mit dem parallelen Abspielen der MP3. Den Start-Button für MP3 habe ich mit Absicht rausgeworfen. Man braucht ihn so nicht. Die Übersicht bei einem überladenen Player mit zig Buttons läßt im Auto nicht gut mit arbeiten. Hier tut es ein einziger Doppelklick auf den z.B. ersten Titel oder nur auf "Titel vor" um erstmal alles in Gang zu bringen. Man fährt ja schließlich Auto und da sollte es schnell gehen. PS: Ich selbst habe eine nette Infrarot-Fernbedienung im Einsatz, welche ich über Girder programmiert habe auf die wichtigsten Funktionen. Ist aber auch Geschmacksache ! Einen "größeren" Fehler habe ich noch in der Erkennung des externen Navi-Programms. Beim Start des Navi wird ein Doppel-Start verhindert. Es erscheint oben in der MP3-Leiste ein zusätzlicher Button "MP3" fürs Schnell-Wechseln zum Player, ebenfalls wenn die Navi gestartet ist, erscheint oben ein Button "GPS" im Player zum Schnell-Wechsel zurück zum Navi. Wenn ich das Navi beende, bleiben die Buttons leider erhalten, da ich noch keine gute Lösung für die Erkennung des Beendens vom Navi-Prog. gefunden habe. Die Navi-Progs sind ja vom Bediener wahlweise einzusetzen und leider verhalten die sich alle unterschiedlich, so das ein Abfangen des Beendens für mich noch ein Problem darstellt. Zum Winter hin möchte ich aber noch ein paar Gedanken,Ideen und Fehler erkennen und dann wieder daran arbeiten. :coder: Anbei nochmal eine Version ohne meine persönlichen Hintergrundbilder sowie von unnötigen Dateien bereinigt ! Grüße bluescreen25 |
Re: kleines CarPC Programm
Guck mal in der DP nach WaitForInputIdle und CreateProcess bzw. ShellExecuteEx für die externen Programme, das sollte helfen. :dp:
Die Skins und die .ini Dateien habe ich gesehen, aber da wollte ich vorm testen nix kaputt machen. |
Re: kleines CarPC Programm
Moin,
du solltest dich evtl. mehr an allgemeine Windows-Standards halten. Dass das Programm immer oben links in der Ecke klebt ist nicht schön, ich würde es auch gerne verschieben können. Über das Design lässt sich streiten, ich mag's nicht, mir ist das alles zu groß und unhandlich (das soll nicht böse gemeint sein) und den Play-Button finde ich, im Gegensatz zu Sunlight, nicht. Aber ein Doppelklick auf einen Titel tut's ja auch. Hints (Tooltips) würden auch nicht Schaden, aber ansonsten als eines der ersten Programm nicht schlecht und das sogar ohne TMediaPlayer zu verwenden, was die meisten Anfänger gerne machen. :) |
Re: kleines CarPC Programm
Zitat:
Das Problem mit dem Fenster-Handle ist so manches mal, das ein Programm gleich mehrere öffnet, da muss man halt das Haupt Handle irgendwie abfangen. |
Re: kleines CarPC Programm
Zitat:
//Edit: Also, die Bedienung finde ich schlüssig, wenn man das unter Touchscreen - Bedingungen betrachtet. Schade, dass sich ein CarPC für meinen Polo ( :mrgreen: ) nicht lohnt... |
Re: kleines CarPC Programm
Zitat:
Das Programm ist im Einsatz an einem 8" TFT im Auto (halt CarPC) und dort braucht man solche großen Buttons und Schriften, es stellt also keinen Home-PC-MP3-Player da. (Ist halt eine spezielle Anwendung. Die Menüleiste weg , Fenstergröße und Fixierung ist hier mit Absicht so erstellt. Unter einer Auflösung von 800x600 ist das Programm Vollbild.Mehr können die 8" TFT auch nicht, aber auch dies lässt sich im Skin ändern. Der Taskleisten-Eintrag ist auch mit Absicht weggenommen. Wahrscheinlich kann man das Programm auch Windows-konform schreiben und in den Einstellungen müßte man dies aber wieder anpassen können. Ich habe dies direkt weggelassen. Der Play-Button braucht ja nicht, hatte ich schon zu geantwortet. Der Player wirkt mit jedem ggf überflüssigen Button überladen. Das Design kann der User selbst erstellen. Es gibt .ini und .jpg Auslagerungen und somit steht erstmal nur die Funktion im Vordergrund. Grüße, bluescreen25 |
Re: kleines CarPC Programm
Zitat:
|
Re: kleines CarPC Programm
Zitat:
Zitat:
Also für's Auto sicher eine super Sache! |
Re: kleines CarPC Programm
Hi,
ist ein recht gutes Programm :thumb: Verbesserungsvorschläge: - Bau eine Titelleiste zum Verschieben ein - Stelle dem Benutzer die Schriftgröße frei - Speichern und Laden von ASX und M3U Listen So sieht ASX 3.0 aus:
Code:
M3U findest du über Google.
<ASX version="3.0">
<ENTRY><REF href="Pfad1" /></ENTRY> <ENTRY><REF href="Pfad2" /></ENTRY> <ENTRY><REF href="Pfad3" /></ENTRY> <ENTRY><REF href="Pfad4" /></ENTRY> </ASX> Da ich gerade viel Zeit habe:
Delphi-Quellcode:
Daraus kannst du dir einige Playlistenformate basteln :)
const
ASXStart = '<ASX version="3.0">'; ASXItemStart = '<ENTRY><REF href="'; ASXItemEnd = '" /></ENTRY>'; function TfrmMain.LoadASX(const asxfile : string):TDynStrArray; var lines : TStringList; music : TStringList; a, i, j : Integer; erstes, zweites : integer; p, line : String; const x : string = 'HREF'; begin lines := TStringList.Create(); lines.LoadFromFile(asxfile); music := TStringList.Create; for i := 0 to pred(lines.Count) do begin line := UpperCase(lines[i]); a := pos(x,line); if (a >= 1) then begin erstes := Pos('"', line)+1; zweites := PosEx('"', line, erstes); if zweites > erstes then begin p := copy(line,erstes,zweites - erstes); music.Add(p); end; end; end; lines.Free; setlength(result, music.count); for j := 0 to pred(music.count) do begin result[j] := music[j]; end; music.Free; end; procedure TfrmMain.SaveASX(Filename: string); var StringList: TStringList; i: integer; begin StringList := TStringlist.Create; try Stringlist.add(ASXStart); for i := 0 to length(ffiles) - 1 do begin Stringlist.add(ASXItemStart + ffiles[i].pfad + ASXItemEnd); end; Stringlist.Add('</ASX>'); Stringlist.SaveToFile(Filename); finally StringList.Free; end; end; Es ist sehr schön und gut, dass du die bass.dll (das hätte ich nicht im ersten Programm geschafft!) anstelle der MediaPlayer-Komponente oder sonstigen Komponenten benutzt wurden :) |
Re: kleines CarPC Programm
Zitat:
-Die Titelleiste war eigendlich drin, habe diese ja extra rausgenommen (siehe Antworten oben) -Die meisten Texte, wie sie auf den Buttons vorkommen, sind eigendlich Bilder(.jpg) Die Buttons bestehen aus drei Bildern (1.unberührt; 2.OnMouseOver; 3.MouseDown). Diese Bilder,sind im Skin-Ordner in den jeweiligen Rubriken in einer .ini deffiniert und zwar in Größe des Jpg, sowie x-y Position. Was als Label genutzt ist, findest du auch in der .ini wieder,dort kann man Schriftart,Größe,Farbe etc. einstellen. Ich dachte mir, ggf mal einen ordenlichen Skineditor zu schreiben, um für den User eine "saubere" Möglichkeit zu bieten,das Design anzupassen. Das ganze Auslagern war schon ein riesen Mehraufwand für den Anfang, wollte aber auf Dauer ein transparenteres Programm bieten. Ehrlich gesagt sind auch noch nicht alle Punkte die eigendlich möglich sind ausgelagert. - Das mit den .M3U -Listen wollte ich auch erst machen, habe dies leider nicht hinbekommen, der User hätte so auch schon vorhandene Winamp-Listen direkt einlesen können, habe jetzt erstmal eine einfache Art gewählt, die, was im Auto eigendlich nur wichtig ist, die Titel in Reihenfolge erfasst und dann in einem unverkennbarem Dateinamen, der auch auf der Festplatte sofort eine Datumsmäßige Ablage von neu nach alt auslagert. Natürlich kann der User den Namen der Playliste auch ändern, während der Fahrt wäre aber einer schon vorgegeben und man braucht keine Tastatur zum speichern. Die Tags werden ja ausgelesen und in einer Laufschrift dargestellt während der Wiedergabe, ein Ändern der Namen der Interpreten etc im Auto macht doch nicht so viel Sinn, oder? Nach langem Für-und Wieder hatte ich mich dazu entschieden, in den Listen die reelen Dateinamen zu halten und nur bei der Wiedergabe dann die Tags auszulesen. Man könnte vielleicht beim MouseOver des jeweiligen Listeneintrags ja als Hint irgendwie den ausgelesenen Interpreten,Titel etc sich anzeigen lassen... Wenn jemand etwas lesenswertes zu den M3U-Listen und ggf zur deren Einbindung hat, das würde mich sehr interessieren. Was kann ich denn den ASX Dateien noch abgewinnen? Arbeitet man damit heute viel, ausser im Internet die Streams zu erfassen ? Viele Grüße, bluescreen25 |
Re: kleines CarPC Programm
Mit ASX arbeitet man nicht viel, aber da ich sie oft benutze, dachte ich mir, ich könnte sie mal posten.
Da ich mit meinem Player bald fertig werde und gut drauf bin, hier der M3U-Code meines Players:
Delphi-Quellcode:
fFiles ist übrigens ein mit Audiodateipfaden und Tags gefülltes Array.
const
M3UStart = '#EXTM3U'; M3UItem = '#EXTINF:'; function TfrmMain.LoadM3U(filename : String): TDynStrArray; var g, music : TStringList; i: integer; begin g := TStringlist.Create; g.LoadFromFile(Filename); music := TStringList.Create; for i := 0 to g.Count - 1 do begin if g[i][1] <> '#' then begin music.Add(g[i]); end; end; g.Free; setlength(result, music.count); for i := 0 to pred(music.Count) do begin result[i] := music[i]; end; music.free; end; procedure TfrmMain.SaveM3U(Filename: string); var StringList: TStringList; i: integer; begin StringList := TStringlist.Create; try Stringlist.add(M3UStart); for i := 0 to length(ffiles) - 1 do begin Stringlist.add(M3UItem); Stringlist.add(ffiles[i].pfad); end; Stringlist.SaveToFile(Filename); finally StringList.Free; end; end; |
Re: kleines CarPC Programm
Zitat:
ja da kann ich nur Danke sagen ! Was für eine Art Player wird deiner sein ? Windows-WinAmp-Like oder DJ-Player ? Da gibt es ja unzählige Möglichkeiten. Stellt du deinen Player dann auch hier vor? Viele Grüße,bluescreen25 |
Re: kleines CarPC Programm
Ich werde ihn hier auch vorstellen, es ist ein ganz normaler Audio/Videoplayer, der halt ein paar Sachen besser macht, als viele Andere. Aber das gehört nicht in diesen Thread, kannst mich ja in den im Profil angegeben Messengern ansprechen, wenn du Näheres wissen willst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz