<?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 Martin Bertschler - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/dm141505/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/dm141505/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Wed, 27 Jan 2016 16:55:12 +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 Martin Bertschler - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/dm141505/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Moderne Mobile Voting Systeme</title>
		<link>https://mobile.fhstp.ac.at/development/moderne-mobile-voting-systeme/</link>
		
		<dc:creator><![CDATA[Martin Bertschler]]></dc:creator>
		<pubDate>Wed, 27 Jan 2016 16:55:12 +0000</pubDate>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[android]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6069</guid>

					<description><![CDATA[<p>Mobile Voting-Systeme werden in vielen Anwendungsfällen genutzt, bei denen eine schnelle und einfache Abstimmung erwünscht ist. Bei vergangen Veranstaltungen der FH St. Pölten wurde ein System eingesetzt, das ein Onlineservice verwendet um über eine Mehrwertnummer SMS zu empfangen, die für manche User Kosten verursachte. Weiters war beim alten System die Auswertung des Votings nur in Echtzeit <a class="read-more" href="https://mobile.fhstp.ac.at/development/moderne-mobile-voting-systeme/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/moderne-mobile-voting-systeme/">Moderne Mobile Voting Systeme</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Mobile Voting-Systeme werden in vielen Anwendungsfällen genutzt, bei denen eine schnelle und einfache Abstimmung erwünscht ist. Bei vergangen Veranstaltungen der FH St. Pölten wurde ein System eingesetzt, das ein Onlineservice verwendet um über eine Mehrwertnummer SMS zu empfangen, die für manche User Kosten verursachte. Weiters war beim alten System die Auswertung des Votings nur in Echtzeit möglich, und für jedes Event musste die Applikation umgebaut werden.</p>
<p>Um dieses Problem für die FH St. Pölten zu lösen wurde ein Konzept für ein Mobile Voting System entwickelt. Das Konzept sieht vor dass die FH die volle Kontrolle über alle Komponenten des Voting Systems hat, um alle Nachteile des alten Systems auszugleichen.</p>
<p><span id="more-6069"></span></p>
<p>&nbsp;</p>
<h1>SMS-Voting für die FH St. Pölten</h1>
<p>Um die Durchführung von SMS Abstimmungen zu vereinfachen wurde ein Voting System für die FH St. Pölten entwickelt. Die Features sind zwar speziell auf die Anforderungen der Events der FH St. Pölten angepasst, aber allgemein genug gehalten um für viele verschiedene Abstimmungen in Zukunft benutzbar zu sein. Die Applikation besteht aus mehreren Komponenten.</p>
<p>&nbsp;</p>
<h2>SMS Relais App</h2>
<p>Die erste Komponente ist eine native Android App, die vom Handy empfangene SMS einliest und an einen Webserver weiterleitet. Diese Applikation wurde speziell für diesen Anwendungsfall programmiert. Die FH nutzt dafür eine normale Handynummer und eine SIM-Karte wie man sie auch als Privatperson bekommen würde. Diese SIM wird in ein Android Handy eingesetzt, das dann die Voting SMS für ein Event empfängt.</p>
<p><img fetchpriority="high" decoding="async" class="wp-image-6074 size-medium alignnone" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/01/Screenshot_2016-01-20-09-10-08-169x300.png" alt="Screenshot_2016-01-20-09-10-08" width="169" height="300" /></p>
<p>In der Applikation wird ein Start und Endzeitpunkt für die Weiterleitung von SMS eingestellt und eine Server URL eingegeben. Über ein eingegebenes Secret kann am Server überprüft werden ob eine Nachricht auch wirklich vom Voting Handy stammt oder von einem Dritten gefälscht wird. Weiters kann neben einer Statusanzeige die Übertragung in der App angehalten und wieder fortgesetzt werden. Mit diesem System können tausende SMS pro Event empfangen werden, in den letzten Einsätzen wurde mit bis zu 6 SMS/Sekunde empfangen.</p>
<p>&nbsp;</p>
<h2>Admin Tool</h2>
<p>Vor dem Event müssen natürlich auch Projekte angelegt werden, für die gevotet werden kann. Dafür wurde eine Webapplikation entwickelt, die es jedem ermöglichen soll ein Event mit Voting zu erstellen.</p>
<p><img decoding="async" class="wp-image-6072 size-medium alignnone" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/01/Screen-Shot-2016-01-27-at-16.45.17-300x214.png" alt="Screen Shot 2016-01-27 at 16.45.17" width="300" height="214" /></p>
<p>In diesem Administrations Tool können verschiedene Events angelegt werden, die einen Start- und Endzeitpunkt besitzen und aus mehreren Kategorien bestehen können. Für ein Event können dann Projekte angelegt werden. Ein Projekt wird dann einer Kategorie zugewiesen und mit einem Kürzel versehen das den Voting Zeichen entspricht. Über diese Webapplikation wird nach der Abstimmung auch die finale Auswertung durchgeführt. Die Auswertung erlaubt zurzeit nur eine einzige Stimme für ein Projekt pro Handynummer, um die Abstimmung fair zu gestalten.</p>
<p>&nbsp;</p>
<h2>Mobile Voting App</h2>
<p>Für den Golden Wire Award wurde weiters ein Protoyp für das Jury Voting als mobile Web Applikation erstellt, die auf Smartphones optimiert ist. Dabei wird nicht nur für ein bestimmtes Projekt eine Stimme gegeben, sondern eine Bewertung von 1-5 Sternen abgegeben. Die Ergebnisse dieses Votings werden ebenfalls an die Webapplikation übertragen, und am Ende mit dem SMS Stimmen gemeinsam ausgewertet.</p>
<p><img decoding="async" class="wp-image-6073 size-medium alignnone" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/01/Screen-Shot-2016-01-27-at-16.44.46-300x206.png" alt="Screen Shot 2016-01-27 at 16.44.46" width="300" height="206" /></p>
<p>&nbsp;</p>
<h2>Zukünftige Entwicklungen</h2>
<p>Im Rahmen der Entwicklung des Systems wurde auch ein Konzept für zukünftige Weiterentwicklungen erstellt. Diese Änderungen könnten das Abstimmen über eine Webapplikation am Smartphone ermöglichen, bei der sich Nutzer mit ihrer Handynummer anmelden müssen, danach einen Token zugesandt bekommen, ähnlich einem SMS-TAN beim online banking. Mit diesem Token kann das System nun sicher gehen dass jedes Handy nur einmal abstimmen kann. Nachdem der Nutzer über diesen Weg identifiziert ist, kann die Abstimmung über eine herkömmliche Webapplikation gestaltet werden. Das würde in Zukunft bessere interaktive Abstimmungen ermöglichen, die weit über die Limitierungen von klassischem SMS Voting hinausgeht.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/moderne-mobile-voting-systeme/">Moderne Mobile Voting Systeme</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Go auf Android und iOS</title>
		<link>https://mobile.fhstp.ac.at/development/go-auf-android-und-ios/</link>
		
		<dc:creator><![CDATA[Martin Bertschler]]></dc:creator>
		<pubDate>Tue, 27 Oct 2015 10:53:19 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Trends]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5707</guid>

					<description><![CDATA[<p>Wenn eine App für mehrere Plattformen nativ erscheinen sollen, ist es oft wünschenswert nur das native Userinterface in der Zielsprache zu schreiben und möglichst viel Business Logic nur einmal zu schreiben. Es gibt einige Programmiersprachen die dieses Problem zu lösen. Zum einen gibt es natürlich Javascript, allerdings werden Apps in denen Javascript verwendet wird eher als hybrid <a class="read-more" href="https://mobile.fhstp.ac.at/development/go-auf-android-und-ios/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/go-auf-android-und-ios/">Go auf Android und iOS</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Wenn eine App für mehrere Plattformen nativ erscheinen sollen, ist es oft wünschenswert nur das native Userinterface in der Zielsprache zu schreiben und möglichst viel Business Logic nur einmal zu schreiben. Es gibt einige Programmiersprachen die dieses Problem zu lösen. Zum einen gibt es natürlich Javascript, allerdings werden Apps in denen Javascript verwendet wird eher als hybrid Apps angesehen. Eine andere Methode ist das Xamarin Framework, das C# verwendet und auch auf allen großen mobilen Plattformen verwendet werden kann. Die Variante Programme in C/C++ zu schreiben wird oft von Spiel-Frameworks verwendet, da alle Betriebssysteme Wege bieten diesen nativen Low-Level Code auszuführen.</p>
<p><span id="more-5707"></span></p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/caution.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-5712" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/caution-300x212.png" alt="caution" width="300" height="212" /></a></p>
<p>Mit dem Release Version 1.5 der <a href="https://golang.org/">Go Programmiersprache</a> gibt es nun eine weitere Möglichkeit Code einmal zu schreiben und auf mehreren mobilen Betriebssystemen unverändert auszuführen. Dieses Feature ist einstweilen noch experimentell, trotzdem ist jetzt ein guter Zeitpunkt um dieses Feature einmal ausprobieren. Unterstützde Plattformen sind Android auf ARMv7 Prozessoren und iOS auf ARMv8 (64bit) Prozessoren (also alle iPhones ab 5s).</p>
<h1>Voll oder Teilweise Go App</h1>
<p>Es gibt 2 Varianten Go in nativen iOS und Android Apps zu verwenden.</p>
<h1><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-5713" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/gophercloud-292x300.png" alt="gophercloud" width="292" height="300" /></h1>
<h2>Komplette App in Go</h2>
<p>Der erste Ansatz ist es die ganze App in Go zu schreiben. Das bedeutet allerdings auch dass die APIs limitiert sind, die portabel zwischen Android und iOS sind. Das sind zum Beispiel OpenGL, Audio, Sensor und ähnliche APIs die zum Beispiel auch für Android NDK (Native Dev Kit = C/C++ Apps). Das kann mit dem Go Build Tool erreicht werden, das das generieren der App für den User übernimmt.</p>
<h2>Teil der App in Go</h2>
<p>Der zweite Ansatz ist das eine normale native App für die Plattform entwickelt wird, und nur ein Teil der App als Library eingebunden wird. Dazu wird die Go Library so kompiliert dass über eine C API auf die Go Funktionen zugegriffen werden kann. In einem zweiten Teilschritt generiert das gomobile bind Tool bindings für die jeweilige Zielsprache Java oder Objective-C. Dabei gibt es einige Limitierungen der Typen die die Objekte beinhalten dürfen und Funktionen als Argumente bekommen und zurückgeben können. Zum Beispiel ist es nicht möglich Unsigned Integers zu verwenden. Da Java dafür kein Equivalent bereitstellt. Der einzige Array Typ der verwenden kann ist ein Byte Array. Arrays oder Hashmaps mit anderen Typen sind noch nicht untertützt, befinden sich allerdings in Entwicklung.</p>
<h1>Dokumentation</h1>
<p>Details wie komplette Apps oder Libraries programmiert werden können sind unter diesen Links zu finden:</p>
<p>Der Code ist hier verfügbar: <a href="https://github.com/golang/mobile">github.com/golang/mobile</a></p>
<p>Allgemeine Dokumentation: <a href="https://github.com/golang/go/wiki/Mobile">Go Mobile Wiki</a></p>
<p>Dokumentation für pure Go Apps: <a href="https://godoc.org/golang.org/x/mobile/app">Go App Doku</a></p>
<p>Dokumentation für Go Libraries: <a href="https://godoc.org/golang.org/x/mobile/cmd/gobind">Go Bindings Doku</a></p>
<h1>Benchmark</h1>
<p>Für meine Projekte ist die Methode bei der ein Teil der App als Go Library eingebunden wird die interessanteste, da ich gerne Apps mit nativen User Interface Komponenten programmieren würde, aber auch möglichst viel Business Logic Code zwischen den Plattformen und eventuell auch dem Server teilen würde um ihn nur einmal programmieren und testen zu müssen. Um Go Libraries in Apps zu evaluieren Abschluss habe ich die Demoapplikationen aus dem Wiki (Link oben bei der Dokumentation) für meine Zwecke erweitert und ein paar Tests durchgeführt. Dazu haben ich im Go Code eine Funktion eingefügt die die Zahlen von 0 bis 100000 addiert und zurückgibt. Eine zweite exportierte Funktion gibt direkt die Zahl 2 zurück und ist deswegen zum testen der Latenz zwischen Objective-C/Java und Go geeignet.</p>
<h2>Resultate</h2>
<p>Als Testgerät wurde ein Samsung Galaxy S6 und der XCode Simulator mit einem iPhone 6s verwendet. Das erste laden der Library beim Start der Applikation benötigt ca 7-15ms. Go Code läuft so schnell wie es auf der Hardware direkt laufen würde, der einzige Overhead ist die Latenz von Calls zwischen Go und Java. Diese liegen bei ca. 30 &#8211; 100µs. Das bedeutet dass bei einer App die mit der höchsten Bildwiederholrate 60fps läuft mindestens 160 mal eine Go Funktion während der Renderingzeit eines Frames augerufen werden kann. Dabei wird allerdings noch keine wirkliche Arbeit erledigt. Für die Praxis lässt sich schließen dass die Anzahl der Calls zwischen den Sprachen möglichst klein gehalten werden soll, im Idealfall also nur 1 Call pro Frame. Obwohl es sich hier um eine nicht vernachlässigbare Latenz handelt, sind Go Libraries ein sinnvoller Weg um den gleichen Code auf Android, iOS und dem Server/Desktop zu verwenden.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/go-auf-android-und-ios/">Go auf Android und iOS</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
