SMS unter der Lupe, ihre Funktion heutzutage

Angesichts der zunehmen stärker werdenden Konkurrenz durch Messaging-Dienste wie Whats App, Skype oder Viber für Smartphones wirkt es verwunderlich, dass der Versand von SMS-Nachrichten nach wie vor boomt. Laut aktueller Hochrechnungen der  Bundesnetzagentur werden im Jahr 2011 rund 55 Milliarden Kurznachrichten via SMS ihre Empfänger erreichen. Der Grund dafür liegt nach Meinung der Experten in der Vertragsgestaltung des jeweiligen Anbieters. weiterlesen…

Javascript ersetzen aller css background-images durch Retina-Bilder

Wenn man vor dem Problem steht, dass dynamisch generierte CSS background-images verwendet werden, um Bilder auf einer Webseite darzustellen und diese dann auch für Retina Displays gut aussehen sollen, kann man folgendes Skript verwenden. Es überprüft zusätzlich mittels eines Ajax Requests, ob die Bilder vorhanden sind/existieren.

Voraussetzung ist, dass eine Namenskonvention für nicht-Retina Bilder und Retina verwendet wird wie z.B.:

für nicht-Retina Bilder

und

für Retina Bilder

<!--Retina Fix for dynamic background images-->
        <script type="text/javascript">
            function isRetinaDisplay()
            {
                var dpr = 1;
                if(window.devicePixelRatio !== undefined) dpr = window.devicePixelRatio;
                return dpr >= 2;
            }

            var notRetinaString = "@1x";
            var retinaString = "@2x";

            $(document).ready(function() {
                //if we have a retina display
                if(isRetinaDisplay())
                {
                    //select all elements having background images
                    var $elementsWithBackground = $('*').filter(function() {
                        if (this.currentStyle)
                            return this.currentStyle['backgroundImage'] !== 'none';
                        else if (window.getComputedStyle)
                            return document.defaultView.getComputedStyle(this,null)
                                .getPropertyValue('background-image') !== 'none';
                    });
                    //replace their background-image with retina images
                    $elementsWithBackground.each(function( index ) {
                        $backGroundImage = $(this).css('backgroundImage');
                        /*console.log($backGroundImage);*/
                        //when it is no retina image
                        if($backGroundImage.indexOf(notRetinaString) !== -1)
                        {
                            //replace with retina image
                            $newBackgroundRetinaImage = $backGroundImage.replace(notRetinaString,retinaString);
                            $newBackgroundRetinaImageUrl = $newBackgroundRetinaImage.replace('url("','').replace('")','');
                            //check if retina file exists
                            var $myThis = this;
                            $.ajax({
                                url:$newBackgroundRetinaImageUrl,
                                type:'HEAD',
                                cache: true,
                                success:function() {
                                    console.log($newBackgroundRetinaImage);
                                    $($myThis).css('backgroundImage', $newBackgroundRetinaImage);
                                },
                                error:function() {
                                    console.log("no retina image found for: " + $backGroundImage);
                                }
                            });

                        }
                    });
                }
            });
        </script>

Javascript überprüfen auf Retina-Display Funktion

Um zu überprüfen, ob ein Gerät mit Retina-Display (neues iPhone oder Mac Book) gerade auf der Seite surft, kann man die handliche Funktion verwenden:

            function isRetinaDisplay()
            {
                var dpr = 1;
                if(window.devicePixelRatio !== undefined) dpr = window.devicePixelRatio;
                return dpr >= 2;
            }

ActionBarSherlock eigenes Design

ActionBarSherlock ist ein Framework für Android um eine ActionBar implementieren zu können vor der Android Version 3.0, bei der es eine native ActionBar gibt.

Beispiel für Actionbar mit eigenem Design unter Android 2.3.3

Außerdem kann man sehr viele Funktionen nutzen,die selbst die native ActionBar nicht möglich macht, eine Übersicht kann man sich am besten verschaffen durch die Installation der Sample App auf einem Android Device.

