# Browser in Java Anwendung



## Dogano88 (3. Okt 2012)

Hallo Experten,

ich bin auf der Suche nach einer Lösung zu meinem Problem auf dieses Forum gestoßen und habe mich entschlossen mich hier zu registrieren, da hier doch wirklich gute Hilfe angeboten wird.

Ich möchte für unser Wohnzimmer ein kleines Programm schreiben, was über den Webbrowser auf das Internet auf verschiedene Streams zugreift. Die Idee dabei ist einen kleinen "Fernseher" zu programmieren, da wir nicht alle Sender aus unserer Heimat hier empfangen können.

Dabei stellt sich die erste Frage für mich: Kann ich den Browser in die Java Anwendung einbetten? Wenn ja, ist er voll funktionsfähig wie "der normale" Browser? 

Ich bin auf JDesktop und JDIC gestoßen bei meinen Recherchen. Jedoch kam ich nicht weit mit der Programmierung, da verschiedene Ansätze gezeigt wurden. Ich erhoffe mir nun bei Hilfe bei euch..


Konkret zum ganzen noch einmal: Ich möchte, dass wenn ein Button, Container etc angeklickt wird der Stream von einem Sender innerhalb der Anwendung angeht. Natürlich sollten auch Sachen wie lauter, leiser und Vollbild etc. funktionieren.

Ist das möglich? Wäre das viel Aufwand? Wäre es einfacher einen externen Browser zu nutzen?

Liebe Grüße und herzlichen Dank,

Dogan


----------



## Dogano88 (3. Okt 2012)

Hallo,

Kennt keiner eine Lösung?


----------



## mjdv (3. Okt 2012)

Ich verstehe gar nicht genau was du möchtest. Warum nimmst du nicht einfach einen normalen Browser und schaust damit die Streams?

Da das meiste wohl auf Flash basiert, dürfte es da schwierig mit Java sein. Außer du kommst irgendwie so an den Stream ran. (Wie zB. ein Youtube Downloader oä.)


----------



## Dogano88 (3. Okt 2012)

Ist das denn so wichtig warum ich das will? Es geht darum, dass ich meine Erfahrungen in Programmierung erweitern will und es mich interessiert ob sowas möglich ist oder nicht. Auf deine Idee wäre ich sicher auch gekommen, da brauch ich bestimmt keine Besserwisser a la "wieso nimmst du nicht einfach den Browser".

Die Frage war ja eben ob man den Browser komplett einbetten kann oder man alles "zu Fuß" programmieren muss. Ich finde es eleganter wenn die Anwendung es eingebettet hat und nicht extern über den Standardbrowser.


----------



## gp (3. Okt 2012)

Macht schon Sinn, wenn du etwas genauer sagst, was du willst. Wir sind keine Hellseher und viele Wege führen nach Rom. JavaFX kann ohne weiteres eine Browser-Engine einbinden, alternativ könnte dein Programm auch direkt den Firefox oder welchen Browser auch immer aufrufen.

guenter via tapatalk


----------



## Marcinek (3. Okt 2012)

Die Frage ist aber durchaus berechtigt. 

Du möchtest Filme gucken über einen Browser und denkst, dass dieser die Filme darstellt. Dem ist aber nicht so.

Es gibt in Java implementierte Browser, aber bisher nix, was einem Firefox oder IE gleich kommt. (Also so wie du es dir vermutlich vorstellst).

Ich würde mir zum Einstieg etwas kleineres nehmen.


----------



## Dogano88 (3. Okt 2012)

Hi,

also ich will eine Art "Fernseher" programmieren. Wir können leider sehr wenig von den Fernsehersendern aus der Heimat empfangen da eine Satellitenschüssel technisch nicht möglich ist und weiterhin keine anderen Alternativen uns zur Verfügung stehen. Seit längerer Zeit "öffnen wir einfach den Browser" und schauen uns die Streams so an. Jetzt kam mir die Idee auf, einfach eine Anwendung zu entwickeln, wo man nicht immer den Browser öffnen, Link eingeben und auf Play drücken muss. Ich würde dann den Rechner dauerhaft an den Fernseher anschließen.

