[Android Studio] WebView Landscape Skalierung passt nicht

  • Antworten:18
Jannick
  • Forum-Beiträge: 15

17.03.2017, 23:16:31 via Website

Hallo,
ich möchte den Stream einer IP Kamera wiedergeben. Das Format des Streams ist kein gängiges Videoformat und deswegen kann ich eine videoView nicht benutzten, stattdessen möchte ich die Seite (http:/ /192.168.178.50/videostream.cgi) über eine simple webView anzeigen.

Im Portrait Modus klappt das super, aber im Landscape (die App soll nur im Landscape laufen) ist der Content der webView zu groß und ich kann nach oben und unten scrollen (width ist ok aber height ist zu groß). Der Content der Seite soll maximal die Größe des Displays haben um ein Vollbild zu simulieren, wie auch immer, der User sollte am Ende die größt mögliche Auflösung der Website sehen ohne dass er scrollen muss.

Kann mir jemand einen Tipp geben?

— geändert am 17.03.2017, 23:18:09 durch Moderator

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

17.03.2017, 23:20:03 via App

Hallo JaudaLabs!
Herzlich Willkommen hier bei uns im Forum. :)
Ich habe deinen Threadtitel mal angepasst.
Bitte achte beim nächsten Thread auf einen aussagekräftigeren Titel.
Danke :)



Ich nehme an dass du die Webseite nicht anpassen kannst...
Die Webseite ist wohl nicht für mobil Optimiert...
Du könntest versuchen mit dem WebView Zoom spielen

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jannick
  • Forum-Beiträge: 15

17.03.2017, 23:26:26 via Website

Danke erstmal, ja genau, den html und css code der Seite kann ich leider nicht optimieren für Mobil (thinking)

Ich meine, ich könnte zwar mit dem Zoom spielen aber wenn ich dann mal von einer anderen Kamera den Stream hole und der hat eine andere Auflösung, dann könnte es wieder blöd aussehen. Gibt es denn keine Layout Einstellungen für so etwas?

Danke für die Antwort

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.959

18.03.2017, 00:37:55 via Website

Hallo Jannick,

herzlich willkommen hier im Forum (*)

oder du greifst per JavaScript und ggf. mit jQuery in die Elemete ein - damit lässt sich das bestimmt anpassen.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
Jannick
  • Forum-Beiträge: 15

18.03.2017, 09:51:44 via Website

Hallo Ludy und danke!
Wie könnte das denn z.B. aussehen?

LG

Antworten
swa00
  • Forum-Beiträge: 3.704

18.03.2017, 10:03:45 via Website

Hallo Jannick,

Wie könnte das denn z.B. aussehen?

Dazu kannst dir eine eigene abgeleitete Klasse von WebViewClient basteln und dort im Callback
onPageFinished dein angepasstes JavaScript (nach)laden

— geändert am 18.03.2017, 11:06:41

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Jannick
  • Forum-Beiträge: 15

18.03.2017, 11:15:26 via Website

Hey swa00,
wie könnte denn ein JavaScript aussehen das die Website für mobil anpasst?

Gibt es da Referenzen zu? Habe mit JavaScript noch nicht viel gearbeitet

LG

Antworten
swa00
  • Forum-Beiträge: 3.704

18.03.2017, 11:23:32 via Website

Hallo Jannick,

hier ein Beispiel, wie man ein JavaScript im WebViewClient anwenden kann.

String addCSSRule = "function addCSSRule(selector, newRule) {"
+ "ruleIndex = mySheet.cssRules.length;"
+ "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"
+ "}";
myWebView.loadUrl("javascript:" + addCSSRule);

Dein JavaScript musst du dir allerdings selbst erstellen, da nur du die Gegebenheiten kennst.
(z.b. Scrolling ausschalten, fitWIndow etc etc)

— geändert am 18.03.2017, 11:45:50

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Jannick
  • Forum-Beiträge: 15

18.03.2017, 13:22:53 via Website

Danke sehr, ich schaue mir das später genauer an. Eine weitere Frage habe ich noch. In der App soll ein simple string geladen werden, der aus einer externen config file kommt. Im grunde möchte ich also eine simple Konfigurationsdatei erstellen die man in einen bestimmten Pfad aus Gerät legt und die app lädt aus dieser Datei den angefragten String.

Was für Möglichkeiten habe ich denn da?

LG

Antworten
Jannick
  • Forum-Beiträge: 15

18.03.2017, 14:02:56 via Website

Genau das habe ich auch gefunden. Die Frage ist nur, wo soll ich meine Konfigurations.txt Datei anlegen und wie kann ich sie einlesen. In C# und einer anderen IDE habe ich das mit JSON geregelt.

Ich würde es gerne so haben, dass ich eine .txt Datei mit einem String in den Dokumente Ordner meines Tablets lege und dann findet die App diese .txt Datei über einen von mir in der App eingetragenen Pfad und liest die Zeile der .txt Datei aus. Mehr brauche ich nicht.

Kann ruhig simpel sein (smug)

Lg und besten Dank soweit!

Antworten
swa00
  • Forum-Beiträge: 3.704

18.03.2017, 14:12:29 via Website

SharedPrefernces ist das Simpelste.
(Vier Zeilen und alles ist schon erledigt)