Eine Schwierigkeit des Frameworks besteht in der Individualisierung des Designs, dies ist sehr schwer möglich ohne den Online Style Generator für ActionBarSherlock. Mit diesem lässt sich viel Zeit sparen, absolut zu empfehlen!

Aktiviertes Suchfeld in Actionbar

 

günstigste Hardware für iOS Entwicklung: Mac Mini Tuning

Wenn man man vorhat in die iOS Entwicklung einzusteigen und seine eigene App programmieren will, benötigt man zwingend einen Mac, der nicht gerade billig ist. Im folgenden Artikel beschreibe ich, wie ich mir für 350€ (November 2012) einen Mac für die Entwicklung meiner iPhone Apps gekauft und diesen für Xcode aufgerüstet habe.

Für die iOS Entwicklung für iPhone und iPad benötigt man zwingende einen Mac mit Intel Prozessor. Leider sind diese nicht besonders günstig zu haben :(

Außerdem braucht man für die Programmierung zwingend Xcode als IDE, um auf iPhone und iPad zu testen und die App in den Store zu bringen.

Die neuste Version Xcode (4.5 aktuell) wiederum benötigt zwingend Mac OS X 10.7, was als Mindestanforderungen 2GB RAM und mindestens eine Intel Core 2 Duo benötigt (Achtungen, einen Intel Core Duo reicht nicht aus!).

Als günstigste Alternative habe ich mir deshalb einen gebrauchten Mac Mini gekauft mit

weiterlesen…

Vergleich von Augmented Reality Frameworks für Android

project nameMixareDroidARAndARvuforiawiktitudeandroid-augment-reality-framework
total ratingBCDA-B+F
project urlMixareDroidARAndARvuforiawiktitudeandroid-augment-reality-framework
licenceGNU GPL v3GNU GPL v3GNU GPL v3Anonymous Data collection by Qualcomm,
Attribution licence, the logo must be shown ether in loading, splash or credit screen license
not free, 599€ per App PricingApache License 2.0
version0.9.2??1.5.9.?initial version
latest build22.08.2012??22.02.2012?01.12.2011
documentationLinkBlog?Link?Link
tested Devices/Android Versionokno informationgoodvery good?
tested Devices URLLinkLinkAndroid 2.2 and newer, iOS 4 & 5.?
getting startedLinkLinkLinkLink?
Sample VideoLinkhttp://youtu.be/MHkobjWqLA8Link
sample appLinkLinkLinkLink and Link
special featuresespecially for 3D Objects (with commercial licence)for ios and androidruns in webview (like phonegap), easy implementation for android, ios etc but performance issues may occur, very good customizable
conclusionactive community and steady buildsfew documentation and no information about tested devicesprojects is not maintained any morevery good documentation and device support, critical licence and complex intital setupnot free and few informations on the website, might have performance issues but easy to implement with HTML5project is not maintained any more

Fazit:

Ich habe mich für Mixare entschieden, welches  sehr gut gecodet, aber weniger gut dokumentiert ist. Ist ist sehr einfach möglich seine eigenen Daten oder Wikipedia Daten über die Kamera zu legen und gleichzeitig dieselben Daten auf Google Maps als Marker anzuzeigen.

Vuforia erscheint für die Entwicklung von Android/iPhone Lösungen der geeignete Kanditat zu sein, jedoch wird in der Lizenz verlangt, dass Benutzerdaten an den Qualcomm Server gesendet werden und der User darüber informiert werden muss:

Auszug aus der Lizenz von Vuforia

“You must inform end-users of your application that certain types of anonymous usage data is collected by the Vuforia SDK and sent back to Qualcomm servers.”

“(i) the collection by QUALCOMM and/or its affiliates of Statistics from the Software (including but not limited to: (a) information about the end users’ devices such as device unique identifier, make, model, operating system name and version and kernel version, (b) information about our Software used to create your software or augmented reality end user application such as the SDK version and device profile, and (c) information about your software or augmented reality application and its use such as settings (e.g., camera resolution settings, configuration settings), start and stop dates and times, camera on/off events, target image obtained/lost events, and other general usage information (collectively “Statistics”)).”