i3Factory World

Your Iphone, iPad & Android Application Factory

Browsing Posts tagged Android

QuizItalia_Quiz-Italia_gioco-game-domande-trivia_icon-logoQuiz Italia is the new quiz game about Italy and its beauty and traditions, created by Escogitiamo, 100% Italian startup.
Download from the Android Google Play Store: https://play.google.com/store/apps/details?id=com.i3factory.quizitalia
Thanks to Quiz Italia you will test your knowledge about Italy in various fields: culture, traditions, food, lifestyle, landscapes and characters representing Italy. The game, in fact, is addressed to the people who loves Italy: Italian living abroad, people having Italian origins, or simply italian lovers.
During the game, you will live a virtual tour answering questions with three possible answers, text or images.
Each level consists of 10 questions and if you are wrong with an answer, you can continue until you finish your lives. At the end of certain levels, 10 – 30 – 55 – 78-100 and 106, you can take the certification with the average score. Let your Italian out! You can compare yourself with other players in the world, thanks to the current standings in real time.


Download Quiz-Italia from Android Market Store Google Play

Logo Google Android
If you get 100% of the correct answers in the first 10 levels you can download for free the full App. Otherwise you will continue buying the other levels of the game.
The App game is in 7 languages – Italian, English, French, German, Spanish, Portuguese, Dutch.
Quiz Italia provides the users of paying services that allow you to buy packages lives or more time available to respond. These services are not required or essential for the purposes of the game.
Quiz Italia is a fun and useful idea, to find out the Italian in you!
Start playing to discover how much you’re Italian!

IEC etech_app_review_magazine_i3ditorial_sistema-editoriale-iPad-AndroidThe International Commission of Electronics, based in Geneva (Switzerland) choose to use the  publishing system i3Editorial to publish its monthly magazine. Our free upload system of new magazines output is hosted on the Commission servers .

E-Tech is the magazine IEC, available on the web, in print and on mobile devices using iOS or Android app. It a monthly publication (10 issues / year) and includes relations with the global community IEC, other articles on specific technologies and news and events relating to the Commission.

The app is released for iPhone, iPad, iPod Touch and all Android devices.

badge_apple_storeDownload here App per iOS


badge_andoid_storeDownload Here App per Android



E-tech is the IEC magazine, available on the web, in print and on mobile devices via an iOS or Android app. It is published monthly (10 issues/year) and reports to the global IEC community and other readers on specific technologies, news and events concerning the Commission.

Articles may be reproduced in whole or in part provided the source, “IEC e-tech” is mentioned in full.

About the IEC
The IEC (International Electrotechnical Commission) is the world’s leading organization that prepares and publishes globally relevant International Standards for the whole energy chain, including all electrical, electronic and related technologies, devices and systems. The IEC also supports all forms of conformity assessment and administers three Conformity Assessment Systems that certify that components, equipment and systems used in homes, offices, healthcare facilities, public spaces, transportation, manufacturing, explosive environments and energy generation conform to them.

IEC work covers a vast range of technologies: power generation (including all renewable energy sources), transmission, distribution, Smart Grid & Smart Cities, batteries, home appliances, office and medical equipment, all public and private transportation, semiconductors, fibre optics, nanotechnology, multimedia, information technology, and more. It also addresses safety, EMC, performance and the environment. www.iec.ch


i3Factory Public Medical journals of CIC Edizioni Internazionali.

New customization multi-issue and multi-category of the system and Magazine Publishing Magazines for iPad, iPhone and Android i3editorial


This App is free to download and offers quick access to “CIC Edizioni Internazionali” journals.
You can freely browse our publications catalogue, select and download any issue and finally read it with our integrated reader.

i3Factory World  accompanies the Ministry of Labour through the i3Editorial Editorial System lands on the App Store.
An easy way to keep up to date on the world of work. Newsletter Cliclavoro is a monthly feature that collects the most important industry news, trends in the labor market, opportunities in Europe, interviews with personalities.

The newsletter is divided into 5 sections:

in opening
The interview
From Europe
From the Social Network

Keep up to date on market trends, with data and information enriched with links and multimedia content.
To follow in real-time news from the world of work CliComunica download the application.
Apple iPhone and iPad Version: https://itunes.apple.com/it/app/clicomunica/id582587332?mt=8

Android version: https://play.google.com/store/search?q=clicomunica&c=apps

When you decide to design an app you must always follow the basic principles of industrial design.
Many people think of this commissioning an app, but when you are describing the application and then how their idea can be translated by the user experience and graphic interface (User Interface & User Experience), they are unprepared and very often they hide behind phrases like “I do not know this is a job for engineers, lets see this to the technicians …see ye.”

Needless to say,  when the  “technicians” get to work these people, who have no concept to delegate, will begin to demand substantive changes giving advice and information of any kind and almost always only after the app came to final stage of its development.
And the well-known concept that the “technical”, and engineers, first build the core of the application and then they adapt the design and  they do the opposite, in spite of themselves, only if the commitment are valid and convincing, especially when this is decided right from beginning of the design.
In accordance with the approach of “you do that then we see”, wanted by professionals distracted and ill prepared, the final aesthetic result can be poor which seem as every engineer knows that, before starting to write code, you need to have clear UI principles with a description of the functions related to the experience of the user.