Natürlich kann ih eine Anwendung etnwickeln die den Browser mit dem jeweiligen Link öffnet. Aber wie erwähnt finde ich es eleganter wenn er in der Anwendung gestartet wird. Meine Frage daher ist:

Kann ich das tun, wäre es umständlich/lohnt es?


----------



## Marcinek (3. Okt 2012)

Ja klar geht das, steht auch schon weiter oben.

Du rufst die Seite auf. Suchst den entsprechenden Hinweis auf den Stream und stellst ihn dann dar.

Aber du brauchst dazu in aller Regel einen Flashplayer und keinen Browser.


----------



## Dogano88 (3. Okt 2012)

Hi, hast du vielleicht entsprechende Beispiele oder Literatur dafür?


----------



## Marcinek (3. Okt 2012)

SmartTVs und die Playstation macht das so.

Ich müsste hierzu auch googlen.


----------



## Dogano88 (3. Okt 2012)

Ich bräuchte einen Anhaltspunkt, einen Klassennamen oder ähnliches, wonach ich googlen könnte.


----------



## Dow Jones (3. Okt 2012)

JDIC hatte ich vor Jahren mal verwendet. War eigentlich nicht schwierig. Im Quellcode sah das in etwa so aus:
[Java]
        BrowserEngineManager bem = BrowserEngineManager.instance();
        bem.setActiveEngine(BrowserEngineManager.IE);
        IBrowserEngine be = bem.getActiveEngine();
        WebBrowser webBrowser = (WebBrowser) be.getWebBrowser();
        jPanel1.add(webBrowser);
[/Java]
Zum Steuern des Browsers gab es ein paar Methoden und einen EventListener:

```
webBrowser.setURL(new URL(...));
        webBrowser.back();
        webBrowser.forward();
        webBrowser.refresh();
        webBrowser.stop();

        webBrowser.addWebBrowserListener(new WebBrowserListener(){
            public void initializationCompleted(WebBrowserEvent wbe) {}
            public void downloadStarted(WebBrowserEvent wbe) {}
            ...
        };
[/Java]

Ob man damit auch Fernsehstream anschauen kann habe ich nie ausprobiert. Schätze aber mal das es geht, wobei der Browser auch nichts anderes tun wird als einen Flashplayer oder ähnliches zu starten. Auf der Seite [url=http://www.javadesktop.org/articles/jdic/]JavaDesktop: The JDIC Project[/url] gibt's offenbar ein kleines Demoprogramm (Webstart), da kannst du ja mal testen ob das mit deinen Sendern klappt.
Was wahrscheinlich nicht so ohne weiteres klappt ist den vom Browser gestarteten Flashplayer anzusteuern (z.B. um in den Vollbildmodus zu gelangen). Vielleicht könnte man sich da mit der Klasse Robot irgendwie behelfen wenn man das unbedingt will...
```


----------



## troll (4. Okt 2012)

erstmal find ichs ja schon wizig gleich nach 4h wieder zu pushen ... und das gleich bei so nem doch recht komplexen thema ...

dann auch : warum willst du einen browser in eine java app "einbinden" ? ein browser selbst ist nur ne graphische render-engine für HTML und dessen inhalt ... für n stream müssen wiederum andere dinge wie flash-player "eingebunden" werden ...

