{"id":567,"date":"2009-10-31T15:11:46","date_gmt":"2009-10-31T13:11:46","guid":{"rendered":"http:\/\/hjacob.com\/blog\/?p=567"},"modified":"2016-12-12T16:30:25","modified_gmt":"2016-12-12T15:30:25","slug":"adobe-air-2-multi-touch-barrierefreiheit-sparsamer","status":"publish","type":"post","link":"https:\/\/hjacob.com\/blog\/adobe-air-2-multi-touch-barrierefreiheit-sparsamer\/","title":{"rendered":"AIR 2.0: Ressourcensparsamer und Multi-Touch"},"content":{"rendered":"<p>Der Adobe Mitarbeiter Christian Cantrell hat in seinem Blog die neuen Funktionen des <b>bald erscheinenden AIR 2.0<\/b> vorgestellt. Mit Adobe AIR lassen sich normale Webseiten und allen voran nat\u00fcrlich Flash Anwendungen als Desktop Anwendungen speichern lassen &#8211; und das plattform\u00fcbergreifend. Wer AIR noch nicht kennt, kann sich auf der <a href=\"http:\/\/www.adobe.com\/de\/products\/air\/\" title=\"Adobe: AIR Produkt-Seite\" rel=\"external\">offiziellen Produktseite<\/a> oder bei <a href=\"http:\/\/de.wikipedia.org\/wiki\/Adobe_Integrated_Runtime\" rel=\"external\" title=\"Wikipedia: AIR \/ Adobe Integrated Runtime\">Wikipedia<\/a> ein Bild machen. <\/p>\n<p>Vor allem bei Twitter Anwendungen erfreut sich AIR bereits jetzt einer immer st\u00e4rkeren Bekanntheit. So sind die verbreiteten Anwendungen <a href=\"http:\/\/seesmic.com\/desktop.html\" rel=\"external\">Seesmic Desktop<\/a> und <a href=\"http:\/\/www.twhirl.org\/\" rel=\"external\">Twhirl<\/a> in Adobes Runtime verpackt.<\/p>\n<p>Nun erscheint also bald die Version 2.0 &#8211; und ich \u00fcbersetze einfach mal die Feature Liste ins Deutsche. Cantrell wei\u00dft darauf hin, <b>dass alle Features geplant sind<\/b> &#8211; was hei\u00dft, dass es unter Umst\u00e4nden einigen Features nicht gelingt in das finale Release zu gelangen.<\/p>\n<p><!--more Die Funktionen des neuen Adobe AIR 2.0 --><\/p>\n<h2>Funktionen von AIR 2<\/h2>\n<ul>\n<li><strong>Multi-touch<\/strong>: Touch Events verhalten sich \u00e4hnlich wie Mouse Events, aber bei Multi-touch Ger\u00e4ten (z.B. Microsoft Surface), kann man nun mehrere Touch Points gleichzeitig erkennen.\n<ul>\n<li>Multi-touch wird unterst\u00fctzt von:\n<ul>\n<li>Windows 7 und h\u00f6her.<\/li>\n<li>Ben\u00f6tigt Multi-touch Hardware (logisch).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Gesten<\/strong>: Anwendungen k\u00f6nnen auf Multi-touch Events <em>oder<\/em> auf Gesten (<i>Gesture events<\/i>) reagieren &#8211; allerdings nicht beides zur gleichen Zeit. Gesten sind quasi die Zusammenfassung von mehreren Multi-touch Events in einen Einzelevent.\n<ul>\n<li>Gesten werden unterst\u00fctzt von:\n<ul>\n<li>Windows 7 und h\u00f6her.<\/li>\n<li>Macs mit MacOSX 10.6 (<i>Snow Leopard<\/i>) und dar\u00fcber (mit multi-touch Trackpads).<\/li>\n<\/ul>\n<\/li>\n<li>Unterst\u00fctzte Gesten:\n<ul>\n<li><code>GESTURE_TWO_FINGER_TAP<\/code> (Zweifinger-Klick)<\/li>\n<\/ul>\n<ul>\n<li><code>GESTURE_PRESS_AND_TAP<\/code> (Ein Finger gedr\u00fcckt halten und mit dem anderen Klicken &#8211; eine verbreitete Geste bei Windows Ger\u00e4ten um Kontextmenus aufzurufen)<\/li>\n<\/ul>\n<ul>\n<li><code>GESTURE_PAN<\/code> (Zwei Finger zusammenziehen)<\/li>\n<li><code>GESTURE_ROTATE<\/code> (Drehen mit zwei Fingern)<\/li>\n<li><code>GESTURE_SWIPE<\/code> (Mit zwei Fingern wegschieben)<\/li>\n<li><code>GESTURE_ZOOM<\/code> (Zwei Finger auseinanderziehen)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Dateien mit ihrer verkn\u00fcpften Anwendung \u00f6ffnen<\/strong>: Die neue <code>File.openWithDefaultApplication<\/code> API erm\u00f6glicht es, Dateien mit dem jeweiligen Programm \u00f6ffnen, die der Anwender damit (lokal) verkn\u00fcpft hat. Dadurch wird es einfach plattform\u00fcbergreifend andere Programme anzusprechen, da es nun nicht mehr n\u00f6tig ist zu schauen, welches Betriebssystem der Benutzer hat und welche Programme er installiert hat.<\/li>\n<li><strong>OS Download Security Dialog<\/strong>: Die neue <code>File.downloaded<\/code> Eigenschaft l\u00e4\u00dft ein die AIR Application dem Betriebssystem mitteilen, dass eine Datei heruntergeladen wurde und l\u00e4\u00dft dieses die jeweilige Sicherheitsmeldung anzeigen, wenn der Benutzer die Datei \u00f6ffnen m\u00f6chte.\n<ul>\n<li>Unterst\u00fctzte System:\n<ul>\n<li>Windows XP SP2 und h\u00f6her.<\/li>\n<li>Mac OS 10.5 (Leopard) und h\u00f6her.<\/li>\n<li>(Keine Linux Unterst\u00fctzung, da solche Warnmeldungen bei Linux nicht vorhanden sind.)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Festplatten-Erkennung<\/strong>: Die neue Festplatten API erkennt nun alle gemounteten Disks (ungemountete ebenfalls) und kann diese auflisten, anzeigen welche ansprechbar sind und weitere Details zu den Platten anbieten. Darunter: verf\u00fcgbarer Speicherplatz, den Dateisystemtyp, ob es auswerfbar ist, ob man darauf schreiben kann, den Festplatten Buchstaben und den Namen der Festplatte.<\/li>\n<li><strong>Native Prozesse<\/strong>: Starten und Kommunikation mit nativen &quot;bandexternen&quot; Prozessen. Man kann seine eigene nativen executables zusammenstellen, oder executables ausf\u00fchren, von denen man wei\u00df, dass sie sich auf der jeweiligen Maschine befinden. Dieses Feature setzt voraus, dass die Anwendung mittels des nativen Installers installiert wurde und <b>nicht<\/b> via einer .AIR Datei (Adobe bietet Tools um native Installer zu erstellen).\n<ul>\n<li>Unterst\u00fctzte Installer-Arten:\n<ul>\n<li>OS X: DMG<\/li>\n<li>Windows: EXE<\/li>\n<li>Linux: Debian und Red Hat Package Manager<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>File Promises<\/strong>: File promises lassen Benutzer mittels Drag&amp;Drop mit Dateien, die entweder noch nicht existieren (und erstellt werden sollen) oder die auf einem entfernten Server liegen, hantieren. Daf\u00fcr wird eines Implementierung geben, die automatisch entfernte Dateien herunterl\u00e4dt und auf die lokale Position speichert (dort wo der Drop gelandet ist) und au\u00dferdem soll es m\u00f6glich sein, neue Dateien &#8222;on-demand&#8220; zu erstellen. Eine Video zu den File Promises gibts am Ende der Liste.<\/li>\n<li><strong>Server Sockets<\/strong>: Die neue <code>ServerSocket<\/code> API erm\u00f6glicht es zu beliebige Sockets zu \u00fcberwachen. Dadurch wird es m\u00f6glich mit anderen Anwendungen besser zu kommunizieren &#8211; zum Beispiel mit P2P Anwendungen, oder mit erweiterten Netzwerkprotokollen wie FTP, etc.<\/li>\n<li><strong>Datagram Sockets<\/strong>: Zu der bisherigen TCP Unterst\u00fctzung gesellen sich in AIR 2.0 nun auch UDP Sockets.<\/li>\n<li><strong>Sockets verschl\u00fcsseln<\/strong>: Sockets k\u00f6nnen jetzt mittels TLS\/SSL verschl\u00fcsselt werden.<\/li>\n<li><strong>IPv6 Unterst\u00fctzung<\/strong>.<\/li>\n<li><strong>Zugriff auf Low-Level Network Informationen<\/strong>: Das <code>NetworkInfo<\/code> Objekt l\u00e4sst den Entwickler die lokalen Netzwerk-Interfaces der Benutzer erkennen. Man bekommt Informationen zu ihren Aktivierungsstati, IP Adressen und den Anzeigenamen.<\/li>\n<li><strong>Sockets mit bestimmten Netzwerk-Interfaces verkn\u00fcpfen<\/strong>: Die neue <code>Socket.bind<\/code> Funktion kann dazu benutzt werden ein bestimmtes Netzwerk-Interface (welches mittels  der <code>NetworkInfo<\/code> API erkannt wurde) mit einem beliebigen Port zu verkn\u00fcpfen &#8211; so dass das Standard-Binding nicht mehr gilt. Somit wird es m\u00f6glich die beste Netzwerkverbindung f\u00fcr die speziellen Anforderungen der Anwendung zu w\u00e4hlen.<\/li>\n<li><strong>DNS Aufl\u00f6sung<\/strong>: Mit <code>DNSResolver<\/code> k\u00f6nnen folgende Daten abgerufen werden:\n<ul>\n<li>ARecord (IPv4 Adresse eines Hosts)<\/li>\n<li>AAAARecord (IPv6 Adresse eines Hosts)<\/li>\n<li>MXRecord: Mail Exchange Record eines Hosts<\/li>\n<li>PTRRecord: Hostname einer IP Adresse<\/li>\n<li>SRVRecord: Service Record eines Services<\/li>\n<\/ul>\n<\/li>\n<li><strong>Einstellbare HTTP Idle Timeouts<\/strong>. <code>URLRequest.idleTimeout<\/code> und <code>URLRequestDefaults.idleTimeout<\/code> lassen den Entwickler die Zeit (in Millisekunden) w\u00e4hlen, die eine Verbindung offen gehalten werden soll, bevor es anf\u00e4ngt Daten zu empfangen. Das ist zum Beispiel f\u00fcr <a href=\"http:\/\/en.wikipedia.org\/wiki\/Push_technology#Long_polling\" rel=\"external\">long polling<\/a> praktisch.<\/li>\n<li><strong>Lokales Audio Encoding<\/strong>: Audio Daten k\u00f6nnen direkt vom Mikrofon empfangen werden. Bisher mussten die Daten an einen Server geschickt werden um Sie von dort aus weiter zu verwenden, fortan l\u00e4uft das komplett clientseitig ab.<\/li>\n<li><strong>Globales Error Handling<\/strong>: Das globale Error Management l\u00e4sst den Entwickler alle unerfassten Fehlermeldungen (sowohl synchrone als auch asynchrone Fehler-Events) an einer Stelle des Codes abhandeln. (<a href=\"http:\/\/blogs.adobe.com\/cantrell\/archives\/2009\/10\/global_error_handling_in_air_20.html\" rel=\"external\">Mehr Informationen zum globalen Error Handling.<\/a>)<\/li>\n<li><strong>Barrierefreiheit<\/strong>: AIR 2.0 wird Screenreader so gut unterst\u00fctzten, wie es bereits Flash tut. (<a href=\"http:\/\/blogs.adobe.com\/koestler\/2009\/10\/adobe_max_and_accessibility_in.html rel=\"external\">Mehr Informationen zur Barrierefreiheit in AIR 2.0.<\/a>)<\/li>\n<li><strong><code>NativeWindow<\/code> und <code>Bitmap<\/code> Gr\u00f6\u00dfen erh\u00f6ht<\/strong>: Die maximale Gr\u00f6\u00dfe der <code>NativeWindow<\/code> und <code>Bitmap<\/code> Instanzen war bisher 2880&#215;2880 Pixel. In AIR 2.0 werden es 4094&#215;4094 Pixel sein.<\/li>\n<li><strong>Verbessertes Drucken<\/strong>.\n<ul>\n<li>Vektor-Druck auf Mac (bereits in FP 10).<\/li>\n<li>Unterst\u00fctzung von komplexen Transparenzen.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Verschachtelte Transaktionen<\/strong>. SQLite wird jetzt nested transactions unterst\u00fctzten.<\/li>\n<li><strong>Beim Herunterfahren: Beenden Event<\/strong>. In AIR 2.0 wird es den <code>Event.EXITING<\/code> Event geben, der ausgef\u00fchrt wird, wenn der Computer heruntergefahren wird. So kann man ungespeicherte Daten sichern.<\/li>\n<li><strong>WebKit Upgrades<\/strong>:\n<ul>\n<li>Nitro JavaScript Engine (SquirrelFish Extreme).<\/li>\n<li>CSS3 Module Unterst\u00fctzung (2D Transformationen, Transitions, Animationen, etc.).<\/li>\n<li>Scrollbar styling.<\/li>\n<li>Textumbr\u00fcche zwischen Spalten.<\/li>\n<li>Die neusten Canvas \u00c4nderungen.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Generelle Verbesserungen<\/strong>:\n<ul>\n<li>Geringerer CPU Verbrauch im Leerlauf (<i>Idle<\/i>).<\/li>\n<li>Geringerer RAM Verbrauch.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>File Promises<\/h2>\n<p>Im Anschluss zu der dieser Liste <a href=\"http:\/\/blogs.adobe.com\/cantrell\/archives\/2009\/10\/a_screencast_showing_file_promises.html\" rel=\"external\">ver\u00f6ffentlichte Christian Cantrell<\/a> noch ein Video (samt Beispielcode), welches auf die neuen File Promises eingeht.<br \/>\n<object width=\"560\" height=\"340\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/znXCkzfMHr4&#038;hl=de&#038;fs=1&#038;\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/znXCkzfMHr4&#038;hl=de&#038;fs=1&#038;\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"560\" height=\"340\"><\/embed><\/object><br \/>\nDen Beispielcode findet man bei <a href=\"http:\/\/code.google.com\/p\/s3e\/\" rel=\"external\" title=\"Google Code: Adobe AIR 2.0 Beispiel zu File Promises\">Google Code: S3E Beispiel<\/a>.<\/p>\n<h2>Vortrag zum Thema Barrierefreiheit in Adobe AIR<\/h2>\n<p>Michael A. Jordan und Daniel Koestler hielten auf der Adobe MAX einen Vortrag zur Barrierefreiheit in AIR (+ Flash) und wie man die Usability f\u00fcr Menschen mit Behinderung erh\u00f6hen kann.<br \/>\n<object width=\"425\" height=\"256\"><param name=\"movie\" value=\"http:\/\/images.tv.adobe.com\/\/swf\/player.swf\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><param name=\"FlashVars\" value=\"fileID=2471&#038;context=162&#038;embeded=true&#038;environment=production\"><\/param><embed src=\"http:\/\/images.tv.adobe.com\/\/swf\/player.swf\" flashvars=\"fileID=2471&#038;context=162&#038;embeded=true&#038;environment=production\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"425\" height=\"256\"><\/embed><\/object><\/p>\n<h2>Weitere Links zu Adobe AIR 2.0<\/h2>\n<ul>\n<li><a href=\"http:\/\/blogs.adobe.com\/cantrell\/archives\/2009\/10\/everything_new_in_air_2.html\" rel=\"external\" title=\"\"Exhaustive List of Everything That's New in AIR 2.0><b>Christian Cantrell<\/b> &#8211; Exhaustive List of Everything That&#8217;s New in AIR 2.0<\/a><\/li>\n<li><a href=\"http:\/\/blogs.adobe.com\/air\/2009\/10\/previewing_adobe_air_2_at_adob.html\" rel=\"external\" title=\"Previewing Adobe AIR 2 at Adobe MAX\"><b>Adobe<\/b> &#8211; Previewing Adobe AIR 2 at Adobe MAX<\/a><\/li>\n<li><a href=\"http:\/\/blogs.adobe.com\/cantrell\/archives\/2009\/10\/a_screencast_showing_file_promises.html\" rel=\"external\" title=\" A Screencast Explaining and Demoing File Promises\"><b>Christian Cantrell<\/b> &#8211; A Screencast Explaining and Demoing File Promises<\/a><\/li>\n<p><a href=\"http:\/\/blogs.adobe.com\/koestler\/2009\/10\/adobe_max_and_accessibility_in.html\" rel=\"external\" title=\"Adobe MAX and accessibility in AIR 2.0\"><b>Daniel Koestler<\/b> &#8211; Adobe MAX and accessibility in AIR 2.0<\/a><\/li>\n<li><a href=\"http:\/\/www.readwriteweb.com\/archives\/air_20_coming_soon_multitouch_audio_recording_less.php\" rel=\"external\" title=\"AIR 2.0 Coming Soon: Multitouch, Audio Recording, Less Memory\"><b>ReadWriteWeb<\/b> &#8211; AIR 2.0 Coming Soon: Multitouch, Audio Recording, Less Memory<\/a><\/li>\n<li><a href=\"http:\/\/www.downloadsquad.com\/2009\/10\/30\/adobe-air-2-0-hogs-less-memory-and-adds-multitouch-support\/\" rel=\"external\" title=\"Adobe AIR 2.0 will hog less memory and add multitouch support\"><b>DownloadSquad<\/b> &#8211; Adobe AIR 2.0 will hog less memory and add multitouch support<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Adobe ver\u00f6ffentlicht in K\u00fcrze die Version 2.0 von AIR. Erfahren Sie was die neue Version an neuen Features bietet.<\/p>\n","protected":false},"author":2,"featured_media":571,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[192,189,191,384],"_links":{"self":[{"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/posts\/567"}],"collection":[{"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/comments?post=567"}],"version-history":[{"count":9,"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/posts\/567\/revisions"}],"predecessor-version":[{"id":1365,"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/posts\/567\/revisions\/1365"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/media\/571"}],"wp:attachment":[{"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/media?parent=567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/categories?post=567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hjacob.com\/blog\/wp-json\/wp\/v2\/tags?post=567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}