<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Beiträge von Olivia Wais - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/dm171561/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/dm171561/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Sat, 19 Jan 2019 15:58:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mobile.fhstp.ac.at/wp-content/uploads/2025/03/icon-120x120.webp</url>
	<title>Beiträge von Olivia Wais - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/dm171561/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Eine kleine Einführung: ML Kit von Firebase</title>
		<link>https://mobile.fhstp.ac.at/development/eine-kleine-einfuehrung-ml-kit-von-firebase/</link>
		
		<dc:creator><![CDATA[Olivia Wais]]></dc:creator>
		<pubDate>Sat, 19 Jan 2019 15:58:28 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Native Development]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8108</guid>

					<description><![CDATA[<p>Maschinelles Lernen für mobile Entwickler Mit ML Kit kann man leistungsstarke Machine-Learning-Funktionen für Applikationen bereitstellen. Es ist egal ob für Android oder iOS und ob man ein erfahrener Machine-Learning-Entwickler ist oder gerade erst anfängt. Es ist für alle gedacht. ML Kit wird mit einer Reihe von gebrauchsfertigen APIs für häufige mobile Anwendungsfälle geliefert: Erkennen von <a class="read-more" href="https://mobile.fhstp.ac.at/development/eine-kleine-einfuehrung-ml-kit-von-firebase/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/eine-kleine-einfuehrung-ml-kit-von-firebase/">Eine kleine Einführung: ML Kit von Firebase</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Maschinelles Lernen für mobile Entwickler</h3>
<p>Mit ML Kit kann man leistungsstarke Machine-Learning-Funktionen für Applikationen bereitstellen. Es ist egal ob für Android oder iOS und ob man ein erfahrener Machine-Learning-Entwickler ist oder gerade erst anfängt. Es ist für alle gedacht.</p>
<p>ML Kit wird mit einer Reihe von gebrauchsfertigen APIs für häufige mobile Anwendungsfälle geliefert: Erkennen von Text, Erkennen von Gesichtern, Erkennen von Landmarken, Scannen von Barcodes und Beschriften von Bildern. Man muss einfach Daten in die ML Kit-Bibliothek übergeben und man erhält die Informationen, die man benötigt.</p>
<p>Die Auswahl der APIs von ML Kit wird auf dem Gerät oder in der Cloud ausgeführt. Die On-Device-APIs können die Daten schnell verarbeiten und sind auch ohne Netzwerkverbindung funktionsfähig. Auf der anderen Seite nutzen die Cloud-basierten APIs die Möglichkeiten der Machine-Learning-Technologie von Google Cloud Platform, um eine noch höhere Genauigkeit zu bieten.</p>
<p>Wenn die APIs von ML Kit die Anwendungsfälle nicht abdecken, kann man immer die eigenen TensorFlow-Lite-Modelle verwenden. Man muss einfach das Modell in Firebase hochladen, und Google kümmert sich um das Hosting und die Bereitstellung für die App. Das ML-Kit fungiert als API-Ebene für das benutzerdefinierte   Modell und vereinfacht die Ausführung und Verwendung.</p>
<h2>Wie funktioniert es?</h2>
<p>Mit ML Kit kann man ML-Techniken in Apps problemlos anwenden, indem man die ML-Technologien von Google wie das Google Cloud Vision-API, TensorFlow Lite und das Android Neural Networks-API in einem einzigen SDK zusammenfasst. Egal, ob man die Leistung von Cloud-basierter Verarbeitung, die Echtzeitfunktionen mobiler optimierter Gerätemodelle oder die Flexibilität der benutzerdefinierten TensorFlow Lite-Modelle benötigt, ML Kit macht dies mit nur wenigen Zeilen Code möglich.</p>
<h2>Implementierungspfad</h2>
<ol>
<li><strong>Integrieren des SDK:</strong> Füge das SDK schnell ein, indem du Gradle oder CocoaPods verwendest.</li>
<li><strong>Eingabedaten vorbereiten:</strong> Wenn man beispielsweise eine Vision-Funktion verwendet, nimm ein Bild von der Kamera auf und generiere die erforderlichen Metadaten (z. B. Bilddrehung) oder fordere den Benutzer auf, ein Foto aus seiner Galerie auszuwählen.</li>
<li><strong>Anwenden des ML-Modells auf Ihre Daten:</strong> Durch die Anwendung des ML-Modells auf die Daten generiert man abhängig von der verwendeten Funktion Erkenntnisse wie den emotionalen Zustand der erkannten Gesichter oder die Objekte und Konzepte, die im Bild erkannt wurden. Nutze diese Erkenntnisse, um Funktionen in der App zu verwenden, z. B. Foto-Verschönerung, automatische Metadaten-Generierung oder was auch immer man sich vorstellen kann.</li>
</ol>
<h4>Man kann zwischen On-Device- und Cloud-APIs wählen:</h4>
<table style="height: 384px;" width="698">
<tbody>
<tr>
<td width="201"></td>
<td width="201">On-Device</td>
<td width="201">Cloud</td>
</tr>
<tr>
<td width="201">Preis</td>
<td width="201">Kostenlos</td>
<td width="201">Kostenlos für die ersten 1000</p>
<p>Verwendungen dieser Funktion pro Monat: <a href="https://firebase.google.com/pricing/">https://firebase.google.com/pricing/</a></td>
</tr>
<tr>
<td width="201">Ideale Anwendungsfälle</td>
<td width="201">Echtzeitverarbeitung &#8211; ideal für eine Kamera oder einen Videofeed</p>
<p>Erkennen von spärlichem Text in Bildern</td>
<td width="201">Texterkennung mit hoher Genauigkeit</p>
<p>Erkennen von spärlichem Text in Bildern</p>
<p>Erkennen von dichtem Text in Dokumenten</p>
<p>Siehe die Cloud Vision API-Demo</td>
</tr>
<tr>
<td width="201">Sprachunterstützung</td>
<td width="201">Erkennt lateinische Zeichen</td>
<td width="201">Erkennt ein breites Spektrum an Sprachen und Sonderzeichen</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Texterkennung</h2>
<p>Mit den Texterkennungs-APIs von ML Kit kann man Text in jeder lateinischen Sprache (und mehr, in der Cloud-basierten Texterkennung) erkennen.</p>
<p>Die Texterkennung kann die mühsame Dateneingabe für Kreditkarten, Quittungen und Visitenkarten automatisieren. Mit der Cloud-basierten API kann man auch Text aus Dokumenten extrahieren, mit denen man die Barrierefreiheit verbessern oder Dokumente übersetzen kann. Apps können sogar reale Objekte verfolgen, beispielsweise durch Lesen der Zahlen in Zügen.</p>
<p>Mittels eines Tutorials (<a href="https://www.youtube.com/watch?v=lILIg0XeJoY">https://www.youtube.com/watch?v=lILIg0XeJoY</a>) habe ich eine Texterkennungsapplikation nachgebaut und es sind mir ein paar wichtige Punkte aufgefallen:</p>
<ul>
<li>Es ist sehr wichtig, dass alle Versionen im Gradle (vor allem von Firebase selbst) auf den aktuellen Stand sind. Hier kann man die aktuellen Versionen vergleichen: <a href="https://firebase.google.com/support/release-notes/android">https://firebase.google.com/support/release-notes/android</a></li>
<li>Man muss sich nur mit Firebase verbinden.
<ul>
<li>Das kann man in Android Studios einfach machen, indem man auf Firebase in der oberen Leiste drückt. Dann drückt man auf eines der Unterpunkte wie z.B. Authentication und drückt auf „Connect to Firebase“.</li>
</ul>
</li>
<li>Um die Cloud Versionen der Produkte zu verwenden, muss man sich bei Google Cloud Platform registrieren (<a href="https://console.cloud.google.com/">https://console.cloud.google.com/</a>). Es kostet eigentlich nichts und man bekommt 300 US-Dollar für das erste Jahr geschenkt, jedoch muss man seine Kreditkartennummer angeben. Man kann natürlich jederzeit das Konto kündigen.</li>
</ul>
<p>Die Applikation war recht einfach zu implementieren, jedoch könnte es mit der Funktion von Erkennung von Text noch Verbesserungen geben. Folgend findet ihr gute Bespiele, wo die Applikation keine Probleme mit dem Erkennen von Text hatte.</p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/Screenshot_20190117-201529.jpg"><img fetchpriority="high" decoding="async" class="wp-image-8112 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/Screenshot_20190117-201529.jpg" alt="" width="400" height="711" /></a></p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/Screenshot_20190117-202118.jpg"><img decoding="async" class="wp-image-8110 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/Screenshot_20190117-202118.jpg" alt="" width="400" height="711" /></a></p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/Screenshot_20190117-202021.jpg"><img decoding="async" class="wp-image-8111 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/Screenshot_20190117-202021.jpg" alt="" width="400" height="711" /></a></p>
<p>&nbsp;</p>
<p>Hier findet ihr meine Mini-App zum Downloaden:</p>
<p><a href="http://dm171561.students.fhstp.ac.at/OCR/app-debug.apk">http://dm171561.students.fhstp.ac.at/OCR/app-debug.apk</a></p>
<p>Quellen:</p>
<ul>
<li><a href="https://firebase.google.com/products/ml-kit/">https://firebase.google.com/products/ml-kit/</a></li>
<li><a href="https://www.youtube.com/watch?v=lILIg0XeJoY">https://www.youtube.com/watch?v=lILIg0XeJoY</a></li>
<li><a href="https://firebase.google.com/docs/ml-kit/recognize-text">https://firebase.google.com/docs/ml-kit/recognize-text</a></li>
</ul>
<p>The post <a href="https://mobile.fhstp.ac.at/development/eine-kleine-einfuehrung-ml-kit-von-firebase/">Eine kleine Einführung: ML Kit von Firebase</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Fitbit Ionic App Tutorial</title>
		<link>https://mobile.fhstp.ac.at/development/fitbit-ionic-app-tutorial/</link>
		
		<dc:creator><![CDATA[Olivia Wais]]></dc:creator>
		<pubDate>Thu, 13 Dec 2018 20:31:00 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Projekte]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8060</guid>

					<description><![CDATA[<p>Gleich vorweg, falls ihr euch fragt was die Fitbit Ionic Uhr mit dem Ionic Framework zu tun hat – gar nichts. Die Uhr heißt so. Ich habe mir die Uhr zirka vor einem Jahr gekauft und bin beim Kaufen der Uhr draufgekommen, dass sie mehr als nur ein Fitness Tracker mit diversen Smartwatch-Funktionen ist. Denn <a class="read-more" href="https://mobile.fhstp.ac.at/development/fitbit-ionic-app-tutorial/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/fitbit-ionic-app-tutorial/">Fitbit Ionic App Tutorial</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Gleich vorweg, falls ihr euch fragt was die Fitbit Ionic Uhr mit dem Ionic Framework zu tun hat – gar nichts. Die Uhr heißt so. Ich habe mir die Uhr zirka vor einem Jahr gekauft und bin beim Kaufen der Uhr draufgekommen, dass sie mehr als nur ein Fitness Tracker mit diversen Smartwatch-Funktionen ist. Denn man kann auch kleine Applikationen für die Uhr programmieren. Vor ein paar Monaten dachte ich, es ist endlich soweit eine Mini Applikation zu erstellen. In dem folgenden Teil werde ich die einzelnen Schritte beschreiben, wie man zu einer solcher App kommt.</p>
<h2>Was ist Fitbit Ionic?</h2>
<p>Die Fitbit Ionic Uhr ist ein Fitness Tracker bzw. Smartwatch, der Schritte, die Kilometer, etc. mitzählt, die man z.B. gegangen ist. Zusätzlich bietet sie andere Funktionen wie einen Wecker, Übungen, die auf der Uhr dargestellt werden sowie auch eine sogenannte „Fitbit Gallery“ wo man sich Applikationen herunterladen kann – aber über das Smartphone. Da die Uhr selbst über GPS verfügt, kann man sogar ohne Handy laufen gehen und man bekommt trotzdem die Laufroute gespeichert.</p>
<h2>Wie kommt man zu einem Projekt?</h2>
<p>Um überhaupt ein Projekt anzulegen, braucht man natürlich einen <strong>Fitbit User Account</strong>. Möglicherweise hat man diesen schon, wenn man eine Fitbit Uhr besitzt, da man sich mit denselben Daten in der App anmelden muss. Des Weiteren benötigt man entweder eine <strong>Fitbit Uhr mit dem Fitbit Betriebssystem</strong> (entweder Fitbit Versa oder Fitbit Ionic) oder den <strong>Fitbit Simulator</strong>, den man Gratis im Internet herunterladen kann. Zusätzlich braucht man auch die <strong>Fitbit Applikation</strong> für das Smartphone, welche mit der Uhr in Kommunikation steht. Dann muss man Zugriff auf <strong>Fitbit Studios</strong> haben – also einen Computer mit Internetzugriff. Die Fitbit Uhr sollte auch Zugriff auf WLAN besitzen.</p>
<p>Bevor man loslegt, sollte man sich die Dokumentation (<a href="https://dev.fitbit.com/build/guides/">https://dev.fitbit.com/build/guides/</a>) näher anschauen. Hier werden nämlich folgende Punkte besprochen:</p>
<ul>
<li><strong>App Architecture</strong>: Hier wird besprochen, wie die Ordnerstruktur aussieht, sowie welche Größe die Applikation maximal haben darf (bis 15MB).
<ul>
<li><a href="https://dev.fitbit.com/build/guides/application/">https://dev.fitbit.com/build/guides/application/</a></li>
</ul>
</li>
<li><strong>Clock Faces: </strong>Da man auch ein anpassbares Uhrenblatt erstellen kann und nicht nur Applikationen, gibt es hier eine Hilfe wie man zum richtigen Ergebnis kommt.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/clockfaces/">https://dev.fitbit.com/build/guides/clockfaces/</a></li>
</ul>
</li>
<li><strong>Command Line Interface: </strong>Man kann seit August 2018 auch mit der CLI Fitbit Projekte erstellen. Somit ist es auch leichter die Projekte auch via z.B. GitHub zu teilen. Einer der weiteren Vorteile ist auch, dass man seine Lieblings-IDE verwenden kann.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/command-line-interface/">https://dev.fitbit.com/build/guides/command-line-interface/</a></li>
<li>Tutorial dazu:  <a href="https://youtu.be/WkCKycDUgmU">https://youtu.be/WkCKycDUgmU</a></li>
</ul>
</li>
</ul>
<ul>
<li><strong>Communications</strong>: Hier werden APIs besprochen, die in die Applikationen eingebaut werden können, wie z.B. die Messanging API oder die File Transfer API.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/communications/">https://dev.fitbit.com/build/guides/communications/</a></li>
</ul>
</li>
<li><strong>Companion: </strong>Fitbit Applikationen können mittels der JavaScript Runtime Environment erweitert werden. Diese werden hier besprochen.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/companion/">https://dev.fitbit.com/build/guides/companion/</a></li>
</ul>
</li>
<li><strong>Design Guidelines: </strong>Damit die Applikation und Uhrblätter auch in die Fitbit Gallery („Fitbit Store“) geladen werden können, sollte diese Guidelines verwendet werden. Hier werden die visuellen Styles und UI bereitgestellt.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/design-guidelines/">https://dev.fitbit.com/build/guides/design-guidelines/</a></li>
</ul>
</li>
<li><strong>File System: </strong>Hier wird die File System API genauer beschrieben, welche verwendet wird, um diverse Dokumente auf dem Fitbit-Gerät auszulesen bzw. zu schreiben.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/file-system/">https://dev.fitbit.com/build/guides/file-system/</a></li>
</ul>
</li>
<li><strong>Geolocation:</strong> Hier wird die GPS API genauer definiert.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/geolocation/">https://dev.fitbit.com/build/guides/geolocation/</a></li>
</ul>
</li>
<li><strong>Glossary: </strong>Auf dieser Seiter werden die wichtigsten Begriffe aufgelistet und erklärt, die auf der Seite verwendet werden.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/glossary/">https://dev.fitbit.com/build/guides/glossary/</a></li>
</ul>
</li>
<li><strong>Multiple Devices: </strong>Hier werden die Unterschiede zwischen den beiden Uhren – Fitbit Ionic und Fitbit Versa – beschrieben. Zusätzlich wird definiert wie man für beide Uhren gleichzeitig eine App coden kann.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/multiple-devices/">https://dev.fitbit.com/build/guides/multiple-devices/</a></li>
</ul>
</li>
<li><strong>Permissions:</strong> Ein wichtiger Punkt sind auch die Permissions welche unter dem folgenden Link beschrieben werden (z.B. Internet, Run in Background, etc.).
<ul>
<li><a href="https://dev.fitbit.com/build/guides/permissions/">https://dev.fitbit.com/build/guides/permissions/</a></li>
</ul>
</li>
<li><strong>Sensors: </strong>Hier werden der Accelerometer, Pulsmesser, Barometer, Position und der Gyroskope genauer beschrieben.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/sensors/">https://dev.fitbit.com/build/guides/sensors/</a></li>
</ul>
</li>
<li><strong>Settings: </strong>Es gibt für die User die Möglichkeit die Applikation selbst zu konfigurieren, welche man mittels der Settings API einbauen kann (z.B. Farben von Hintergrund anpassen, etc.).
<ul>
<li><a href="https://dev.fitbit.com/build/guides/settings/">https://dev.fitbit.com/build/guides/settings/</a></li>
</ul>
</li>
<li><strong>User Interface:</strong> Hier wird besprochen wie man das User Interface erstellt, und zwar mit SVG, CSS und JavaScript.
<ul>
<li><a href="https://dev.fitbit.com/build/guides/user-interface/">https://dev.fitbit.com/build/guides/user-interface/</a></li>
</ul>
</li>
</ul>
<p>Um ein Projekt zu erstellen, geht man auf die <a href="https://studio.fitbit.com">https://studio.fitbit.com</a> Seite, meldet sich an und drückt auf den „New Project“-Button (Abb.1).</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-8063 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb1_fitbit.png" alt="" width="1143" height="266" /></p>
<p style="text-align: center;">Abbildung 1: Project List</p>
<p>&nbsp;</p>
<p>Dann scheint ein neues Fenster auf, wo man sein Projekt benennen muss sowie ein Template auswählen muss. Ich habe das Sensoren Template ausgewählt (Abb. 2).</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-8064 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb2_fitbit.png" alt="" width="1137" height="531" /></p>
<p style="text-align: center;">Abbildung 2: Anlegen eines neuen Projekts</p>
<p>&nbsp;</p>
<p>Danach kommt man in die IDE von Fitbit Studios, wo man dann endlich loslegen kann (Abb. 3).</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-8065 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb3_fitbit.png" alt="" width="1192" height="560" /></p>
<p style="text-align: center;">Abbildung 3: IDE Fitbit Studios</p>
<p>&nbsp;</p>
<p>Dann ist es sehr wichtig, dass man die Uhr und das Smartphone bzw. den Simulator mit der Fitbit Studios verknüpft. Hier drückt man auf den „Select a phone and Select a device”-Button um die Geräte auszuwählen (Abb. 4).</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-8066 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb4_fitbit.png" alt="" width="1086" height="512" /></p>
<p style="text-align: center;">Abbildung 4: Hinzufügen eines Fitbit Gerätes und Smartphones bzw. eines Simulators</p>
<p>&nbsp;</p>
<p>Wenn man den Simulator eingeschalten hat, sollte das Fitbit Studios sofort erkennen (Abb. 5). Wenn man das echte Smartphone und Fitbit Gerät benutzt, muss man zuerst in der Smartphone App in das Entwickler Menü wandern und die Entwickler-Bridge einschalten. Darauf muss man auch in den Einstellungen in der Uhr wandern und die Developer Bridge einschalten und warten bis sie sich mit dem Server verbunden hat. Darauf kann man dann die „realen“ Geräte in dem Dropdown Menu finden. Für dieses Beispiel werde ich den Simulator verwenden, da er sehr viel Zeit spart und man muss die Uhr nicht dabeihaben.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-8067 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb5_fitbit.png" alt="" width="1073" height="508" /></p>
<p style="text-align: center;">Abbildung 5: Hinzufügen des Simulators</p>
<p>&nbsp;</p>
<p>Somit ist die Online IDE aufgebaut!</p>
<h2>Wie ist das Projekt aufgebaut?</h2>
<p>In diesem Beispiel findet man derzeit 2 Ordner: „app“ und „resources“. Man kann aber die Ordner Struktur wie gefolgt erweitern.</p>
<h3>Application (/app/)</h3>
<p>Dieser Ordner enthält die Anwendungslogik, die auf dem Gerät ausgeführt wird. Der Code in diesem Ordner hat Zugriff auf die Geräte-API und kann direkt mit der Präsentationsebene interagieren, mit dem Companion kommunizieren oder Lese- und Schreibeinstellungen vornehmen.</p>
<p>Eine index.js- oder index.ts-Datei (man kann TypeScript und JavaScript verwenden!!!) muss in diesem Ordner vorhanden sein und darf nicht leer sein. Andernfalls schlägt der Build-Vorgang einen Error auf.</p>
<h3>Companion (/companion/)</h3>
<p>Dieser Ordner enthält die Companion-Logik, die auf dem mobilen Gerät (Smartphone) ausgeführt wird. Der in diesem Ordner enthaltene Code hat Zugriff auf die Companion-API und kann direkte Anfragen an das Internet stellen und mit der Anwendung kommunizieren.</p>
<p>Wenn in diesem Ordner eine Datei index.js oder index.ts vorhanden ist, wird der Companion erstellt.</p>
<h3>Shared Code (/common/)</h3>
<p>Dateien in diesem Ordner können von der Anwendung und dem Companion gemeinsam genutzt werden.</p>
<h3>Resources (/resources/)</h3>
<p>Dieser Ordner enthält alle Ressourcen, die während des Erstellungsprozesses in der Anwendung enthalten sind.</p>
<h3>/resources/index.gui</h3>
<p>Dies ist die Fitbit-SVG-Datei, in der das Markup der Anwendungsbenutzeroberfläche definiert ist. Dies ist eine verpflichtende Datei.</p>
<h3>/resources/widgets.gui</h3>
<p>Die Fitbit-SVG-Datei steuert, welche System-Widgets in der Datei index.gui verwendet werden können. Diese Datei muss in diesem Ordner sein.</p>
<h3>/resources/*.css</h3>
<p>Fitbit-CSS-Dateien können in die Anwendung eingefügt werden, indem in der Datei index.gui ein &lt;link&gt; erstellt wird.</p>
<h3>/resources/*.png and /resources/*.jpg</h3>
<p>Alle Bilddateien, die im Ressourcenordner enthalten sind, können in der Präsentationsschicht verwendet werden, indem auf sie innerhalb eines &lt;image&gt; -Elements in der index.gui verwiesen wird.</p>
<h3>Settings (/settings/)</h3>
<p>Dieser Ordner enthält die Deklaration für Anwendungseinstellungen, die mit React JSX erstellt wurde. Dies kann verwendet werden, um eine App für den Benutzer konfigurierbar zu machen. Code in dieser Datei hat Zugriff auf die Einstellungs-API.</p>
<h3>Projekt Konfiguration (package.json)</h3>
<p>In dieser Datei kann man folgende Einstellungen verändern (Abb. 6):</p>
<ul>
<li>Display Namen</li>
<li>Den Typ der App (App oder Ziffernblatt)</li>
<li>„Wipe Color“ – die Wisch Farbe: Die Farbe ist die Akzentfarbe der Applikation</li>
<li>Build Targets (Fitbit Versa und/oder Fitbit Ionic)</li>
<li>SDK Version</li>
<li>Permissions</li>
<li>Sprache</li>
</ul>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-8068 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb6_fitbit.png" alt="" width="917" height="434" /></p>
<p style="text-align: center;">Abbildung 6: Darstellung der package.json Datei</p>
<p>&nbsp;</p>
<p>In der oberen Leiste findet man folgende Elemente (Abb. 7):</p>
<ul>
<li><strong>Build:</strong> um die Applikation zu erstellen/“builden“</li>
<li><strong>Download</strong>: um die Applikation herunterzuladen, um sie dann z.B. in die Fitbit Gallery zu laden</li>
<li><strong>Devices</strong>: um einen Simulator bzw. „echte“ Geräte hinzuzufügen, um die App anzuschauen</li>
<li><strong>Run</strong>: um die App live auf dem Gerät bzw. im Simulator zu sehen</li>
<li><strong>Screenshot</strong>: um einen Screenshot von der laufenden Applikation zu machen</li>
</ul>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-8069 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb7_fitbit.png" alt="" width="1385" height="42" /></p>
<p style="text-align: center;">Abbildung 7: Menüleiste von Fitbit Studios</p>
<p>&nbsp;</p>
<h2>Beispiel</h2>
<p>Da wir in den vorherigen Schritten das Sensoren Template ausgewählt haben, können wir anhand dieses Beispiels die einzelnen Elemente durchgehen.</p>
<p>In der index.js Datei befindet sich die Logik der Applikation. Z.B. importiert man den Accelerometer:</p>
<pre>import { Accelerometer } from "accelerometer";
const accel = new Accelerometer();
accel.start();</pre>
<p>Dann greift man auf ein Lable, welches man in index.gui erstellt hat.</p>
<pre>const accelData = document.getElementById("accel-data");</pre>
<p>Des Weiteren greift man auf die einzelnen Achsen zu:</p>
<pre>accel: {
      x: accel.x ? accel.x.toFixed(1) : 0,
      y: accel.y ? accel.y.toFixed(1) : 0,
      z: accel.z ? accel.z.toFixed(1) : 0
    }</pre>
<p>Um die Einzelnen Werte darzustellen, fügt man diese auf den Label hinzu.</p>
<pre>accelData.text = JSON.stringify(data.accel);</pre>
<p>Darauf kann man auf den „Run“-Button klicken und die Applikation läuft hier am Simulator (Abb. 8).</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-8070 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb8_fitbit.png" alt="" width="1002" height="626" /></p>
<p style="text-align: center;">Abbildung 8: Simulator mit laufender App</p>
<p>&nbsp;</p>
<h2>In die Fitbit Gallery laden</h2>
<p>Wenn man die Applikation in die Fitbit Gallery laden möchte, muss man in Fitbit Studio die Applikation herunterladen via des „Publish“-Buttons (Abb. 9). Es wird dadurch eine .fba Datei heruntergeladen.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-8071 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb9_fitbit.png" alt="" width="1385" height="178" /></p>
<p style="text-align: center;">Abbildung 9: Fitbit Studios mit „Publish-Button“</p>
<p>&nbsp;</p>
<p>Dann öffnet man die Gallery App Manager Seite (<a href="https://gam.fitbit.com/apps">https://gam.fitbit.com/apps</a>). Dort meldet man sich wieder mit den Fitbit Developer Daten an. Hier kann man eine neue App erstellen indem man auf den „Create App“-Butten klickt (Abb. 10).</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-8072 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb10_fitbit.png" alt="" width="1369" height="295" /></p>
<p style="text-align: center;">Abbildung 10: Gallery App Manager von Fitbit</p>
<p>&nbsp;</p>
<p>Danach muss man das folgende Dialogfenster ausfüllen (Abb. 11). Der Name sollte den gleichen Namen haben wie man ihn in Fitbit Studios definiert hat. Weiters muss man auswählen, welchen Typ von Projekt es ist – entweder ein Ziffernblatt oder eine Applikation.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-8073 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb11_fitbit.png" alt="" width="529" height="288" /></p>
<p style="text-align: center;">Abbildung 11: „Create App“ Dialogfeld im Fitbit Gallery App Manager</p>
<p>&nbsp;</p>
<p>Weiters kommt die Übersichtsseite der neuen Applikation (Abb. 12). Hier muss man dann die Kategorie sowie auch ein Icon hinzufügen. Des Weiteren sollte man entweder eine Email oder eine URL angeben, sodass man kontaktiert werden kann. Dann kann man auch weitere Sprachen einfügen und dazu eine Überschrift und eine Beschreibung hinzufügen. Screenshots der App sollte auch hochgeladen werden. Zu guter Letzt lädt man die aktuelle Version der Applikation hoch und notiert die Versionsnummer dazu. Dann kann man die Applikation hochladen. Darauf kann man den Link (ganz oben) mit anderen Fitbit Usern privat teilen.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-8074 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb12_fitbit.png" alt="" width="1385" height="671" /></p>
<p style="text-align: center;">Abbildung 12: Übersichtsseite einer App im Fitbit Gallery App Manager</p>
<p>&nbsp;</p>
<p>Wenn man alle Felder ausgefüllt hat, kann man auf den „Submit for Review“-Button drücken (Abb. 13). Die Applikation wird von Fitbit überprüft, um sie danach auf „Public“ für alle Fitbit User freizuschalten.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-8075 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/12/abb13_fitbit.png" alt="" width="328" height="145" /></p>
<p style="text-align: center;">Abbildung 13: Submit for Review</p>
<p>&nbsp;</p>
<h1>Fazit</h1>
<p>Ich fand es persönlich recht einfach mich in die neue IDE einzuarbeiten. Ich habe die Beispiele von Fitbit gleich ausprobiert (<a href="https://dev.fitbit.com/build/tutorials/examples/">https://dev.fitbit.com/build/tutorials/examples/</a>). Wobei ich mich nicht mit den Sensoren in meiner TicTacToe App auseinandergesetzt habe, habe ich es mit diesen Beispielen überbrückt. Seit neuesten gibt es den Simulator, was den Prozess sehr vereinfacht hat. Ich warte derzeit auf eine Antwort von Fitbit die meine Applikation frei gibt.</p>
<p>Bezüglich der Freischaltung in die Fitbit App Gallery ist eine andere Sache. Ich habe meine fertige Applikation mit dem „Submit for Review“ Button hochgeladen, jedoch bei der ersten Antwort ist zurückgekommen, dass der Name in der App nicht mit dem App Gallery Namen nicht übereinstimmt. Das war der einzige Fehler, den sie mir mitgeteilt haben. Deshalb habe ich die App ein zweites Mal hochgeladen. Dann kam die Meldung, dass das Icon in der App fehlt. Das habe ich dann auch hinzugefügt. Also man merkt, dass sich die Reviewer nicht die komplette App anschauen, sondern einen Fehler finden, aufhören zu reviewen und gleich das Feedback zu dem einen Mangel schreiben. Ich warte derzeit auf mein finales Review.</p>
<p><strong>Quellen:</strong></p>
<ul>
<li><a href="https://www.fitbit.com/at/ionic">https://www.fitbit.com/at/ionic</a></li>
<li><a href="https://dev.fitbit.com/build/guides/">https://dev.fitbit.com/build/guides/</a></li>
<li><a href="https://studio.fitbit.com/">https://studio.fitbit.com/</a></li>
</ul>
<p>&nbsp;</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/fitbit-ionic-app-tutorial/">Fitbit Ionic App Tutorial</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Adobe PhoneGap</title>
		<link>https://mobile.fhstp.ac.at/development/adobe-phonegap/</link>
		
		<dc:creator><![CDATA[Olivia Wais]]></dc:creator>
		<pubDate>Sun, 24 Jun 2018 15:32:58 +0000</pubDate>
				<category><![CDATA[Cross Plattform]]></category>
		<category><![CDATA[Development]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=7836</guid>

					<description><![CDATA[<p>Mit dem technologischen Fortschritt ist die Nachfrage nach mobilen Apps sehr hoch, was die Softwareindustrie dazu veranlasst, die digitale Erfahrung zu verbessern. Im folgenden Blogbeitrag möchte ich meine Erfahrungen mit Adobe PhoneGap teilen. Was ist PhoneGap? PhoneGap ist ein Open-Source-Framework, mit dem man native mobile Apps mit verschiedenen Web-Entwicklungssprachen wie HTML, CSS und JavaScript erstellen <a class="read-more" href="https://mobile.fhstp.ac.at/development/adobe-phonegap/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/adobe-phonegap/">Adobe PhoneGap</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Mit dem technologischen Fortschritt ist die Nachfrage nach mobilen Apps sehr hoch, was die Softwareindustrie dazu veranlasst, die digitale Erfahrung zu verbessern. Im folgenden Blogbeitrag möchte ich meine Erfahrungen mit Adobe PhoneGap teilen.</p>
<h1>Was ist PhoneGap?</h1>
<p>PhoneGap ist ein Open-Source-Framework, mit dem man native mobile Apps mit verschiedenen Web-Entwicklungssprachen wie HTML, CSS und JavaScript erstellen kann. Man ist hier nicht auf plattformspezifische APIs wie in iOS, Android oder Windows gebunden. Die Entwicklung mobiler Apps für jedes Betriebssystem erfordert ein optimales Wissen über verschiedene Frameworks und Sprachen. PhoneGap löst dieses Problem mithilfe von standardbasierten Webtechnologien.</p>
<h1>Wie funktioniert es?</h1>
<p>Die Benutzeroberfläche für PhoneGap-Anwendungen wird mit den grundlegenden Webentwicklungssprachen entwickelt, sodass der Browser 100% der Breite und Höhe des Geräts einnimmt. Im Grunde wird eine API angeboten, welche ermöglicht mit JavaScript auf native Betriebssystemfunktionen zuzugreifen. Das heißt, du erstellst eine Anwendungslogik mithilfe von JavaScript, und die PhoneGap-API übernimmt die Kommunikation mit dem systemeigenen Betriebssystem.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-7839 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_1_bild.png" alt="" width="452" height="182" /></p>
<p>Abbildung 1: Prozess von PhoneGap (https://valuebound.com, 2017)</p>
<h1>Schritt 1: PhoneGap Installieren</h1>
<p>Die PhoneGap Desktop-Anwendung bietet eine Drag-and-Drop-Schnittstelle zum Erstellen von PhoneGap-Anwendungen. Es ist eine Alternative zur Verwendung des PhoneGap CLI für diejenigen, die eine visuelle Benutzeroberfläche über eine Befehlszeilenschnittstelle bevorzugen.</p>
<h2>Mit der Desktop App</h2>
<ol>
<li>Lade den neusten Windows Installer bzw Mac OS X Installer herunter:
<ol>
<li>Windows: <a href="https://github.com/phonegap/phonegap-app-desktop/releases/download/0.4.5/PhoneGapSetup-win32.exe">https://github.com/phonegap/phonegap-app-desktop/releases/download/0.4.5/PhoneGapSetup-win32.exe</a></li>
<li>Mac: <a href="https://github.com/phonegap/phonegap-app-desktop/releases/download/0.4.5/PhoneGapDesktop.dmg">https://github.com/phonegap/phonegap-app-desktop/releases/download/0.4.5/PhoneGapDesktop.dmg</a></li>
</ol>
</li>
<li>Installiere die Desktop App.</li>
<li>Öffne die Desktop App.</li>
</ol>
<p><img loading="lazy" decoding="async" class=" wp-image-7840 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_2_bild.png" alt="" width="400" height="545" /></p>
<p>Abbildung 2: Screenshot Desktop App (PhoneGap, 2018)</p>
<h2>Mit CLI</h2>
<p>Bevor man die PhoneGap CLI installiert, muss man folgende Voraussetzungen erfüllen:</p>
<h3>Voraussetzungen</h3>
<ul>
<li>node.js &#8211; eine JavaScript-Laufzeitumgebung zum Erstellen Ihres JavaScript-Codes</li>
<li>git &#8211; wird im Hintergrund vom CLI zum Herunterladen von Assets verwendet. Es ist auf einigen Betriebssystemen vorinstalliert.</li>
</ul>
<ol>
<li>Installiere die PhoneGap CLI über npm mit dem folgenden Befehl aus der Terminal-App (Mac) oder der Eingabeaufforderung (Win).
<ol>
<li>
<pre>$ npm install -g phonegap@latest</pre>
</li>
</ol>
</li>
<li>Teste, ob die PhoneGap CLI ordnungsgemäß installiert ist, indem man phonegap in der Befehlszeile eingibt. Man sollte folgende Hilfetextausgabe sehen:
<ol>
<li>
<pre>$ phonegap</pre>
</li>
</ol>
</li>
</ol>
<p><img loading="lazy" decoding="async" class="size-full wp-image-7857 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_03_bild.png" alt="" width="609" height="284" /></p>
<p>Abbildung 3: PhoneGap CLI (PhoneGap, 2018)</p>
<h1>Schritt 2: Installiere die mobile App</h1>
<p>Die PhoneGap Developer App ist eine mobile App, die auf Geräten ausgeführt wird und es dir ermöglicht, die von dir erstellten PhoneGap Mobile Apps ohne zusätzliche Plattform-SDK-Einrichtung in einer Vorschau anzuzeigen und zu testen. Die App bietet automatisch Zugriff auf die PhoneGap-Kern-APIs, sofortigen Zugriff auf die nativen Gerätefunktionen, ohne dass irgendwelche Plugins installiert oder irgendetwas lokal kompiliert werden muss.</p>
<p>Suche die kostenlose PhoneGap Developer App auf einem der folgenden unterstützten App-Marktplätze und installieren Sie sie auf Ihrem mobilen Gerät:</p>
<ul>
<li>Google Play (<a href="https://play.google.com/store/apps/details?id=com.adobe.phonegap.app">https://play.google.com/store/apps/details?id=com.adobe.phonegap.app</a> )</li>
<li>Windows Phone Store (<a href="https://www.microsoft.com/en-us/store/p/phonegap-developer/9wzdncrdfsj0">https://www.microsoft.com/en-us/store/p/phonegap-developer/9wzdncrdfsj0</a>)</li>
</ul>
<p>Tippe nach der Installation auf dem Startbildschirm auf das PhoneGap Developer App-Symbol, um es zu öffnen:</p>
<p><img loading="lazy" decoding="async" class="wp-image-7842 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_4_bild.png" alt="" width="328" height="662" /></p>
<p>Abbildung 4: Screenshot PhoneGap Developer (PhoneGap, 2018)</p>
<h1>Schritt 3: Erstelle die App</h1>
<p>Nachdem man die PhoneGap Desktop und / oder PhoneGap CLI auf dem Computer und die PhoneGap Developer App auf das mobile Gerät installiert hat, kann man ein PhoneGap-Projekt erstellen. Bei diesem Projekt handelt es sich um eine mobile PhoneGap-App, die mit nur wenigen einfachen Schritten auf mehreren Geräten und Betriebssystemen lauffähig ist.</p>
<h2>Erstelle ein PhoneGap-Projekt mit der PhoneGap Desktop App</h2>
<ol>
<li>Klicke auf das Pluszeichen und wähle &#8220;Neues PhoneGap-Projekt erstellen&#8221;, wie unten gezeigt wird:<img loading="lazy" decoding="async" class=" wp-image-7843 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_5_bild.png" alt="" width="400" height="521" /></li>
</ol>
<p>Abbildung 5: Screenshot PhoneGap Desktop App (PhoneGap, 2018)</p>
<ol start="2">
<li>Man wird mit dem Dialog für die Vorlagenliste wie unten gezeigt aufgefordert, wo man auswählen kann, ob man eine App basierend auf einem Beispielprojekt erstellen möchte.</li>
</ol>
<p>Jede Vorlage hat unterhalb des Namens eine kurze Beschreibung, welche Art von Projekt erstellt wird. Um eine Vorlage auszuwählen, klicke auf das Optionsfeld daneben. Im folgenden Bild ist die Vorlage &#8220;Hello World&#8221; ausgewählt.</p>
<p><img loading="lazy" decoding="async" class=" wp-image-7844 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_6_bild.png" alt="" width="452" height="589" /></p>
<p>Abbildung 6: PhoneGap Templates (PhoneGap, 2018)</p>
<p>Die erste Vorlagenoption in der Liste ist das Standard-Hello World-Projekt. Es ist bewiesen, dass es der schnellste und einfachste Weg ist, die Grundlagen des Aufbaus einer mobilen PhoneGap-App zu verstehen.</p>
<ol>
<li>Stelle sicher, dass das Optionsfeld neben der Vorlage &#8220;Hello World&#8221; ausgewählt ist.</li>
<li>Klicke auf die grüne Schaltfläche &#8220;Weiter&#8221;.</li>
<li>Man erhält einen Bildschirm zur Eingabe von Informationen zu dem Projekt. Wähle den Pfad auf der lokalen Festplatte, auf dem man das Projekt erstellen möchte, einen festgelegten Namen und einen optionalen ID. Sobald die Informationen eingegeben wurden, klicke auf die grüne Schaltfläche „Projekt erstellen“.<img loading="lazy" decoding="async" class=" wp-image-7845 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_7_bild.png" alt="" width="440" height="575" /></li>
</ol>
<p>Abbildung 7: Screenshot PhoneGap Desktop App (PhoneGap, 2018)</p>
<ol start="4">
<li>Man sollte jetzt eine Ansicht wie unten sehen, in der das neues Projekt angezeigt und mit einem grünen linken Rand, einem grünen Spielknopf daneben und einem grünen Balken am unteren Rand markiert ist. Man sollte auch eine Serveradresse sehen, die anzeigt, dass sie läuft und das aktive Projekt.</li>
</ol>
<p><img loading="lazy" decoding="async" class=" wp-image-7846 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_8_bild.png" alt="" width="449" height="587" /></p>
<p>Abbildung 8: Screenshot PhoneGap Desktop App (PhoneGap, 2018)</p>
<h2>Erstelle ein PhoneGap-Projekt mit der PhoneGap CLI</h2>
<ol>
<li>Gebe den folgenden Befehl in den Terminal ein:
<ol>
<li>
<pre>$ phonegap create myApp</pre>
</li>
</ol>
</li>
</ol>
<p>Dadurch wird am aktuellen Pfad ein Ordner namens myApp mit dem Standardprojektnamen Hello World und der ID com.phonegap.helloworld erstellt.</p>
<p>Man kann auch einen Namen und eine Kennung angeben, um sicherzustellen, dass das Projekt eindeutig ist, aber immer noch das Standard-Hello World-Codeprojekt enthält, indem man qualifizierte Parameter wie folgt angibt:</p>
<ul>
<li>
<pre>$ phonegap create myApp --id "org.myapp.sample" --name "appSample"</pre>
</li>
</ul>
<ol start="2">
<li>Stelle sicher, dass nach dem Ausführen des Befehls die folgende Ausgabe in der Konsole angezeigt wird:
<ol>
<li>
<pre>Creating a new cordova project.</pre>
</li>
</ol>
</li>
</ol>
<ol start="3">
<li>Wechsele mit dem Befehl cd in das neue Projektverzeichnis:
<ol>
<li>
<pre>$ cd myApp/</pre>
</li>
</ol>
</li>
</ol>
<ol start="4">
<li>Überprüfen Sie, ob die folgenden Dateien und Ordner angezeigt werden:
<ol>
<li>
<pre>xml hooks    platforms    plugins    www</pre>
</li>
</ol>
</li>
</ol>
<ol start="5">
<li>Wechsele in den Ordner www und schaue dir die darin enthaltenen Dateien und Unterordner an. Dies ist der Inhalt Ihrer App, wobei der Einstiegspunkt die Datei index.html ist.
<ol>
<li>
<pre>$ cd www/</pre>
</li>
</ol>
</li>
</ol>
<h1>Schritt 4: Vorschau der App</h1>
<p>Man kann die PhoneGap Developer App zusammen mit PhoneGap Desktop verwenden, um sofort eine Vorschau der App auf einem Gerät anzuzeigen, ohne Plattform-SDKs zu installieren, Geräte zu registrieren oder Code zu kompilieren.</p>
<p>PhoneGap Desktop startet einen kleinen Webserver zum Hosten des Projekts und gibt eine Serveradresse zurück, die man dann in die PhoneGap Developer App eingeben kann, die auf dem mobilen Gerät oder in dem Desktop-Browser ausgeführt wird. Das Projekt wird automatisch bei der Projekterstellung geschaltet. Man kann jedoch auch jedes Projekt, das nicht aktiv ist, manuell starten, indem man auf die grüne Schaltfläche (&gt;) neben dem Projekt klickt.</p>
<h2>Vorschau in einem Desktop-Browser</h2>
<p>Man kann den Desktop-Browser nutzen, um zuerst die Apps in der Vorschau anzuzeigen und zu testen, um den anfänglichen Entwicklungsprozess zu beschleunigen. Wenn man beispielsweise ein Framework wie Angular oder React verwendet, stehen dir Tools zur Verfügung, mit denen man diese Frameworks im Browser spezifisch debuggen kann, was sehr hilfreich sein kann, bevor man zu einem Gerät wechselt. Vor kurzem hat PhoneGap die Browser-Plattform als Ziel automatisch unterstützt, um uns zu helfen, mit dem Deviceready-Ereignis und Apache Cordova-Kern-Plugins einfacher in einer Umgebung zu testen.</p>
<p><img loading="lazy" decoding="async" class=" wp-image-7847 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_9_bild.png" alt="" width="650" height="403" /></p>
<p>Abbildung 9 Screenshot PhoneGap im Browser (PhoneGap, 2018)</p>
<h2>Vorschau der App mit PhoneGap Desktop</h2>
<p>Im vorherigen Schritt haben wir ein Projekt erstellt und sichergestellt, dass es läuft, indem wir nach dem grünen Abspielknopf suchen, der hervorgehoben werden soll, und einem grünen Balken, auf dem die Serveradresse unten auf dem PhoneGap Desktop angezeigt wird.</p>
<ol>
<li>Der Screenshot wird zur Referenz unten noch einmal gezeigt. Suchen Sie die spezifische Serveradresse für das Projekt, bevor man mit dem nächsten Schritt fortfährt.</li>
</ol>
<p><img loading="lazy" decoding="async" class=" wp-image-7848 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_10_bild.png" alt="" width="450" height="588" /></p>
<p>Abbildung 10: Screenshot PhoneGap Desktop App (PhoneGap, 2018)</p>
<ol start="2">
<li>Gehe zum Mobilgerät, auf dem die PhoneGap Developer App ausgeführt wird. Dort gib die Serveradresse auf dem Hauptbildschirm ein und tippe auf Verbinden. Nun kann man die App auf dem mobilen Gerät anschauen.</li>
</ol>
<p><img loading="lazy" decoding="async" class="wp-image-7849 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_11_bild.png" alt="" width="280" height="567" /></p>
<p>Abbildung 11: Screenshot PhoneGap Developer App (PhoneGap, 2018)</p>
<p><img loading="lazy" decoding="async" class="wp-image-7850 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_12_bild.png" alt="" width="280" height="585" /></p>
<p>Abbildung 12: Screenshot PhoneGap Developer App (PhoneGap, 2018)</p>
<p><img loading="lazy" decoding="async" class="wp-image-7851 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_13_bild.png" alt="" width="280" height="585" /></p>
<p>Abbildung 13: Screenshot PhoneGap Developer App (PhoneGap, 2018)</p>
<h2>Vorschau der App mit PhoneGap CLI</h2>
<p>Man kann die PhoneGap Developer App zusammen mit der PhoneGap CLI verwenden, um sofort eine Vorschau der App auf einem Gerät anzuzeigen, ohne Plattform-SDKs zu installieren, Geräte zu registrieren oder Code zu kompilieren. Die PhoneGap CLI startet einen kleinen Webserver zum Hosten des Projekts und gibt die Serveradresse für die Kopplung mit der PhoneGap Developer App zurück, die auf dem mobilen Gerät ausgeführt wird.</p>
<ol>
<li>Wechsele in das Projektverzeichnis, das du im vorherigen Schritt erstellt hast, und gebe $ phonegap serve ein. Man erhält die Serveradresse, auf der die App gehostet wird, in der Ausgabe, die in der Konsole empfangen wird (in diesem Beispiel 192.168.1.11:3000):<img loading="lazy" decoding="async" class="size-full wp-image-7854 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/phonegap_14_bild.png" alt="" width="571" height="196" /></li>
</ol>
<p>Abbildung 14: PhoneGap CLI (PhoneGap, 2018)</p>
<ol start="2">
<li>Gehe zum Mobilgerät, auf dem die PhoneGap Developer App ausgeführt wird. Dort gib die Serveradresse auf dem Hauptbildschirm ein und tippe auf Verbinden (siehe Bilder 11, 12 und 13).</li>
</ol>
<p>Nun kann man die App auf dem mobilen Gerät anschauen.</p>
<h1>Eine Applikation erstellen</h1>
<p>Mittels Adobe PhoneGap Build ist es möglich eine Applikation zu builden (<a href="https://build.phonegap.com/">https://build.phonegap.com/</a>). Hier kann man das ZIP File des Projektes hochladen und man erhält eine fertige Applikation für z.B. den Google Play Store.</p>
<h1>Fazit</h1>
<p>Eine Applikation zu erstellen ist hier sehr einfach jedoch kann man zwar iOS Applikationen erstellen, jedoch ist die Adobe PhoneGap Applikation nicht im App Store verfügbar. Des weiteren lässt der App Store die PhoneGap Applikationen angeblich nicht in den Store laden. Für Android und Windows Applikationen ist es kein Problem. Vor ein paar Monaten habe ich dieses Tool mit Framework 7 ausgetestet und hat sehr einfach funktioniert – App und CLI.</p>
<p>&nbsp;</p>
<h4>Quellen:</h4>
<ul>
<li><a href="https://valuebound.com/resources/blog/getting-started-apache-cordova-to-build-hybrid-mobile-apps">https://valuebound.com/resources/blog/getting-started-apache-cordova-to-build-hybrid-mobile-apps</a></li>
<li><a href="https://phonegap.com/">https://phonegap.com/</a></li>
<li><a href="https://build.phonegap.com/">https://build.phonegap.com/</a></li>
</ul>
<p>&nbsp;</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/adobe-phonegap/">Adobe PhoneGap</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sensoren in Android Smartphones &#038; Tablets</title>
		<link>https://mobile.fhstp.ac.at/development/sensoren-in-android-smartphones-tablets/</link>
		
		<dc:creator><![CDATA[Olivia Wais]]></dc:creator>
		<pubDate>Mon, 21 May 2018 15:11:20 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=7739</guid>

					<description><![CDATA[<p>Sensoren in Smartphones fügen umfangreiche Standort- und Bewegungsfunktionen zu deiner Applikation hinzu, wie z.B. GPS, Netzwerkstandort, Beschleunigungsmesser, Gyroskop, Temperatur und Barometer. Auf die folgenden Sensoren möchte ich hier näher eingehen: Bewegungssensoren messen Beschleunigungskräfte und Drehkräfte an 3 Achsen. In diesem Kapitel werden Beschleunigungssensoren, Schwerkraftsensoren, Gyroskope und Rotationsvektorsensoren diskutiert. Positionssensoren messen die physikalische Position eines Gerätes. <a class="read-more" href="https://mobile.fhstp.ac.at/development/sensoren-in-android-smartphones-tablets/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/sensoren-in-android-smartphones-tablets/">Sensoren in Android Smartphones &#038; Tablets</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Sensoren in Smartphones fügen umfangreiche Standort- und Bewegungsfunktionen zu deiner Applikation hinzu, wie z.B. GPS, Netzwerkstandort, Beschleunigungsmesser, Gyroskop, Temperatur und Barometer.</p>
<p>Auf die folgenden Sensoren möchte ich hier näher eingehen:</p>
<ul>
<li><strong>Bewegungssensoren</strong> messen Beschleunigungskräfte und Drehkräfte an 3 Achsen. In diesem Kapitel werden Beschleunigungssensoren, Schwerkraftsensoren, Gyroskope und Rotationsvektorsensoren diskutiert.</li>
<li><strong>Positionssensoren</strong> messen die physikalische Position eines Gerätes. In diesem Kapitel werden Orientierungssensoren und Magnetometer beschrieben.</li>
<li><strong>Umgebungssensoren</strong> messen Umgebungsparameter wie z.B. Temperatur, Luftdruck, Beleuchtung und Luftfeuchtigkeit. Dieses Kapitel beschreibt den Barometer, Photometer und das Thermometer.</li>
</ul>
<p>Man kann auf die Sensoren auf dem Gerät zugreifen – wenn sie verfügbar sind – mithilfe des Android Sensor Frameworks. Das Framework bietet Klassen und Interfaces um die verschiedensten Aufgaben zu lösen wie z.B.:</p>
<ul>
<li>Um herauszufinden welche <strong>Sensoren überhaupt auf dem Gerät</strong> verfügbar sind.</li>
<li>Um die <strong>Fähigkeiten</strong> eines Sensors zu <strong>ermitteln</strong> wie z.B. die maximale Reichweite, Hersteller und Auflösung.</li>
<li>Um <strong>rohe Sensordaten zu erfassen</strong> und z.B. Mindestgeschwindigkeiten definieren, die die Sensordaten erhalten.</li>
<li>Anmeldung und Abmeldung von <strong>Sensor Event Listeners</strong> welche die Änderungen aufnehmen.</li>
</ul>
<h2>Einführung</h2>
<p>Mit dem Android-Sensor-Framework kann man auf viele Arten von Sensoren zugreifen. Einige dieser Sensoren sind hardwarebasiert, andere softwarebasiert. Hardwarebasierte Sensoren sind physische Komponenten, die in ein Mobilteil oder Tablet-Gerät integriert sind. Sie leiten ihre Daten ab, indem sie spezifische Umwelteigenschaften wie Beschleunigung, Erdmagnetfeldstärke oder Winkeländerung direkt messen. Softwarebasierte Sensoren sind keine physischen Geräte, obwohl sie hardwarebasierte Sensoren nachahmen. Sie leiten ihre Daten von einem oder mehreren der hardwarebasierten Sensoren ab und werden manchmal als virtuelle Sensoren oder synthetische Sensoren bezeichnet. Der lineare Beschleunigungssensor und der Schwerkraftsensor sind Beispiele für softwarebasierte Sensoren. Tabelle 1 fasst die Sensoren zusammen, die von der Android-Plattform unterstützt werden.</p>
<p>Nur wenige Android-Geräte haben alle Arten von Sensoren. Zum Beispiel haben die meisten Handgeräte und Tablets einen Beschleunigungsmesser und ein Magnetometer, aber weniger Geräte haben Barometer oder Thermometer.</p>
<p><em><img loading="lazy" decoding="async" class="alignnone size-full wp-image-7754" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/tab_1_sens.jpg" alt="" width="778" height="999" /></em></p>
<p><em>Tabelle 1. Sensortypen,</em> <em>die auf der Android-Plattform unterstützt werden     .</em></p>
<h2>Sensor Framework</h2>
<p>Man kann auf diese Sensoren zugreifen und rohe Sensordaten mithilfe des Android-Sensor-Frameworks erfassen. Das Sensor-Framework ist Teil des android.hardware-Pakets und umfasst die folgenden Klassen und Interfaces:</p>
<p><a href="https://developer.android.com/reference/android/hardware/SensorManager.html">SensorManager</a></p>
<p>Man kann diese Klasse verwenden, um eine Instanz des Sensor-Service zu erstellen. Diese Klasse bietet verschiedene Methoden wie z.B. für den Zugriff und Auflisten von Sensoren.</p>
<p><a href="https://developer.android.com/reference/android/hardware/Sensor.html">Sensor</a></p>
<p>Man kann diese Klasse verwenden, um eine Instanz eines bestimmten Sensors zu erstellen. Diese Klasse bietet verschiedene Methoden, mit denen man die Fähigkeiten eines Sensors bestimmen kann.</p>
<p><a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">SensorEvent</a></p>
<p>Das System erstellt mit dieser Klasse ein Sensorereignisobjekt, das Informationen zu einem Sensorereignis liefert. Ein Sensorereignisobjekt enthält die folgenden Informationen:</p>
<ul>
<li>die Rohsensordaten,</li>
<li>den Typ des Sensors,</li>
<li>der das Ereignis generiert hat,</li>
<li>die Genauigkeit der Daten und</li>
<li>den Zeitstempel für das Ereignis.</li>
</ul>
<p><a href="https://developer.android.com/reference/android/hardware/SensorEventListener.html">SensorEventListener</a></p>
<p>Man kann dieses Interface verwenden, um zwei Callback-Methoden zu erstellen, die Benachrichtigungen (Sensorereignisse) empfangen, wenn sich Sensorwerte ändern oder wenn sich die Sensorgenauigkeit ändert.</p>
<p>In einer typischen Anwendung verwendet man diese sensorbezogenen APIs, um zwei grundlegende Aufgaben auszuführen:</p>
<ul>
<li><strong>Identifizieren von Sensoren und Sensorfähigkeiten</strong> zur Laufzeit ist nützlich, wenn Ihre Anwendung über Funktionen verfügt, die auf bestimmten Sensortypen oder -funktionen beruhen. Beispielsweise möchtest du möglicherweise alle Sensoren identifizieren, die auf einem Gerät vorhanden sind, und alle Anwendungsfunktionen deaktivieren, die auf Sensoren basieren, die nicht vorhanden sind. Ebenso möchtest du vielleicht alle Sensoren eines bestimmten Typs identifizieren, damit Sie die Sensorimplementierung auswählen können, die die optimale Leistung für Ihre Anwendung bietet.</li>
<li><strong>Überwachen von Sensorereignissen</strong> ist, eigentlich wie man rohe Sensordaten erfassen kann. Ein Sensorereignis tritt jedes Mal auf, wenn ein Sensor eine Änderung der Parameter erkennt, die der Sensor misst. Ein Sensorereignis liefert vier Informationen:
<ul>
<li>den Namen des Sensors,</li>
<li>der das Ereignis ausgelöst hat,</li>
<li>den Zeitstempel für das Ereignis,</li>
<li>die Genauigkeit des Ereignisses und</li>
<li>die unformatierten Sensordaten, die das Ereignis ausgelöst haben.</li>
</ul>
</li>
</ul>
<h2>Bewegungssensoren</h2>
<p>Die Plattform von Android bietet mehrere Sensoren an, mit denen man die Bewegung eines Geräts überwachen kann.</p>
<p>Die möglichen Architekturen der Sensoren variieren je nach Sensortyp:</p>
<ul>
<li>Die Sensoren für <strong>Gravitation, lineare Beschleunigung, Rotationsvektor, signifikante Bewegung, Schrittzähler und Schrittdetektor</strong> sind entweder <strong>hardwarebasiert oder softwarebasiert</strong>.</li>
<li><strong>Beschleunigungssensoren und Gyroskopsensoren</strong> sind immer <strong>hardwarebasiert</strong>.</li>
</ul>
<p>Die meisten Android-Geräte verfügen über einen Beschleunigungssensor und viele enthalten auch schon ein Gyroskop. Die Verfügbarkeit der softwarebasierten Sensoren ist variabel, da sie häufig auf einen oder mehrere Hardware-Sensoren angewiesen sind, um ihre Daten abzuleiten. Je nach Gerät können diese softwarebasierten Sensoren ihre Daten entweder vom Beschleunigungsmesser und Magnetometer oder vom Gyroskop ableiten.</p>
<p>Bewegungssensoren sind nützlich für die Überwachung von Gerätebewegungen wie Neigen, Schütteln, Drehen oder Schwenken. Die Bewegung ist normalerweise eine <strong>Reflektion direkter Benutzereingabe</strong> (z.B. ein User, der ein Auto in einem Spiel), aber es kann auch eine <strong>Reflektion der physischen Umgebung</strong> sein, in der das Gerät sitzt (z.B., wenn man mit dem Auto unterwegs ist). Im ersten Fall überwachen Sie die <strong>Bewegung relativ zum Referenzrahmen</strong> des Geräts oder zum Referenzrahmen Ihrer Anwendung. Im zweiten Fall überwachen Sie die <strong>Bewegung relativ zum Bezugsrahmen der Welt</strong>. Bewegungssensoren selbst werden normalerweise nicht zur Überwachung der Geräteposition verwendet. Sie können jedoch mit anderen Sensoren, wie z. B. dem Erdmagnetfeldsensor, verwendet werden, um die Position eines Geräts relativ zum Referenzsystem der Welt zu bestimmen.</p>
<p>Bewegungssensoren geben mehrdimensionale Arrays von Sensorwerten für jedes SensorEvent zurück. Z.B. gibt der Beschleunigungsmesser während eines einzelnen Sensorereignisses Beschleunigungskraftdaten für die drei Koordinatenachsen zurück, und das Gyroskop gibt die Rotationsgeschwindigkeitsdaten für die drei Koordinatenachsen zurück. Diese Datenwerte werden in einem Float-Array (Werte) zusammen mit anderen SensorEvent-Parametern zurückgegeben. Tabelle 2 fasst die Bewegungssensoren zusammen, die auf der Android-Plattform verfügbar sind.</p>
<p><em><img loading="lazy" decoding="async" class="alignnone size-full wp-image-7755" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/tab_2_sens.jpg" alt="" width="775" height="1617" /></em></p>
<p><em>Tabelle 2. Bewegungssensoren, die auf der Android-Plattform unterstützt werden.</em></p>
<h3>Beispiel Schwerkraftsensor</h3>
<p>Der Schwerkraftsensor liefert einen dreidimensionalen Vektor, der die Richtung und Größe der Schwerkraft anzeigt. In der Regel wird dieser Sensor verwendet, um die relative Ausrichtung des Geräts im Raum zu bestimmen. Der folgende Code zeigt, wie man eine Instanz des Standard-Schwerkraftsensors erhält:</p>
<p><em><img loading="lazy" decoding="async" class="alignnone wp-image-7753" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/code_schwer_sens.jpg" alt="" width="715" height="136" /></em></p>
<p>Die Einheiten entsprechen denen des Beschleunigungssensors (m / s2). Das Koordinatensystem entspricht dem des Beschleunigungssensors.</p>
<h2>Positionssensoren</h2>
<p>Die Android-Plattform bietet zwei Sensoren, mit denen man die Position eines Geräts bestimmen kann:</p>
<ul>
<li>den Erdmagnetfeldsensor und</li>
<li>den Beschleunigungssensor.</li>
</ul>
<p>Die Plattform von Android bietet außerdem einen Sensor, mit dem man bestimmen kann, wie nah ein Geräts an einem anderen Objekt ist (Annäherungssensor). Der <strong>Erdmagnetfeldsensor und der Näherungssensor sind hardwarebasiert</strong>. Die meisten Handset- und Tablet-Hersteller enthalten einen Erdmagnetfeldsensor. In ähnlicher Weise enthalten Handset-Hersteller üblicherweise einen Annäherungssensor, um zu bestimmen, wann ein Handgerät in der Nähe des Gesichts eines Benutzers gehalten wird (beispielsweise während eines Telefonanrufs). Zur Bestimmung der Ausrichtung eines Geräts kann man die Messwerte des Beschleunigungssensors des Geräts und des Erdmagnetfeldsensors verwenden.</p>
<p><em>Hinweis: Der Orientierungssensor wurde in Android 2.2 (API-Stufe 8) nicht mehr unterstützt, und der Orientierungssensortyp wurde in Android 4.4W (API-Stufe 20) nicht mehr verwendet.</em></p>
<p>Positionssensoren sind nützlich, um die physische Position eines Geräts im Referenzrahmen der Welt zu bestimmen. Z.B. kann man den Erdmagnetfeldsensor in Kombination mit dem Beschleunigungssensor verwenden, um die Position eines Geräts relativ zum magnetischen Nordpol zu bestimmen. Man kann diese Sensoren auch verwenden, um die Ausrichtung eines Geräts im Referenzrahmen Ihrer Anwendung zu bestimmen. Positionssensoren werden normalerweise nicht zur Überwachung von Bewegungen oder Bewegungen des Geräts verwendet, wie z. B. Erschütterungen, Neigungen oder.</p>
<p>Der Erdmagnetfeldsensor und der Beschleunigungsmesser geben mehrdimensionale Arrays von Sensorwerten für jedes SensorEvent zurück. Z.B. liefert der Erdmagnetfeldsensor Erdmagnetfeldstärkewerte für jede der drei Koordinatenachsen während eines einzelnen Sensorereignisses. In ähnlicher Weise misst der Beschleunigungssensor die Beschleunigung, die während eines Sensorereignisses an das Gerät angelegt wird.</p>
<p>Der Näherungssensor liefert einen einzelnen Wert für jedes Sensorereignis. Tabelle 3 fasst die Positionssensoren zusammen, die auf der Android-Plattform unterstützt werden.</p>
<p><em><img loading="lazy" decoding="async" class="alignnone size-full wp-image-7756" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/tab_3_sens.jpg" alt="" width="777" height="1153" /></em></p>
<p><em>Tabelle 3. Positionssensoren, die auf der Android-Plattform unterstützt werden.</em></p>
<h2>Umgebungssensoren</h2>
<p>Die Android-Plattform bietet vier Sensoren, mit denen man verschiedene Umgebungseigenschaften überwachen kann. Mit diesen Sensoren kann man:</p>
<ul>
<li><strong>relative Umgebungsfeuchtigkeit</strong>,</li>
<li><strong>Beleuchtungsstärke</strong>,</li>
<li><strong>Umgebungsdruck </strong>und</li>
<li><strong>Umgebungstemperatur</strong> in der Nähe eines Android-Geräts überwachen.</li>
</ul>
<p>Alle vier Umgebungssensoren sind <strong>hardwarebasiert</strong> und nur verfügbar, wenn ein Gerätehersteller sie in ein Gerät eingebaut hat. Mit Ausnahme des Lichtsensors, mit dem die meisten Gerätehersteller die Bildschirmhelligkeit steuern, sind Umgebungssensoren nicht immer auf Geräten verfügbar. Aus diesem Grund ist es besonders wichtig, dass Sie zur Laufzeit überprüfen, ob ein Umgebungssensor vorhanden ist, bevor man versucht, Daten zu erfassen.</p>
<p>Im Gegensatz zu den meisten Bewegungssensoren und Positionssensoren, die für jedes SensorEvent ein mehrdimensionales Array von Sensorwerten zurückgeben, <strong>geben </strong>Umgebungssensoren für jedes Datenereignis einen <strong>einzelnen Sensorwert zurück</strong> (z.B. Temperatur in ° C, der Druck in hPa). Umgebungssensoren erfordern typischerweise keine Datenfilterung oder Datenverarbeitung. Tabelle 4 enthält eine Zusammenfassung der Umgebungssensoren, die auf der Android-Plattform unterstützt werden.</p>
<p><em><img loading="lazy" decoding="async" class="size-full wp-image-7757 alignnone" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/tab_4_sens.jpg" alt="" width="777" height="264" /></em></p>
<p><em>Tabelle 4. Umgebungssensoren, die auf der Android-Plattform unterstützt werden.</em></p>
<h3>Beispiel Licht-, Druck- und Temperatursensoren</h3>
<p>Die Rohdaten, die Sie von den Licht-, Druck- und Temperatursensoren erhalten, erfordern normalerweise keine Kalibrierung, Filterung oder Modifizierung, was sie zu den einfachsten zu verwendenden Sensoren macht. Um Daten von diesen Sensoren zu erfassen, erstellt man eine Instanz der SensorManager-Klasse, mit der Sie eine Instanz eines physikalischen Sensors ermitteln kann. Dann registriert man einen Sensor-Listener in der onResume () -Methode und beginnen mit eingehenden Sensordaten in der onSensorChanged () &#8211; Callback-Methode. Der folgende Code zeigt, wie es funktioniert:</p>
<p><em><img loading="lazy" decoding="async" class="size-full wp-image-7752 alignnone" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/code_licht_sens.jpg" alt="" width="782" height="750" /></em></p>
<p>Man muss immer Implementierungen der onAccuracyChanged () &#8211; und onSensorChanged () &#8211; Callback-Methoden einschließen. Stelle sicher, dass die Registrierung eines Sensors immer aufgehoben wird, wenn eine Aktivität unterbrochen wird. Dies verhindert, dass ein Sensor kontinuierlich Daten erfasst und die Batterie entleert.</p>
<p>&nbsp;</p>
<p>Quelle &amp; Bilder: <a href="https://developer.android.com/guide/topics/sensors/">https://developer.android.com/guide/topics/sensors/</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/sensoren-in-android-smartphones-tablets/">Sensoren in Android Smartphones &#038; Tablets</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Firebase &#8211; eine kurze Einführung</title>
		<link>https://mobile.fhstp.ac.at/development/webdevelopment/firebase-eine-kurze-einfuehrung/</link>
		
		<dc:creator><![CDATA[Olivia Wais]]></dc:creator>
		<pubDate>Sat, 17 Feb 2018 16:08:47 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=7617</guid>

					<description><![CDATA[<p>Was ist Firebase? Google Firebase (https://firebase.google.com/) ist eine Plattform – gehostet von Google –, wo man Applikationen, ob Android, iOS und ganz normal im Web, weiterentwickeln und vermarkten kann. Firebase bietet gewisse Tools an, welche Entwickler verwenden können um qualitativ hochwertige Applikationen zu erstellen, z.B. um ihre Userbase zu vergrößern und mehr Geld zu verdienen. <a class="read-more" href="https://mobile.fhstp.ac.at/development/webdevelopment/firebase-eine-kurze-einfuehrung/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/firebase-eine-kurze-einfuehrung/">Firebase &#8211; eine kurze Einführung</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Was ist Firebase?</h1>
<p>Google Firebase (<a href="https://firebase.google.com/">https://firebase.google.com/</a>) ist eine Plattform – gehostet von Google –, wo man Applikationen, ob Android, iOS und ganz normal im Web, weiterentwickeln und vermarkten kann. Firebase bietet gewisse Tools an, welche Entwickler verwenden können um qualitativ hochwertige Applikationen zu erstellen, z.B. um ihre Userbase zu vergrößern und mehr Geld zu verdienen. Firebase stellt viele Features dar, so dass Entwickler mit ihrem Unternehmen Geld verdienen und sich auf ihre User konzentrieren können.</p>
<p>&nbsp;</p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/02/firebase.png"><img loading="lazy" decoding="async" class="wp-image-7621 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/02/firebase.png" alt="" width="352" height="176" /></a></p>
<p>&nbsp;</p>
<p>Man braucht keine Server zu managen. Man muss keine APIs entwickeln. Das macht alles Firebase: Firebase ist dein Server, deine API und dein Datastore. Natürlich kann man alles verändern, so dass es für deine Applikation passt. Firebase kann natürlich nicht alles, jedoch sehr vieles!</p>
<p>Dieses System ist ein Backend-as-a-Service (BaaS), welches in dem Startup YC11 entwickelt worden ist und dann auf der Google Cloud Plattform weiter gehostet wird. Im Detail ist es auch ein Front-End-Data-Store, welcher in Real Time auf der Cloud gehostet wird. Deine User müssen daher nicht auf deinem Server zugreifen, sondern können die Daten direkt aus Firebase laden und dann auch speichern. Ein Vorteil bzw. ein Nachteil kann sein, dass man die Plattform nicht selber hosten kann – sie wird von Google selbst gehostet.</p>
<p>Diese Platform beinhaltet 2 große Services:</p>
<ul>
<li>Develop &amp; test your app</li>
<li>Grow &amp; engage your audience</li>
</ul>
<h1>Features?</h1>
<p>Folgend werden die einzelnen Features aufgelistet und ganz kurz beschrieben.</p>
<p><strong>Develop &amp; test your app</strong></p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/02/develop_app_firebase.png"><img loading="lazy" decoding="async" class="size-full wp-image-7619 alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/02/develop_app_firebase.png" alt="" width="366" height="244" /></a></p>
<ul>
<li>Realtime Database
<ul>
<li>Man kann Daten in Millisekunden speichern und synchronisieren.</li>
<li>Das ist einer der größten Features von Firebase.</li>
<li>Sie ist eine noSQL Datenbank.</li>
<li>In der Datenbank werden nur JSON Objekte gespeichert – keine Tabellen!</li>
</ul>
</li>
<li>Authentication
<ul>
<li>Man kann Benutzer einfach und sicher anlegen.</li>
</ul>
</li>
<li>Cloud Functions
<ul>
<li>Man kann mobilen Backend-Code laufen lassen, ohne dass man eigene Server managen muss.</li>
</ul>
</li>
<li>Cloud Storage
<ul>
<li>Einfaches Speichern und Ausführen von Files.</li>
</ul>
</li>
<li>Hosting
<ul>
<li>Erstelle Webapplikation-Assests mit hoher Geschwindigkeit und Sicherheit.</li>
</ul>
</li>
<li>Crash Reporting
<ul>
<li>Ranke und finde Bugs, so dass du sie schneller beheben kannst.</li>
</ul>
</li>
<li>Test Lab für Android
<ul>
<li>Teste deine Applikation auf Geräten, die von Google gehostet werden.</li>
</ul>
</li>
<li>Performance Monitoring
<ul>
<li>Erhalte einen Einblick in die Leistung deiner Applikation.</li>
</ul>
</li>
</ul>
<p><strong>Grow &amp; engage your audience</strong></p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/02/grow_app_firebase.png"><img loading="lazy" decoding="async" class="size-full wp-image-7618 alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/02/grow_app_firebase.png" alt="" width="366" height="244" /></a></p>
<ul>
<li>Cloud Messaging
<ul>
<li>Man kann gezielt Nachrichten und Benachrichtigungen senden.</li>
</ul>
</li>
<li>Google Analytics
<ul>
<li>Erhalte kostenlose und unbegrenzte App-Analysen.</li>
</ul>
</li>
<li>Dynamic Links
<ul>
<li>Steiger das Wachstum, indem du Links mit Attributionen verwendest.</li>
</ul>
</li>
<li>Remote Config
<ul>
<li>Verändere deine Applikation ohne, dass du eine neue Version deployen muss.</li>
</ul>
</li>
<li>Invites
<ul>
<li>Es ist einfach deine Applikation und Content zu teilen.</li>
</ul>
</li>
<li>App Indexing
<ul>
<li>Führe Suchzugriffe auf deine mobile App aus.</li>
</ul>
</li>
<li>AdMob
<ul>
<li>Maximiere den Umsatz mit In-App-Anzeigen.</li>
</ul>
</li>
<li>AdWords
<ul>
<li>Führe gezielte Werbekampagnen aus.</li>
</ul>
</li>
</ul>
<h1>Predictions</h1>
<p>Ein weiteres interessantes Feature sind die Firebase Predictions. Diese Funktion verwendet die „Macht“ von Googles maschinellen Lernens um dynamische Benutzergruppen basierend auf dem vorhergesagten Verhalten der Benutzer zu erstellen. Mit diesem Feature ist es möglich fundierte Produktentscheidungen zu treffen, ohne ein internes Data-Science-Team aufbauen zu müssen.</p>
<h1>Kosten</h1>
<p>Prinzipiell ist Firebase billig. Bei einer gewissen Useranzahl kann man Firebase gratis benutzen. Danach zahlt man z.B. pro Gigabyte, was gespeichert wird 5$ und pro Gigabyte, was gesendet wird 1$. Userdaten sind eigentlich nur ein paar Kilobyte groß – also ist es recht billig. Aber wenn man viele Daten hin und her sendet, kann es teuer werden, und das Unternehmen/Applikation könnte zu Grunde gehen. Deshalb sollte man aufpassen und sparen, welche Daten man wirklich braucht.</p>
<p>Google macht mit Firebase kaum Umsatz. Sie stecken sehr viel Geld hinein und so entstehen wie oben schon erwähnt viele coole Features.</p>
<h1>Vorteile</h1>
<ul>
<li>Funktioniert in Real Time
<ul>
<li>Man braucht z.B. keine Socket.IO Systeme. Es funktioniert alles automatisch.</li>
</ul>
</li>
<li>Muss keine REST API schreiben (muss aber trotzdem ein paar Zeilen für den Server schreiben.)</li>
<li>Es ist nicht teuer.</li>
</ul>
<h1>Nachteile</h1>
<ul>
<li>Man kann Firebase nicht selber Hosten.</li>
<li>Für große Applikationen wie Facebook oder Snapchat ist es keine gute Idee Firebase zu verwenden: ZU VIELE DATEN. Es ist für keine Applikationen gedacht.</li>
<li>Man kann Firebase nicht lokal laufen lassen – nur durch die Cloud.</li>
</ul>
<h1>Quellen:</h1>
<ul>
<li><a href="https://firebase.google.com/">https://firebase.google.com/</a></li>
<li><a href="https://medium.com/@limhenry/why-i-love-firebase%EF%B8%8F-and-what-is-firebase-%EF%B8%8F-96b54509d450">https://medium.com/@limhenry/why-i-love-firebase%EF%B8%8F-and-what-is-firebase-%EF%B8%8F-96b54509d450</a></li>
<li><a href="https://www.lynda.com">https://www.lynda.com</a></li>
<li><a href="https://howtofirebase.com/what-is-firebase-fcb8614ba442">https://howtofirebase.com/what-is-firebase-fcb8614ba442</a></li>
</ul>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/firebase-eine-kurze-einfuehrung/">Firebase &#8211; eine kurze Einführung</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Framework 7 – Ein HTML Framework</title>
		<link>https://mobile.fhstp.ac.at/development/framework-7-ein-html-framework/</link>
		
		<dc:creator><![CDATA[Olivia Wais]]></dc:creator>
		<pubDate>Thu, 28 Dec 2017 17:52:10 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[Workshop]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=7448</guid>

					<description><![CDATA[<p>Framework7 (https://framework7.io/) ist ein kostenloses Open-Source mobile HTML Framework. Man kann damit Hybride Mobile Applikationen oder Webapplikationen mit iOS und Android „look and feel“ entwickeln. Oft wird es zum Erstellen von Prototypen verwendet, da es leicht zu verstehen und anwendbar ist. Es ist nicht anders wie eine Website. Man muss nur das HTML-File mit dem <a class="read-more" href="https://mobile.fhstp.ac.at/development/framework-7-ein-html-framework/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/framework-7-ein-html-framework/">Framework 7 – Ein HTML Framework</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Framework7 (<a href="https://framework7.io/">https://framework7.io/</a>) ist ein kostenloses Open-Source mobile HTML Framework. Man kann damit Hybride Mobile Applikationen oder Webapplikationen mit iOS und Android „look and feel“ entwickeln. Oft wird es zum Erstellen von Prototypen verwendet, da es leicht zu verstehen und anwendbar ist. Es ist nicht anders wie eine Website. Man muss nur das HTML-File mit dem Framework7 CSS und JS Dateien verlinken.</p>
<p>Im Detail ist Framework7 nicht mit allen Plattformen kompatibel. Derzeit wurden nur iOS und das Google Material Design umgesetzt. Framework7 ist iOS spezifisch. Den Entwicklern war es wichtig, dass man mit dem Projekt alle nötigen UI-Elemente zur Verfügung hat, um eine Applikation umzusetzen. Das Material Theme kam später dazu, welches nach dem offiziellen Google Material Design erstellt wurde.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-7454" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/ios_fw7.png" alt="" width="1016" height="599" /> <img loading="lazy" decoding="async" class="alignnone size-full wp-image-7455" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/mat_fw7.png" alt="" width="1012" height="607" /></p>
<p>&nbsp;</p>
<p><strong>Elemente</strong></p>
<p>Wie schon erwähnt, besitzt das Framework sehr viele „ready to use“-UI-Elemente und Widgets, wie z.B. Modals, Popups, Action Sheets, Popovers, List Views, Media Lists, Tabs, Side Panels, uvm. Die meisten von den aufgezählten Elementen brauchen nicht einmal JavaScript. Zusätzlich hat man die Möglichkeit die Styles zu verändern. Dies ist sehr leicht machbar, da sie in kleine .less Dateien aufgeteilt sind und darum leicht zu finden sind. Das Framework kann man auch mit Vue.js (<a href="https://framework7.io/vue/">https://framework7.io/vue/</a>)  oder React (<a href="https://framework7.io/react/">https://framework7.io/react/</a>) kombinieren um z.B. Data Bindings verwenden zu können.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-7452" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/elements_fw7.png" alt="" width="911" height="371" /></p>
<p><strong>Eigenes DOM7 Element</strong></p>
<p>Ein interessantes Feature ist, dass Framework7 keine externen Libraries verwendet. Sogar DOM-Manipulation hat eine eigene Library (DOM7), welche eine hohe Performanz besitzt. Der Vorteil liegt daran, dass man keine neue Syntax lernen muss, da es dieselbe wie die von jQuery ist.</p>
<p><strong>Applikationen</strong></p>
<p>Leider ist Framework7 nicht sehr bekannt. Oft wird zu anderen Frameworks gegriffen, wie z.B. Ionic. Applikationen, die Framework7 verwenden, sind z.B.:</p>
<ul>
<li>Tomatoid (<a href="https://www.tomatoid.com/mobile">https://www.tomatoid.com/mobile</a>)</li>
<li>SimpleTip: Tip Calculator (<a href="https://itunes.apple.com/us/app/simpletip-tip-calculator/id1187500689?ign-mpt=uo%3D8">https://itunes.apple.com/us/app/simpletip-tip-calculator/id1187500689?ign-mpt=uo%3D8</a> )</li>
<li>Bandbiz (<a href="https://www.mybandbiz.com/">https://www.mybandbiz.com/</a>)</li>
<li>Weight Loss Tips &#8211; Diet Recipes (<a href="https://play.google.com/store/apps/details?id=diet.cordova.hellocordova">https://play.google.com/store/apps/details?id=diet.cordova.hellocordova</a>)</li>
<li>How Much Did I Smoke? (<a href="https://itunes.apple.com/us/app/how-much-did-i-smoke/id513648441?mt=8&amp;ign-mpt=uo%3D8">https://itunes.apple.com/us/app/how-much-did-i-smoke/id513648441?mt=8&amp;ign-mpt=uo%3D8</a>)</li>
</ul>
<p><img loading="lazy" decoding="async" class="wp-image-7451 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/apps_fw7.jpg" alt="" width="661" height="165" /></p>
<p>Wie man erkennt, sind diese genauso wie das Framework, nicht sehr bekannt. Wie schon erwähnt wurde, wird dieses Framework hauptsächlich für Prototyping verwendet. Wenn man eine richtige .apk Datei aus den HTML-Files herausspielen möchte, kann man dies mittels PhoneGap von Adobe machen. Wenn man einen gratis Adobe Account besitzt, kann man die Framework7-Daten hochladen und eine iOS und eine Android builden und herunterladen. Mit der PhoneGap Destop Applikation kann man auch einen lokalen Server erstellen um die Applikation live zu sehen.</p>
<p><strong>Framework7 vs. Ionic </strong></p>
<p><strong><img loading="lazy" decoding="async" class=" wp-image-7453 alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/ionic_fw7.png" alt="" width="230" height="81" /></strong></p>
<p>Wenn man Framework7 und Ionic vergleicht, ist Ionic bekannter als Framework7. Weiters basiert Ionic auf Angular und man verwendet TypeScript. Man kann sowie bei Framework7 auch Phonegap bei Ionic verwenden. Framework7 sollte man bei kleinen bis mittelgroßen Projekten mit Teams unter 10 Personen verwenden und Ionic bei großen Projekten bei einer Teamgröße über 10 Personen. Wenn man Ionic verwenden will, ist ein gewisses Know-How notwendig um ein Projekt umzusetzen (z.B. TypeScript-Kenntnisse). Bei Framework7 braucht man nur HTML, CSS und JS Skills um ein Projekt zu starten. Framework7 bietet auch eine sehr gute Performance und ist flexibel.</p>
<p><strong>Ein Projekt erstellen</strong></p>
<p>Gleich vor weg, es ist sehr leicht ein Projekt zu starten. Man lädt sich von dem GitHub Repository (<a href="https://github.com/framework7io/framework7">https://github.com/framework7io/framework7</a>) die Framework7-Files herunter und extrahiert das .ZIP. Von all den Dateien werden nur die Files im Dist-Ordner weiterverwendet. In diesem Ordner findet man die CSS (LESS) und JS Files. Diese bindet man in einem HTML-File ein und man kann gleich los starten. Mittels der Dokumentation (<a href="https://framework7.io/docs/">https://framework7.io/docs/</a>) kann man dann die jeweiligen Elemente in die Dokumente hineinkopieren und modifizieren. Wie schon erwähnt, kann man mittels der PhoneGap Desktop Applikation auch ein Framework7 Projekt starten und einen lokalen Server starten.</p>
<p>&nbsp;</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/framework-7-ein-html-framework/">Framework 7 – Ein HTML Framework</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>D3 anhand eines Beispiels verstehen</title>
		<link>https://mobile.fhstp.ac.at/studium/d3-anhand-eines-beispiels-verstehen/</link>
		
		<dc:creator><![CDATA[Olivia Wais]]></dc:creator>
		<pubDate>Mon, 11 Dec 2017 21:31:33 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=7423</guid>

					<description><![CDATA[<p>Um sich mit D3 auseinander setzen zu können, muss man seine Eigenheiten verstehen. Mithilfe eines Rechtecks zeigen wir euch, wie der Browser D3 Code liest und was in den einzelnen Schritten passiert. D3 steht für die drei Ds aus Data-Driven Documents. Es ist eine Library für JavaScript, welche mehrere Zeilen JS Code auf wenige reduziert, <a class="read-more" href="https://mobile.fhstp.ac.at/studium/d3-anhand-eines-beispiels-verstehen/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/d3-anhand-eines-beispiels-verstehen/">D3 anhand eines Beispiels verstehen</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Um sich mit D3 auseinander setzen zu können, muss man seine Eigenheiten verstehen. Mithilfe eines Rechtecks zeigen wir euch, wie der Browser D3 Code liest und was in den einzelnen Schritten passiert.</p>
<p>D3 steht für die drei Ds aus Data-Driven Documents. Es ist eine Library für JavaScript, welche mehrere Zeilen JS Code auf wenige reduziert, um Daten zu visualisieren. In diesem Tutorial werden wir mit der neuesten Version von D3 arbeiten: V4.</p>
<p>&nbsp;</p>
<h2><u>Was man vorher wissen sollte</u></h2>
<p>D3 ist kein Framework, in welchem man per Drag and Drop ein Histogramm erstellt. In anderen Sprachen wird, um ein Histogramm zu erstellen, eine dazugehörige Funktion aufgerufen. Anders jedoch bei D3. Hier werden Rechtecke und Achsen selbst gestaltet. So kann man Linien, Rechtecke und Kreise miteinander kombinieren und ganz neue Grafiken erstellen.  Um Grafiken in D3 erstellen zu können, braucht es ein Vorwissen in HTML5, CSS und JS.</p>
<p>Der Unterschied zwischen einer Excel und einer D3 Grafik ist, dass Ersteres ein eingefügtes Bild ist und Letzteres eine interaktive Grafik sein kann. Man kann diese Grafik auch wie ein Video abspielen lassen oder damit interagieren.</p>
<p>Auf der <a href="https://github.com/d3/d3/wiki/Gallery">D3 </a>Seite finden sich viele Beispiele, wie diese sich bei Interaktionen verändern. Die in D3 erstellten Grafiken lassen sich animieren, damit interagieren und/oder werden in real-time verändert.</p>
<p>&nbsp;</p>
<h3><u>Scalable Vector Graphic</u></h3>
<p><a href="https://www.w3schools.com/html/html5_svg.asp">Scalable Vector Graphic</a> (SVG) ist ein Tag im HTML Block, welcher eine Vektorgrafik beschreibt. In diesem Tag ist also eine Grafik implementiert und kein Bild. Das &lt;svg&gt; &#8211; Element kann mittels JavaScript im DOM als Objekt angegriffen und verändert werden. Mit Hilfe von CSS kann die Grafik formatiert und mittels JS animiert und transformiert werden.</p>
<p>SVG ist immer das erste und größte Element einer D3 Grafik. Man kann also sagen, ohne SVG gibt es auch keine D3 Grafiken. In SVG werden keine anderen HTML-Elemente gespeichert. Es ist rein für grafische Einträge gedacht. Wir nutzen somit D3 um Figuren und Linien in einem &lt;svg&gt; Element hinzuzufügen.</p>
<p>&nbsp;</p>
<h2><u>So let’s begin &#8211; D3 in JavaScript einbinden</u></h2>
<p>Es gibt mehrere Möglichkeiten D3 in JS einzubinden. In diesem Tutorial werden wir jedoch den Code in einem File speichern um auch offline damit arbeiten zu können. Es steht jedem frei, ob man es auf diese Weise macht, oder auf eine URL referenziert.</p>
<p>Zu allererst erstellen wir eine <em>index.html</em> und CSS Datei. Ein zusätzliches File wird erstellt und wird <em>d3.v4.js</em> genannt. Auf der dieser &#8211; <a href="https://d3js.org/d3.v4.js">Webseite</a> –  könnt ihr dann den Code in die Datei speichern. Ein letztes File wird erstellt und wird <em>shapes.js</em> genannt. Um auf all diese Files zugreifen zu können, referenzieren wir auf der HTML Seite auf sie. Wichtig ist hier die Reihenfolge, in der wir auf die Files referenzieren, damit der Browser die Grafiken lesen kann.</p>
<p><img loading="lazy" decoding="async" class="wp-image-7425 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/bild1.png" alt="" width="393" height="177" /></p>
<p>&nbsp;</p>
<h3><u>Code verstehen anhand eines Rechtecks </u></h3>
<p>Es gibt einige Zeilen an Codes, die uns am Anfang Kopfzerbrechen bereiten. Genauso verhält es sich mit dieser hier:</p>
<p><img loading="lazy" decoding="async" class="wp-image-7426 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/D3JS_2.png" alt="" width="256" height="61" /></p>
<p>&nbsp;</p>
<p>Um diesen Code zu verstehen, bauen wir uns 3 Rechtecke im File <em>shapes.js. </em></p>
<ul>
<li>Zuerst geben wir unsere Daten ein – ein Array in der Größe von 3 Werten.</li>
</ul>
<p><img loading="lazy" decoding="async" class="wp-image-7427 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/D3JS_3.png" alt="" width="320" height="31" /></p>
<p>&nbsp;</p>
<ul>
<li>Dann erstellen wir eine Variable svg und greifen mittels JS mit D3 auf body zu, fügen ein svg hinzu und geben dem svg eine Höhe und Breite von 100%.</li>
</ul>
<p><img loading="lazy" decoding="async" class="wp-image-7428 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/D3JS_4.png" alt="" width="848" height="24" /></p>
<p>&nbsp;</p>
<p>Um D3 zu verstehen sind die nächsten Zeilen sehr wichtig. Deswegen gehen wir sie Schritt für Schritt durch.</p>
<p><img loading="lazy" decoding="async" class="wp-image-7429 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/D3JS_5.png" alt="" width="298" height="71" /></p>
<p>&nbsp;</p>
<ul>
<li>In der ersten Zeile des Codes, möchte D3 auf alle Rechtecke im SVG zugreifen. Würde man den Code nur mit dieser Zeile im Browser ausgeben wollen, würden wir eine selection mit einem Array der Länge Null sehen – sprich nichts.</li>
<li>In der nächsten Zeile <em>.data(dataArray) </em> weiß der Browser, dass 3 Werte im dataArray stehen = Daten. Da jedoch noch keine Rechtecke vorhanden sind, erstellt er eine sogenannte <em><u>enter selection</u></em> und darin speichert er 3 placeholders (für unsere 3 Werte aus dem dataArray). Dies alles ist für uns nicht sichtbar. Zusätzlich erstellt D3 auch eine <em><u>exit selection </u></em>, wiederum nicht sichtbar. Diese exit selection stellt sicher, dass sollten sich 4 Rechtecke im Browser befinden, wir jedoch nur 3 Werte aus dem dataArray bekommen, das vierte Rechteck nicht mehr befüllt wird. Diese kleine Zeile bindet unsere Daten an die grafischen Elemente.</li>
<li>Als nächstes bindet D3 Rechtecke an die <em><u>enter selection</u></em>, die bis jetzt nur 3 placeholders („undefined“) beinhaltet hat. Zuvor wusste der Browser nicht, welche Form wir zur Darstellung unserer Daten auswählen werden. Zwar haben wir in der ersten Zeile schon angedeutet, dass wir alle Rechtecke auswählen wollen, aber hier wird nochmals explizit die Form gestaltet. Zusätzlich werden diese Rechtecke mit den Daten aus dataArray verbunden und dem DOM übermittelt. Trotz allem sehen wir jedoch nichts im Browser.</li>
</ul>
<p>&nbsp;</p>
<h3>Attribute</h3>
<p>Ohne Attribute werden die Rechtecke nicht im Browser erscheinen. Jede Form in D3 hat andere wichtige Attribute, die nicht fehlen dürfen, um im Browser dargestellt werden zu können.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="wp-image-7430 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/D3JS_6.png" alt="" width="649" height="201" /></p>
<p>&nbsp;</p>
<p>Das ist der ganze Text, der 3 Rechtecke im Browser darstellt.</p>
<ul>
<li><em>.attr(„height“, function(d,i){return d*15;})</em>  &#8211; Die Höhe variiert nach jedem Durchgang des Codes (3 Mal weil dataArray 3 Werte drinnen hat). Das <em>d</em> steht für data und <em>i</em> für unseren Abstand. Diese könnt ihr gerne auch anders benennen. So holt sich diese Funktion nur die Daten und multipliziert sie mit 15 = 3 verschieden große Rechtecke.</li>
<li>Die Position auf der x-Achse wird mit jedem neuen Rechteck um *60 verschoben.</li>
<li>Die Position auf der y – Achse ist uns hier wichtiger. Würden wir nur <em>„100“ </em>als zweites Attribute schreiben, würden die Balken aussehen, als stünden sie bei y=100 kopfüber. Das ist nicht falsch, jedoch scheint es für uns nicht richtig, weil wir Balken anders lesen, als der Browser.</li>
</ul>
<p>So sieht das Ergebnis mit der letzten Codezeile aus:</p>
<p><img loading="lazy" decoding="async" class="wp-image-7432 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/12/D3JS_8-265x400.png" alt="" width="136" height="205" /></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/d3-anhand-eines-beispiels-verstehen/">D3 anhand eines Beispiels verstehen</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