an sich erstmal die antwort : ja klar ist es möglich ... gegenfrage : wie viel aufwand willst du dir machen ?
irgendwie an die direkten streams zu kommen ist in der regel möglich, wenn auch manchmal durch aus extrem kompliziert (z.b. wenn im player einiges eingebettet ist und nur sehr wenige infos vom backend als parameter preisgegeben werden) ... allerdings hilft dir da erstmal nicht viel wenn du dann mit den daten nichts anfangen kannst ...
also brauchst du um die stream-daten dann auch wiederzugeben einen "player" ...
das JMF kommt damit in der regel nicht klar ... also externe lib suchen und nutzen ...
und dann musst du natürlich die logik selbst basteln ... also wenn auf button X geklickt wird das dann auch stream X geladen und abgespielt wird ...
dabei sollte man natürlich drauf achten andere laufende streams zu stoppen und die verbindung zu trennen ...


möglich ist das also ... und wenn man weis mit welchen libs man weiterkommt auch recht schnell zusammen gesteckt ... allerdings schreibe ich das aus sicht eines jahrelangen java-programmierers ... du klingst eher nach "amatuer" oder "anfänger" ... und für dich dürfte das dann doch ein ziemlicher aufwand werden ...
bevor du jetzt also krampfhaft versuchst dieses projekt was scheinbar noch über deinen möglichkeiten liegt als "lern-projekt" umzusetzen und dabei vermutlich scheitern wirst nimm dir erstmal was kleineres vor um die nötigen grundlagen zu lernen die für sowas nötig sind ...

in deinem fall ist es also wirklich sinnvoller : erstmal weiterhin browser nutzen ...



ps : ich versteh das problem an sich eigentlich nich ... das man keine schüssel anbauen darf kennt man ja ... aber dafür hat man dann in der regel kabel ... und da wird auch sehr vieles eingespeist ... man brauch nur n DVB-C fähigen fernseher und ne passende code-karte ... und das was man dann immer noch nicht bekommt guckt man halt am rechner bzw über ne multi-media box ...
außerdem denke ich persönlich das java für das gewünschte nicht gerade die beste sprache der wahl ist ... obgleich es mit libs (die großteil eh native-code nutzen) möglich ist


----------



## ssoul26 (4. Okt 2012)

Eventuell hilft dir das hier weiter : http://www.genuitec.com/about/labs-webkit-for-swt/WebKit%20For%20SWT%20Developer%20Guide.html

Es gibt weiterhin viele türkische Sender die leider nicht über Kabel emfpangbar sind. Jedoch sehe ich keinen enormen Mehrwert darin, hierfür eine eigene Applikation in Java zu entwickeln.