Some sophists can criticize me for using the word “user”, which sometimes is not very appealing if you think that the end users are just people, or individuals users. This difference in meaning of words is very clear to me, but for ease of communication and especially for translation needs prefer to use the word “user” or “users” instead of ‘”individual”.


10 principles for a good design of an app and for a product

First of all, to quote Steve Jobs, I propose a definition of design that has convinced me more:
“Design is the fundamental soul of a man-made creation that ends up expressing itself in successive outer layers of the product or service.”

Of course, the same principles Jobs was inspired by Dieter Rams, former Braun’s designers, who enumerated his 10 principles for good design of a product:


Dieter Rams e i suoi prodotti di design


  • Dieter Rams Ten Principles of “Good Design”
    1. Good Design Is Innovative : The possibilities for innovation are not, by any means, exhausted. Technological development is always offering new opportunities for innovative design. But innovative design always develops in tandem with innovative technology, and can never be an end in itself.
    2. Good Design Makes a Product Useful : A product is bought to be used. It has to satisfy certain criteria, not only functional but also psychological and aesthetic. Good design emphasizes the usefulness of a product while disregarding anything that could possibly detract from it.
    3. Good Design Is Aesthetic : The aesthetic quality of a product is integral to its usefulness because products are used every day and have an effect on people and their well-being. Only well-executed objects can be beautiful.
    4. Good Design Makes A Product Understandable : It clarifies the product’s structure. Better still, it can make the product clearly express its function by making use of the user’s intuition. At best, it is self-explanatory.
    5. Good Design Is Unobtrusive : Products fulfilling a purpose are like tools. They are neither decorative objects nor works of art. Their design should therefore be both neutral and restrained, to leave room for the user’s self-expression.
    6. Good Design Is Honest : It does not make a product more innovative, powerful or valuable than it really is. It does not attempt to manipulate the consumer with promises that cannot be kept
    7. Good Design Is Long-lasting : It avoids being fashionable and therefore never appears antiquated. Unlike fashionable design, it lasts many years – even in today’s throwaway society.
    8. Good Design Is Thorough Down to the Last Detail : Nothing must be arbitrary or left to chance. Care and accuracy in the design process show respect towards the consumer.
    9. Good Design Is Environmentally Friendly : Design makes an important contribution to the preservation of the environment. It conserves resources and minimises physical and visual pollution throughout the lifecycle of the product.
    10. Good Design Is as Little Design as Possible : Less, but better – because it concentrates on the essential aspects, and the products are not burdened with non-essentials. Back to purity, back to simplicity.


Of course it is easy to see that these principles will be adapted to the design of industrial products, but also for the design of applications, especially if they will be used on products that were built precisely according to the principles of good industrial design, as are all products Apple.

Design better, work less

Dieter Rams, creator of the 10 principles, has always expressed his approach to design with the phrase: “Weniger, aber besser” or “Less, but better.”
Minimalism, as well as being very elegant, is certainly the best way to allow all users-users to understand instinctively the product and its functionality and it makes the product itself, or the App, friendly to use (user friendly) and “pure”.

Heuristic evaluation

At this point I can only describe even the so-called heuristic evaluation.
The Heuristic Evaluation is a method of inspection that is performed exclusively by the experts of usability and allows to evaluate whether a set of general design principles have been applied correctly in the UI.
The guidelines (“Ten Usability Heuristics“) upon which this sort of evaluation were developed in 1990 by Jakob Nielsen and Rolf Molich and are designed for desktop software, but in this case, these principles are still valid for designed for touchscreen applications, such as the iPhone OS App for iPhone and iPad app for Android and Windows Mobile.