Natürlich kannst du dir ein Directory unter deinem Package Ordner bauen und dort alle möglichen Fileoperationen durchführen und parsen ( wie auch in C# / C++)
Man kann es auch übertreiben und eine DB schreiben oder mit dem Assets arbeiten ...

Für ein paar Strings definitv zu aufwendig.

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Jannick
  • Forum-Beiträge: 15

18.03.2017, 20:30:40 via Website

Hallo und danke erstmal! Ich habe mich jetzt damit auseinander gesetzt. Die SharedPreferences sind im Grunde das was ich brauche, nur ist das "physische" File sehr schwer zu erreichen (bzw. ich hab es ohne Root nicht geschafft). Der Installlations Ordner meiner App scheint im Internal Storage zu sein, da kommt man ohne root nicht rein. Wäre die App im external storage installiert dann könnte ich das File erreichen und alles wäre wie ich es wollte :)

Habe im manifest android:installLocation="preferExternal" eingefügt aber ich kann den Package Ordner dennoch nicht finden. Ich möchte das Gerät an den PC anschließen, in den Package Ordner hüpfen und dann nur noch die prefs einstellen.

So close...

Besten dank

— geändert am 18.03.2017, 21:12:31

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.03.2017, 09:31:57 via App

Hallo Jannick,
das ist nicht so einfach..., in AS kannst du das glaub über DDMS o.ä. machen..
Für einen festen string in den du immer Anpassen musst und der nicht aus der App änderbar sein soll würde ich als .txt in die Assets packen und dann einfach aus den Assets lesen.
Ich nehme ja mal an dass du den JS string nur am PC anpasst und nicht am Gerät

— geändert am 19.03.2017, 09:32:05

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jannick
  • Forum-Beiträge: 15

19.03.2017, 09:42:08 via Website

Hallo Pascal, ja genauso ist das. Wenn ich in AS im Projekt einen Asset Ordner erstelle und dort eine .txt reinlegen, wie kann ich die .txt dann auf meinem PC finden wenn ich das Geräte anschließe? Also unter welche Pfad muss ich suchen?

Vielen Dank für die tollen Antworten!

Antworten
swa00
  • Forum-Beiträge: 3.704

19.03.2017, 10:52:46 via Website

Hallo Jannick,

du machst grundsätzlich Denkfehler.

a) DDMS ist grundsätzlich nicht dazu gedacht , den Inhalt mit dem PC direkt zu editieren sondern
du kannst sie maximal kopieren. Wir "Gurus" verwenden im übrigen den Emulator so gut wie gar nicht.

b) Willst du Assetdateien während der Laufzeit der App verändern , dann musst du diese Datei erst mal physisch
mit der App auslagern (assets->z.b. /Android/data/[PACKAGENAME]/files).

Es erschliesst sich mir immer noch nicht , warum du das Ganze machen möchtest.

Wenn du doch VOR dem Erstellen des Packages (APK) die Datei editieren magst, warum erstellst du sie denn nicht
auf dem PC, kopierst sie in den Asset-Folder und erstellst danach dein APK .

Es wäre sehr hilfreich , wenn du mal genau erklären könntest, was du eigentlich Schritt für Schritt vorhast.
Du siehst , dass wir alle ein wenig Probleme haben , dein Vorhaben nachzuvollziehen.

Wahrscheinlich dadurch bedingt , dass du Android und die Funktionsweise noch nicht so ganz inne hast.

— geändert am 19.03.2017, 11:21:55

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Jannick
  • Forum-Beiträge: 15

19.03.2017, 13:06:54 via Website

Hallo Stefan, dann gebe ich euch gerne die genaue Anwendungsweise.

Die app streamt von einem stream url. Der Nutzer der app soll nicht innerhalb der app den Stream url ändern können sonder nur von außerhalb der app über ein text file von dem der stream url dann im onCreate geladen wird.

So einfach sollte es sein. Anstatt den URL in einem plain Text zu ändern, soll man ihn einfach in einem text File ändern können.

Danke

— geändert am 19.03.2017, 13:07:12

Antworten
swa00
  • Forum-Beiträge: 3.704

19.03.2017, 13:13:55 via Website

ok, dann ganz einfach :

a) Platziere ein "Default" File mit AS in deine Assets, welches du vorher einfach editierts ( womit auch immer )
b) Wenn du die App erstmalig startest, dann lagerst du diese Datei physisch aus
(z.b. /Android/data/[PACKAGENAME]/files)
c) auf diesen Pfad/Datei kann er jederzeit mit einem gewöhnlichen Dateimanager zugreiffen und den Inhalt der Datei verändern.

Und trotzdem frage ich mich , warum du es so kompliziert machst und dem User nicht innerhalb deiner App die Möglichkeit lässt, die URL dort direkt zu editieren .
Dann könntest du dir das gesamte Geraffel mit der Asset-Auslagerung ersparen ....

— geändert am 19.03.2017, 13:18:41

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Jannick
  • Forum-Beiträge: 15

19.03.2017, 14:13:45 via Website

Vielen Dank für die super Antwort!
Wenn es nach mir gehen würde, dann würde ich es auch in der App editieren nur geht es in dem Fall nicht nach mir :D

Ich schaue jetzt wie ich ein eine Datei "physisch auslagere" um dann sollte das ganze auch endlich geklärt sein.

Komme eigentlich aus dem c# game development. Deswegen ist die Android Entwicklung recht neu für mich.

Danke

Antworten