Desweiteren gibt es hierzu schon eine Stand-Alone Lösung die sehr viele türkische Sender unabhängig von dem Browser öffnet und anzeigt. Hier hat man auch Zugriff auf alle relevanten Kontrollmechanismen (ist -fall ich mich richtig erinnere- in C# geschrieben).


----------



## gp (4. Okt 2012)

Schön, das wir jetzt etwas mehr Informationen haben. Und manchmal kommen Antworten halt etwas später: wir haben ja noch anderes zu tun (ich auf jeden Fall und opfere jetzt ein paar Minuten der Mittagspause) 

Ich habe ein ähnliches Problem: kein Satelittenempfang, etwas DVB-T und ansonstene DSL (wenn auch recht langsam).

Ich nutze einmal Zattoo - auch wenn es dann hin und wieder mal an der DSL-Geschwindigkeit mangelt. 

Für DVB-T habe ich einen Stick - und nutze VLC.

Und VLC könnte für dich die Lösung sein:
lege eine Play-Liste an mit allen Streams, die du kennst - Video und/oder Audio (sprich Radio) sind möglich. Ich rufe das ganze per Batch-Datei auf und gebe die Play-Liste mit. Dort kann ich bequem auswählen oder umschalten. Und: per Android-App kann ich das ganze auch vom Sofa aus steuern. Ist auf jeden Fall wesentlich einfacher, als mit Java so etwas neu zu erfinden - dazu will ich jetzt nichts mehr schreiben, siehe oben.


----------



## homer65 (4. Okt 2012)

Stimme meinem Vorredner zu. Per VLC ist sowas am einfachsten zu realisieren.
Ich habe soetwas ähnliches schon für Musik Streams programmiert.
Du kannst dir ja mal die myoggradio.org Webseite anschauen.
Der einzige Pferdefuss ist, das du die URL der Streams kennen mußt.
Kennst du die? <= Wichtig
Falls ja, könntest du die URL einfach auf der myoggradio.org Webseite eintragen und die Streams mit dem JMyOggRadioPlayer abspielen. Der tut nichts anderes als die URL an den VLC weiterzureichen.
Wenn du dich für die Programmierung interessierst, der JMyOggRadioPlayer ist Open Source, du kannst den Quellcode anschauen und auch unter den Bedingungen der GPL ändern.
Ein anderer positiver Effekt wäre, das du anderen Leuten auch ermöglichst die Sender zu schauen. Du würdest ein gutes Werk tun.


----------



## Dogano88 (4. Okt 2012)

troll hat gesagt.:


> dann auch : warum willst du einen browser in eine java app "einbinden" ? ein browser selbst ist nur ne graphische render-engine für HTML und dessen inhalt ... für n stream müssen wiederum andere dinge wie flash-player "eingebunden" werden ...



diese Frage fällt jetzt schon mehrmals. Ist das denn so wichtig wieso ich das will? Ich wills einfach programmieren, fertig. Die Frage war nicht ob ichs will oder nicht, sondern ob es möglich ist bzw. was die Umstände dazu sind/ob es sich lohnen würde für das Fernseh gucken sowas zu programmieren?! Ich dachte halt man bekommt den kompletten Browser in die Anwendung, wo eben auch schon Flash enthalten ist..



troll hat gesagt.:


> an sich erstmal die antwort : ja klar ist es möglich ... gegenfrage : wie viel aufwand willst du dir machen ?
> irgendwie an die direkten streams zu kommen ist in der regel möglich, wenn auch manchmal durch aus extrem kompliziert (z.b. wenn im player einiges eingebettet ist und nur sehr wenige infos vom backend als parameter preisgegeben werden) ... allerdings hilft dir da erstmal nicht viel wenn du dann mit den daten nichts anfangen kannst ...
> also brauchst du um die stream-daten dann auch wiederzugeben einen "player" ...
> das JMF kommt damit in der regel nicht klar ... also externe lib suchen und nutzen ...
> ...



Besonders viel Aufwand wollte ich mir nicht machen. Also es sollte jetzt keine Wochen dauern bis ich alles fertig habe. Es war nur eine Idee meinerseits. Die Frage und die Idee war, man könne den Browser mit all seinen Eigenschaften in der Anwendung darstellen. Und wenn das möglich wäre, würde es eleganter aussehen einfach. Weiterhin würde ich dann die Anwendung weitesgehend so programmieren, dass man nichts anderes machen kann an dem Rechner außer der Anwendung. Danke aber für den Hinweis und den Tipps! Ich werde mir gleich mal googlen..



troll hat gesagt.:


> erstmal find ichs ja schon wizig gleich nach 4h wieder zu pushen ... und das gleich bei so nem doch recht komplexen thema ...



Ehhmm.. wie erwähnt ich danke dir für deine Antwort und dass du dir Mühe gemacht hast mir zu helfen. Aber: Wenn es dich stört - oben rechts ist ein "x"-Button im Browser. Den kannst du dann benutzen. 



troll hat gesagt.:


> möglich ist das also ... und wenn man weis mit welchen libs man weiterkommt auch recht schnell zusammen gesteckt ... allerdings schreibe ich das aus sicht eines jahrelangen java-programmierers ... du klingst eher nach "amatuer" oder "anfänger" ... und für dich dürfte das dann doch ein ziemlicher aufwand werden ...
> bevor du jetzt also krampfhaft versuchst dieses projekt was scheinbar noch über deinen möglichkeiten liegt als "lern-projekt" umzusetzen und dabei vermutlich scheitern wirst nimm dir erstmal was kleineres vor um die nötigen grundlagen zu lernen die für sowas nötig sind ...
> in deinem fall ist es also wirklich sinnvoller : erstmal weiterhin browser nutzen ...



Nein, ich bin kein Amateur. Das war hier auch nicht die Frage. Ich habe auch nirgends behauptet dass ich ein Profi oder "jahrelanger Java-Programmierer" bin. Die Frage war schlicht und einfach: Geht das? Wenn ja, wieviel Aufwand würde es machen und würde sich das lohnen? Solche Kommentare wie "du bist ein Amateur/Anfänger" bringen nicht wirklich viel. Wieso muss das immer in jedem Forum zu jedem Thread gepostet werden? Ich könnte echt kotzen..




troll hat gesagt.:


> ps : ich versteh das problem an sich eigentlich nich ... das man keine schüssel anbauen darf kennt man ja ... aber dafür hat man dann in der regel kabel ... und da wird auch sehr vieles eingespeist ... man brauch nur n DVB-C fähigen fernseher und ne passende code-karte ... und das was man dann immer noch nicht bekommt guckt man halt am rechner bzw über ne multi-media box ...
> außerdem denke ich persönlich das java für das gewünschte nicht gerade die beste sprache der wahl ist ... obgleich es mit libs (die großteil eh native-code nutzen) möglich ist



wie gesagt, hab echt keine Lust mein Vorhaben zu rechtfertigen. Ich möchte sowas in der Art einfach programmieren und gut is. 




ssoul26 hat gesagt.:


> Eventuell hilft dir das hier weiter : http://www.genuitec.com/about/labs-webkit-for-swt/WebKit%20For%20SWT%20Developer%20Guide.html
> 
> Es gibt weiterhin viele türkische Sender die leider nicht über Kabel emfpangbar sind. Jedoch sehe ich keinen enormen Mehrwert darin, hierfür eine eigene Applikation in Java zu entwickeln.
> 
> Desweiteren gibt es hierzu schon eine Stand-Alone Lösung die sehr viele türkische Sender unabhängig von dem Browser öffnet und anzeigt. Hier hat man auch Zugriff auf alle relevanten Kontrollmechanismen (ist -fall ich mich richtig erinnere- in C# geschrieben).





gp hat gesagt.:


> Schön, das wir jetzt etwas mehr Informationen haben. Und manchmal kommen Antworten halt etwas später: wir haben ja noch anderes zu tun (ich auf jeden Fall und opfere jetzt ein paar Minuten der Mittagspause)
> 
> Ich habe ein ähnliches Problem: kein Satelittenempfang, etwas DVB-T und ansonstene DSL (wenn auch recht langsam).
> 
> ...



Hi und danke für eure tollen Tipps! Ich werde es mir gleich mal anschauen...




homer65 hat gesagt.:


> Stimme meinem Vorredner zu. Per VLC ist sowas am einfachsten zu realisieren.
> Ich habe soetwas ähnliches schon für Musik Streams programmiert.
> Du kannst dir ja mal die myoggradio.org Webseite anschauen.
> Der einzige Pferdefuss ist, das du die URL der Streams kennen mußt.
> ...



Hi! Die URL kenn ich. Ich werde das gleich mal anschließend mir anschauen. Danke dir!



homer65 hat gesagt.:


> Wenn du dich für die Programmierung interessierst, der JMyOggRadioPlayer ist Open Source, du kannst den Quellcode anschauen und auch unter den Bedingungen der GPL ändern.
> Ein anderer positiver Effekt wäre, das du anderen Leuten auch ermöglichst die Sender zu schauen. Du würdest ein gutes Werk tun.



Naja, für das programmieren interessiere ich mich schon. Ich muss halt aber nicht das Rad von neu entdecken.. Ich werde es mir auf jeden Fall anschauen. Danke aber vielmals


----------