With the heuristic evaluation is detected then the fidelity and adherence to the principles of usability of the product, you can find on  Wikipedia ( http://en.wikipedia.org/wiki/Usability )

This method, which as we said, is a type of inspection, provides the only involvement of usability experts and does not call into question the end-users: for this reason it is easy to perform, cheap and fast but does not take into account the possible evolution of the needs of public and therefore, in my humble opinion, is certainly very useful but if it owns it in the limit of being inflexible, and the lack of flexibility can usually castrate the creative evolution.

The heuristic evaluation test , therefore consists in a series of navigation of the product which are carried out separately by each “expert”. During the test use, the software product is evaluated for both static aspects of the interface, such as window layouts, labels, buttons etc.., And for the dynamic aspects of interaction and (logical processes and flows).
After finishing the investigation, experts will gather in brainstorming, check the results and compare them with the principles provided in the guideline to reach some common conclusions.


The heuristic evaluation method is certainly very useful and often necessary, but it can also be done instinctively , if the “expert” who heads the app is an old business guru.

I doubt that when you follow these methods, very hard, is that you can easily fall in the risk assessments of caging in a bureaucratic system – with its sculpted rules – which severely limits the creative people, as suggested by the same creator iPhone and iPad, “think Different”.

Think Different is in fact always been the key to the success of each product in each sector.

Obviously none of the great success stories, “Think Different” model-based , has never ignored the existence of principles that Nielsen is one of the cultural foundations of this industry.
We must never ignore the basics, but even being locked in a few principles, how big and important they are, if you want to try to be innovative and revolutionary.

Guitar Tuner i3F on Android Market

I3Factory World has just published on Android Market a version of decorated  i3F  Guitar Tuner,

The guitar tuner is available on Google Store at the promotional price of 1.00 Euro

Available from this link Guitar Tuner i3F Android Version

Tune Your Guitar with Guitar Tuner i3F.
With option “A” scientific 432Hz

Welcome to World Music i3factory.com.
This electronic tuner you can easily tune your guitar.
Our tuner works with all types of guitars including 4-string Bass.

Plucks the strings and choose the note to be played and our tool will help you control the tension of the strings using a sophisticated algorithm for listening.

Tune Your Guitar with Guitar Tuner i3F.
The scientific 432Hz with option
Option Pitch

The Guitar Tuner i3F features original graphics Wired Motion.

Have fun and above all good music!


Sistema editoriale per piccoli medi e grandi editori che permette di pubblicare quotidiani, magazine, riviste ed altro utilizzando i documenti pdf dell'editore. i3F Editorial inoltre e' un'investimento minimo una tantum , una volta sola, e nn necessità di manutenzione e/o costi aggiuntivi. Tutto resta all'editore.
Publishing system for small, medium and large publishers Editorial i3F and also ‘an investment lifetime, once. Everything stays the publisher.

The starting price for our solution starts from 200 euros for small Authors, a customized solution for publisher wishes ,that contains all the features necessary for most small-medium-sized publishers, starts from 900 euros for medium Publishers and starts from  € 2000 for medium and large publishers.

We are also willing to consider solutions “Full Custom Made” for publishers who need to customize and adapt their models.

For Public Market solution Go on  i3F Editorial web site (http://i3factory.com/editorial)
Examples of App Publish with i3editorial:
(Note our customer pays no maintenance or costs both fixed and variable after the publication of the app):

Farmamese, rivista magazine sistema editoriale iPad iPhone & Android i3editorial.com


Da un’inchiesta, il Wall Street Journal (qui il link) rileva che alcune applicazioni iPhone e  per Android violano la privacy degli utenti di smartphone.

Il WSJ ci spiega come le apps per smartphone raccolgono e trasmettono dati sulle abitudini degli utilizzatori. Molte app non hanno politiche di privacy e non c’è molto che possiamo fare.

Un esame di 101 “apps” , giochi e altre applicazioni software per i telefoni iPhone e Android, ha mostrato che almeno 56 di queste trasmettono l’ ID univoco del dispositivo del telefono ad altre società senza la consapevolezza o il consenso degli utenti . Quarantasette apps trasmettono la posizione del telefono in qualche modo. Cinque inviano dati su età, sesso e altri dettagli personali a terzi.

I risultati rivelano lo sforzo di monitoraggio invadente, da parte delle imprese on-line,  per raccogliere dati personali di persone al fine di rimpolpare dossier dettagliati su di loro.

Tra le applicazioni testate, le applicazioni per iPhone risulta che trasmettano più dati di quanto facciano le applicazioni sui telefoni che utilizzano Android , il sistema operativo di Google Inc.
A causa delle dimensioni del test, non si sa se il modello è valido tra le centinaia di migliaia di applicazioni disponibili.

Ad esempio:
Entrambe le versioni di Android e iPhone di Pandora, una applicazione di musica pop, ha inviato età, sesso, luogo e id  telefono.
Entrambe le versioni di iPhone e Android di un gioco chiamato Paper Toss, in cui giocatori cercano di gettare palle di carta in un cestino, ha inviato il numero ID del telefono ad almeno cinque imprese di annunci. Grindr, un’applicazione per l’iPhone di incontro gay, ha inviato sesso, localizzazione e l’ID del telefono a tre società di annunci….

“Nel mondo della telefonia mobile, non c’è anonimato “, dice Michael Becker della Mobile Marketing Association. Un telefono cellulare è” sempre con noi. E ‘sempre acceso. ”

Sia Apple e Google sostengono di tutelare gli utenti dalle applicazioni che richiedono di ottenere il permesso prima di rivelare certi tipi di informazioni, come la posizione.

“Abbiamo creato una forte tutela della privacy per i nostri clienti, in particolare per quanto riguarda i dati basati sulla localizzazione”, afferma il portavoce di Apple Tom Neumayr. “Privacy e fiducia sono di vitale importanza”.

Prototipo interattivo creato con keynotopia

Interactive prototype created with keynotopia

Create interactive prototypes for iPhone, iPad, Android and Web applications in 30 minutes or less, using Apple Keynote & Keynotopia user interface templates.

Over 250 customizable user interface components, meticulously hand-crafted in Apple Keynote.
Click here to visit Keynotopia.


Video Keynotopya in 90 seconds:

Click here to visit Keynotopia.

From Keynotopia Website:
The 5-minute guide to prototyping with Keynote

Every day, we all get lots of good ideas. Most of us, unfortunately, don’t act on these ideas. We create high barriers to entry by imagining how much resources it requires, and how much we need to learn, in order to see it in action. If you know how to put together a prototype of your idea within one hour of getting it, your chances of moving forward are much higher than the ones who will sit down to do market research, write business plans, and hunt for investors. In fact, and this is based on personal experience, your chances of winning a client or receiving investment for your idea are much higher when you can express your ideas with a prototype that you can show along with your presentation. By using a simple, cheap and productive tool like Apple Keynote, you shrink the time required to create an interactive prototype to a matter of hours. And by using ready made prototyping assets, you even shrink that time to less than an hour. When prototyping becomes your second nature, you will no longer talk about your ideas; you’ll show them and test them.

This guide will help you prototype new ideas, or new features in an existing product, in an hour or less: you no longer need to wait for your design and development team to integrate a product feature in order to test it. Take screenshots of your existing product screens and place them in Keynote, then add some user interface components and show how the new feature will work. Bring in some users and see how they interact with the new feature,quickly iterate on it, then share your prototype with your team instead of writing long requirement documents.

The mindset

When creating interactive prototypes, the most important thing to remember is that it’s important to decide what to leave out, and what to include. Prototyping is like magic: you create the illusion of something that doesn’t exist, and that illusion happens in the minds of your audience. Everything else is a distraction. Your prototype is the illusion of your idea in action, and you must approach prototyping with the mindset of a magician or a hacker: it needs to demonstrate your ideas much better than words and pictures can, and it must not include any detail that won’t help that demonstration.

Step 1: Planning

To create your prototype, start by defining the different screens that your apps will show, and how the user will transition between them. I typically do this as a state diagram as shown below (Created on the iPad using Adobe Ideas). You can also create this in Keynote, or any other diagramming tool, but don’t waste too much time make a good looking flow diagram unless you will be using it in a presentation.

The diagram shown above is for a social media application that tracks multiple accounts, and allows me to post updates to multiple networks. As you can see, I represent application screens/states in ellipses and I annotate transitions/arrows with user actions that lead from one screen to another. You don’t need to get every detail of this diagram right, but spend 10-15 minutes going through the difference use cases – It will save you time adding them to the prototype later.

Step 2: Putting together the application screens

If you have a Keynotopia prototyping pack, you will notice it comes with two different files: a .kth, which is a theme file that you can place into <UserName> -> Library -> Application Support -> iWork -> Keynote –> Themes, and a .key file that you can directly open by double clicking. The theme file is ideal for those who want to keep all their assets and application screen in one file. It’s ideal if you’re using Keynote on a laptop, or if you want to move around with a single file that you can later modify on the fly using anyone’s machine (since all the assets you need are embedded in the master slides you use in that file) – The tradeoff is that your file is much bigger, and you need to switch between master/main slides more frequently. The second approach, which is the one I use frequently, is to open the .Key file and place it on a secondary monitor. Then you can quickly switch between your library slides on one monitor and your application slides on the second monitor.

Just like an artist paints distant objects first, then closer ones, start by creating the static components that will be shared among different states of your diagram. This is particularly useful because you will be moving them into master slides later on, and share them across these screens. For the diagram shown above, that would be the “Main Application”, as shown:

Since this is a prototype for an iPad app, I used the iPad Prototyping pack. I grabbed a panel from the panels slide and I pasted it twice roughly to occupy one third and two thirds of the screen. Since these panels are grouped objects, they rescale together nicely. I then grabbed a bunch of list item controls for the list on the left. Double clicking on each list item allows you to edit the text within. Then grabbed a button and search box for the second panel’s toolbar. The images shown in the screenshot are drag and drop from Google image search (don’t worry too much about copyrights, etc.. when you’re creating a prototype – as long as you get different images for the final product). The speech bubble shown is a standard shape in Keynote.

After putting together the main screen, you can move it to a master slide so that you can reuse it in different screens without having to duplicate it or edit it everywhere every time you make a change. To move your screen into a master slide, reveal master slides by dragging the little handler above slide thumbnails, select a blank slide and press CMD+D to duplicate it or CMD+SHIFT+N to create a new master slide. Then paste your components onto that master slide, and give it a name.

You can then go back to your regular presentation thumbnails, create a new slide (CMD+SHIFT+N) and select your new master for that slide.

Next, grab more components from the prototyping pack and start creating other states of the application. For our example, grab the pop-up dialog and place it below your post button. You will notice that most prototyping components are grouped together to make it easier to copy/paste them easily. To resize the pop-up dialog without resizing its content, double click the group over the object you’d like to select – this will allow you to select objects within a specific group without having to ungroup the parent object. You can also have nested groups, but that’s an advance technique that will be covered later on.

The screenshots below show the “show profile pop-up” and “post updates” screens:

Step 3: Adding interactivity

Once all are created, it’s time to define how the user would transition between them. To accomplish this, you go through your state diagram and, for each transition, select the component that users would click to navigate into the next state. With that component selected, select the hyperlink tab in the inspector, and select the target slide.

For instance, the profile image would link to slide 5, containing the profile pop-up dialog. I highly recommend using slide numbers, instead of next/previous slides, since Keynote will preserve these links in the former case even when you move slides around. I also recommend inserting new slides always at the end of your list, and link it appropriately, so that you don’t mess with the order of existing slides after adding the hyperlinks.

Rinse and repeat for every state and transition. Make sure you test the interactivity every once in a while to make sure the app behaves as you’d expect it to.

Before testing your presentation, you want to make sure that clicking anywhere on the slide doesn’t cause it to advance to the next one. To do this, select “Hyperlinks only” in the presentation settings in the inspector.

Click here to visit Keynotopia.

Step 5: Export and test

The most common format I use to test my presentation is PDF. From the file menu, choose export and then select PDF. The reason I like PDF is that I can email it to someone to test it and provide me feedback, or I can send it to my iPhone or iPad and tap through it (hyperlinks are preserved in PDF format). I use GoodReader on the iPhone and iPad to render the PDF.

If you’re feeling adventurous, you can add some slide transitions or magic moves to create interface animations. But remember not to get too distracted by these features. The goal is to show your idea quickly and be able to interact with it, not to make it do fancy stuff (you can always add the fancy stuff later, once you’re done with the basics).

Step 6: Share and iterate

Now that your prototype is done, it’s time to show it to people and see how they would use it and interact with it. Don’t be afraid that someone will copy your ideas, chances are they had many ideas before that they never acted on – may be they didn’t have a Keynotopia Prototyping Pack ;)

Your first prototype should never be the final one you’re going to implement. In fact, to get meaningful user feedback, you may need to test multiple prototypes and compare results. Users can provide you feedback on which prototype is better, much easier than they can tell you what’s good/bad with just one prototype.

The beauty of using this prototyping technique is that once you reach a prototype that you need to implement, you won’t need to write long requirements and specification documents. Just attach comments to different screens, and share it with your developers. Instead of reading long descriptions, they will be able to interact with it and read your comments and slide notes (Your comments and slide notes will not show in slideshow mode, so your application screens will not be obstructed by them).


Keyboard shortcuts

As you create more prototypes with keynote, it’s essential that you start customizing and using keyboard shortcuts – it will save you a lot of time. To customize keyboard shortcuts in Keynote, go to System Preferences –> Keyboard then click the Keyboard Shortcuts tab. Select Application Shortcuts, from the left panel, then click the + button at the bottom left of the right panel to add a new shortcut. Select Keynote as the application, then type the menu item name you’d like to create a shortcut for *exactly* as it appears in Keynote (In the example below, I am assigning a shortcut for Align->Left menu item, so I typed “Left” – it’s case sensitive.

Keyboard Shortcuts
Here are the keyboard shortcuts I use:

Menu Item Shortcut Purpose
Group CMD+G Group objects together to easily select and edit them as a unit.
Ungroup CMD+SHIFT+G Ungroup grouped objects – Pressing it multiple times will ungroup nested groups
Send Backward CMD+[ Place selected objects/groups behind others. The order of objects on the slide is defined by the order they were created.
Send to Back CMD+SHIFT+[ Place selected objects/groups behind everything else.
Bring Forward CMD+] Does the opposite of Send Backward
Bring to Front CMD+SHIFT+] I’ll give you three guesses
Lock CMD+L locking enables you to pin selected objects to the slide so that you can select and edit other objects without accidentally selecting or editing the locked ones.
Unlock CMD+SHIFT+L Unlock selected objects or groups. You will notice that locked objects, when selected, will have “x” markers around their edges, instead of the square marker that enables you to resize them.
Zoom In CMD+SHIFT+> This is the standard zoom in shortcut for all iWork apps. CMD++ is already reserved for increasing text size, which I use more frequently.
Zoom Out CMD+SHIFT+< Same
Fit in Window CMD+1 This shortcut is particularly useful if you’re working on a prototype with dimensions larger than the screen. For instance, I prototype iPad apps in portrait mode, and the 1024px height won’t fit on my 800px laptop screen.
Actual Size CMD+0 This will zoom into the actual size of the slides

Click here to visit Keynotopia.


Android SDK

Jeff LaMarche e’ un programmatore e autore attualmente impegnato nello sviluppo di applicazioni per iPhone e Mac, nonche’ autore di un seguitissimo (e autorevole) blog e del libro “Beginning iPhone Development”.
Riportiamo in questa pagina la traduzione dell’articolo Android SDK from an iPhone Developer’s Perspective. Ringraziamo Jeff per averci concesso l’autorizzazione a riportare la traduzione del testo integrale.
Riconosciamo l’onesta’ intellettuale di Jeff nel sostenere che le sue opinioni sono polarizzate da un amore sviscerato per l’ambiente di sviluppo per iPhone. Nonostante cio’ condividiamo in gran parte le sue affermazioni e siamo perfettamente d’accordo con lui nel ritenere l’SDK per Android meritevole di attenzione se non altro per le sue enormi potenzialita’ di sviluppo.
Vi lascio adesso alla lettura del testo, davvero istruttivo.

Ho gia’ riportato la mia opinione sul dispositivo Nexus One (leggi l’articolo originale oppure la nostra traduzione delle parti salienti). E’ arrivato il momento di veder le cose dal punto di vista della programmazione. E’ arrivata quindi l’ora per una mia opinione sull’ambiente di sviluppo (SDK) di Android.

Permettemi di cominciare dicendo un’ovvieta’, dato che conosco alcune persone che dimenticheranno quanto segue: sto per formulare la mia opinione personale e assolutamente soggettiva riguardo l’SDK di Android. Questa opinione puo’ differire dalla vostra, e questo va bene. Veramente. E’ proprio cosi’. La terra continuera’ a girare anche se voi pensate che io mi stia sbagliando al 100%.

Permettetemi anche di porre in evidenza i miei punti di vista: io non amo Java. Ho usato Java per molto piu’ tempo di Objective-C e ho tutto sommato fatturato molte piu’ ore e guadagnato molto piu’ denaro usando Java piuttosto che Objective-C, ma dal momento in cui ho letto i volumi sul linguaggio e la programmazione in Objective-C, negli anni 1997 e 1998, ho avuto l’impressione che Java stesse intraprendendo la direzione sbagliata. Ogni passo nell’evoluzione di Java ha rinforzato questa sensazione. L’approccio usato in NextSTEP (il quale si e’ evoluto in Cocoa e quindi Cocoa Touch) avvalora il mio pensiero. Io credo in questo approccio. Sia la metodologia che il linguaggio mi piacciono cosi’ tanto, infatti, che ho preferito tagliare i miei guadagni in maniera sostanziosa pur di poter lavorarci sopra a tempo pieno. Cosicche’, basandovi su questo, dovreste capire che Android parte gia’ svantaggiato dal mio punto di vista.

Ho cercato di rimandare il piu’ possibile la pubblicazione di questo articolo per evitare di cadere nell’errore commesso da molte persone con l’SDK di iPhone e Xcode, che e’ quello di scrivere un articolo relativamente al fatto che non funziona nella maniera che desidero io e che quindi non va bene. Dato che ho una notevole esperienza con il linguaggio e l’ambiente di sviluppo (IDE) e dato che ho gia’ alcune settimane alle spalle con l’SDK di Android, posso tranquillamente fornire un’opinione che non e’ esclusivamente una mia protesta per il fatto che non e’ quello che io so fare e che mi piace fare, anche se ovviamente il fatto che faccia molte cose in una maniera che a me non piace certamente influisce sulla mia opinione.

Quindi, dopo aver speso diverse settimane con Android, cosa ne penso?

Sicuramente non e’ male. E’ decisamente un SDK potente. Ha quasi tutto quel che ti serve e, essendo basato su Java, esiste una quantita’ notevole di codice e di librerie su cui fare affidamento. Il progetto dell’SDK e’ un tantino inconsistente (tutto sommato come l’esperienza del sistema operativo). Vi sono alcune parti che ricordano l’iPhone SDK molto da vicino, per quanto possibile date le differenze tra i linguaggi, e vi sono altre parti del tutto aliene.

Vi e’ sicuramente una mancanza di consistenza nella progettazione dell’SDK se confrontata con quella di iPhone. Molte parti dell’SDK sembrano scritte da gruppi completamente differenti che non necessariamente hanno comunicato o si son messi d’accordo sul modo migliore di far le cose. Vi sono alcune inconsistenze anche nell’SDK di iPhone, ma ci sono comunque dei principi guida e dei design pattern cosi’ dominanti nell’iPhone SDK che non hanno una controparte in Android. L’effetto finale e’ un Android un po’ caotico e disunito, ma comunque ancora valido.

Android ha anche un compito difficile da assolvere: esso e’ stato progettato per girare su una vasta gamma di dispositivi e si puo’ sviluppare su molti sistemi operativi e molte macchine. Google ha fatto un lavoro davvero ammirevole date le difficolta’ che occorre affrontare quando non hai opzioni hardware limitate e sulle quali hai il pieno controllo.

Uno dei modi in cui e’ stato affrontato il problema e’ stato nella realizzazione dell’emulatore. E’ possibile configurare l’emulatore per simulare differenti dispositivi con differenti caratteristiche e dimensioni dello schermo, permettendo quindi di impostare diversi dispositivi virtuali. Cio’ significa che puoi testare la tua applicazione su un “Nexus One virtuale”, quindi passare a un nuovo dispositivo virtuale a testarla su un “Motorola Droid virtuale”. Lavorare con l’emulatore e’ facile, ma non tanto quanto come il simulatore di iPhone. Ad esempio, quando lanci un’applicazione sull’emulatore, esso non diventa l’applicazione corrente e l’emulatore non si sblocca automaticamente. Ad ogni modo l’esperienza e’ accettabile, specialmente se si tengono conto delle sfide aggiuntive dovute al fatto che si tratta di una piattaforma aperta.

La stessa applicazione eseguita sul dispositivo ha girato molto bene. Sorprendentemente bene, in effetti. Ancora, l’esperienza non e’ agevole come quella di lanciare un’app sull’iPhone. Ci si imbatte in piccoli inconvenienti, ad esempio quando esegui un programma sul dispositivo il telefono non si sveglia o si sblocca cosi’ come fa l’iPhone. Ma alla fin fine esso lavora piuttosto bene e senza il peso di dover fornire profili di distribuzione o certificati di sviluppo.

Ho scoperto che il debugging su Android non e’ affatto agevole, ma questo magari e’ dovuto al fatto che conosco GDB molto meglio di JDB/ADB (Android Debugging Bridge) e che conosco le potenzialita’ di debugging di Xcode molto meglio di quelle di Eclipse.

Anche se non e’ necessario usare Eclipse per programmare per Android, di fatto esso e’ la scelta di default. O almeno e’ la scelta che presentera’ meno ostacoli al momento di effettuare il setup dell’ambiente. Eclipse e’ molto bene integrato con Android e i suoi tool. L’esecuzione e il debugging sul device o sull’emulatore sono un bijoux e vi sono addirittura dei tool per forzare dei dati all’interno del dispositivo virtuale in esecuzione, come la posizione geografica.

Ma odio Eclipse con tutto il cuore. Esso non si sposa minimamente col mio modo di lavorare. Considero la sua interfaccia utente imperscrutabile e le sue prestazioni sul Mac non proprio eccellenti. Se dovessi sviluppare molto su Android investirei molto probabilmente su qualche IDE alternativo con una buona integrazione di Android, o al limite lavorerei con TextMate e linea di comando.

Mi sento come se potessi scrivere ogni applicazione di cui ho bisogno con Android. Renderla bella e’ una sfida e ho speso piu’ tempo leggendo la documentazione di quanto abbia mai fatto per l’iPhone. Conoscere ogni dettaglio dell’SDK di Android non necessariamente fornisce dei suggerimenti su come puo’ lavorare un’altra parte e anche se si e’ degli esperti sviluppatori Java non si ottiene un vantaggio aggiuntivo a tal fine.

Disegnare le viste con Android e’ una delle aree su cui inequivocabilmente affermare trattarsi di un’esperienza peggiore che nell’iPhone, su ogni singolo aspetto. L’approccio utilizzato da Android per creare le viste non ha un qualsiasi valore che possa riscattarlo. Disegnare l’interfaccia per iPhone e’ facile, divertente e intuitivo. Su Android, e’ un casino. Sembra di lavorare con la stirpe maledetta di GridBagLayout e XML. E’ assolutamente orribile. Ma dopotutto Java non ha mai lavorato bene con le UI e la cosa non e’ mai stata particolarmente divertente, cosicche’ posso dire di non essere sopreso, anche se attualmente esso ha superato le mie aspettative nell’essere anche peggiore di quanto pensassi fosse umanamente possibile. L’intero processo e’ contro-intuitivo e richiede un sacco di tempo, e tutto questo per avere qualcosa che funzioni e basta. Il tutto e’ ancora piu’ dispendioso e penoso per ottenere qualcosa che non faccia schifo.

Ma questa e’ l’unica area finora che ho trovato orribile in Android. Complessivamente e’ un SDK abbastanza buono. Sicuramente non e’ divertente (almeno per me). Manca totalmente di ogni aspetto divertente. L’SDK non si toglie mai di mezzo quando voglio creare. E’ un continuo ostacolo. Non grande o insormontabile, ma sempre presente. L’SDK per iPhone, d’altro canto, e’ davvero divertente. Una volta capito l’aspetto generale di come fare le cose, e’ diventato facile per me dimenticare l’SDK e occuparmi semplicemente di creare le mie app.

Ho cercato di capire esattamente dov’e’ la differenza; che cos’e’ che rende una cosa divertente e l’altra no, e penso di averlo capito. L’SDK di Android in genere fallisce nel seguire un principio che Apple segue dannatamente bene, e cioe’:
Rendi sempre facili le cose che fai.
Come risultato, su Android le cose che tu non fai quasi mai sembrano essere ugualmente difficili e dispendiose quanto quelle che fai di continuo.

Un esempio: data la dimensione dello schermo relativamente piccola, una delle cose che fai continuamente nelle applicazioni per telefonini e’ muoverti tra le varie schermate. Nell’iPhone effettuiamo questo nella seguente maniera:

  1. Creare un’istanza della classe view controller per la vista che vogliamo mostrare
  2. Impostarne le proprieta’ per fornire i dati di cui ha bisogno per funzionare
  3. Mostrare la vista aggiungendo il view controller alla gerarchia delle viste, inserendola in una pila di navigation controller o presentandola in maniera modale, il tutto di solito in una sola linea di codice

Invece in Android questo non e’ cosi’ immediato:

  1. Aggiungere un riferimento all’Activity (l’analogo di UIViewController, anche se non esattamente la stessa cosa) nell’Android Manifest della tua applicazione per consentire ad Android di sapere quale classe puo’ essere lanciata
  2. Creare un Intent basato sulla classe dell’Activity
  3. Assicurarsi che ogni dato che si vuol passare all’altra Activity sia serializzabile oppure sia un tipo di dato di base
  4. Iniettare l’informazione che si vuol passare all’Activity come un “extra” all’Intent, serializzando gli oggetti
  5. Far partire l’Activity
  6. Nella classe dell’Activity riscrivere onActivityResult e recuperare gli extra di cui si ha bisogno, de-serializzando quelli che non sono tipi di dati nativi.
  7. Nell’Activity scavalcare il metodo onCreate() per specificare la vista che deve essere usata

In realta’ le due liste precedenti non rendono giustizia alla differenza di lavoro effettivamente impiegato. Questo compito diventa una seconda natura per lo sviluppatore iPhone poiche’ e’ intuitivo, fortunatamente. Queste sono le classiche tre o quattro linee di codice che inizi a scrivere senza neanche pensarci su. Su Android la quantita’ di cose che devi fare per ottenere lo stesso risultato e’ sparpagliata attraverso i tuoi file di progetto e il compito difficilmente puo’ diventare una seconda natura o quantomeno facile.

Ora, le persone che amano Android diranno che gli Intent sono potenti – molto piu’ che nell’approccio di iPhone – dato che gli Intent possono essere utlizzati per consentire ad altri programmi e al sistema operativo di avvantaggiarsi delle funzionalita’ del tuo programma.

In effetti gli Intent sono potenti. Il problema e’ che essi forniscono un potere di cui non hai bisogno nella maggior parte dei casi e delle applicazioni. E fanno tutto questo al costo di rendere qualcosa di cui hai bisogno tutto il tempo piu’ complicata e complessa di quel che dovrebbe essere (e quindi piu’ probabilmente fonte di bug). E’ una complessita’ indiscriminata, che non e’ una virtu’. Come OpenDoc e CyberDog possono confermare, dei concetti apparentemente buoni non sempre si manifestano in buone implementazioni o esperienze utente, e l’iPhone non ha mai sofferto molto per la sua mancanza di una funzionalita’ di condivisione tra le applicazioni.

A mio avviso, gran parte dell’SDK di Android (soprattutto le parti che non sono state pesantemente influenzate dall’SDK per iPhone) sembrano essere sovra-ingegnerizzate. Molta della complessita’ delle caratteristiche di Android sembra sia dovuta a un intento di complessita’. Quindici anni fa avrei amato tutto cio’ dato che ero nella mia fase di programmatore macho super ingegnerizzato1 e tutta quella complessita’ e la potenza teorica ad essa associata mi avrebbero fatto sentire davvero bene.

Oggi mi fa solo scuotere la testa e pensare che gli ingegneri di Google dovrebbero smetterla di mostrare quanto sono bravi e cominciare a scrivere codice elegante e complesso alla giusta maniera. Essi dovrebbero disegnare l’architettura del loro SDK con la consapevolezza del fatto che non tutti i compiti sono creati alla stessa maniera e che la semplicita’ e’, a volte, la scelta migliore in assoluto.

Ma, nonostanze la sensazione riguardo l’eleganza di Android, esso e’ senza dubbio un SDK per applicazioni mobili accettabile. Vi sono un sacco di funzionalita’ e un numero incredibile di librerie e codici di esempio su cui ti puoi basare senza dover re-inventare la ruota.

Non mi ci vedo a lavorare a tempo pieno su Android. Non mi ci vedo neanche nella ricerca attiva di lavoro basato su Android che non sia parte di un progetto piu’ grande che coinvolga un’applicazione iPhone. Ma, detto tra noi, non e’ male. A volte e’ poco elegante, inutilmente complesso e convoluto, ma e’ giovane e tutte le potenzialita’ per diventare un gran SDK.

Android decollera’? Probabilmente si’. Vi sono un sacco di telefoni Android pronti a entrare sul mercato. Le compagnie telefoniche e di telecomunicazioni amano i sistemi operativi gratuiti dato che incrementano i loro margini di profitto. E, non appena abbastanza persone disporranno di telefoni Android, allora le persone cominceranno veramente a scrivere applicazioni per tali telefoni. Non credo che si assistera’ mai allo stesso fenomeno dell’iPhone, in cui persone di tutti i generi e senza esperienza di programmazione hanno sviluppato un desiderio di imparare a scrivere software, ma credo che vi sara’ comunque un buon mercato per le applicazioni per Android e, parimenti, per gli sviluppatori Android.

Son contento di lasciare questo mercato agli altri.

1Ogni programmatore e’ passato per questa fase se ha lavorato con la programmazione abbastanza a lungo. Se tu stai programmando da un bel po’ di tempo e pensi di non essere passato per questa fase, allora vi sono ottime probabilita’ che tu ci stia proprio dentro.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.