Posted by & filed under Android, My applications.

Romanian language This article is in Romanian.

Pentru cei interesați de statistici legate de utilizatorii Android din România, iată câteva date despre utilizatorii aplicației La Cinema.
Am luat în calcul numărul de utilizatori unici din ultimele 10 zile (aprox. 600 de persoane).
Un clasament asemănător, pentru aplicația HotnewsRo, găsiți aici.

Device-uri

dyerware

Versiuni de Android

dyerware

Legat de aplicație, lucrez la un update care va adăuga și suport pentru mai multe orașe.
Până acum am avut solicitări pentru Arad, Sibiu, Pitești, Constanța, Craiova… aveți alte propuneri?

Posted by & filed under Android.

English language This article is in English.

Because I see many bad applications on Android Market, I’m going to start writing a few articles about good (hopefully best) dev practices. For now, let’s see 2 of them.

The First One

The most annoying thing you can find in many current apps, is the location of its files (cache, temp files, database, etc.) on the external memory (e.g. SD card).

So, PLEASE stop creating a folder on the root of the external memory! All your files should be located in this folder: /Android/data/<package_name>. You can read more about this in Google’s Android Dev Guide, right here.

The Second One

The second suggestion (apparently still ignored by developers) would be to use a drawable for each state of your controls (e.g. buttons, list item backgrounds). I’m not going to explain you here how to do it. There are plenty of tutorials over the Internet. Here’s an example, anyway, for a drawable that can be used as background for your list’s items:

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_window_focused="false"
android:state_selected="true"
android:drawable="@drawable/my_blue_background" />
<item
android:state_selected="true"
android:drawable="@android:color/transparent" />
<item
android:state_pressed="true"
android:state_selected="false"
android:drawable="@android:color/transparent" />
<item
android:state_focused="true"
android:drawable="@android:color/transparent" />
<item
android:state_selected="false"
android:drawable="@drawable/my_blue_background" />
</selector>
Obviously, my_blue_background should be a nine-patch, in this case.
For the selected and pressed states, the default drawable is shown (which can be an orange one for stock Android, a green one for HTC Sense UI, a red one for Motorola Cliq, etc.).
This also keeps the transition animation at long press (if you have a long press event on the items of a list), if your phone has one (stock Android UI has it).
I’ve added this example, because the one suggested by Romain Guy in this session (skip to 30:20) at Google I/O does not work.

Posted by & filed under Mobile.

Romanian language This article is in Romanian.

Cristian Manafu se întreabă de ce nu există dezvoltatori de aplicații mobile în România. Răspunsul meu a fost că, deși nu sunt mulți, ei există totuși.

Întrebarea ar fi de ce nu reușesc firmele să găsească dezvoltatori. Nu mă refer aici la firmele mari din România care dezvoltă (în principal pe J2ME) jocuri pe mobile. Ci la firmele care dezvoltă aplicații (nu jocuri) pe platforme ceva mai actuale (Android, BlackBerry, iPhone).

O astfel de firmă are 2 variante… să aleagă un junior (pe platformele respective) sau pe cineva cu experiență. Să le luăm pe rând.

Junior

  • pentru recrutare, în general, este suficient un simplu anunț pe BestJobs, eJobs sau alte site-uri similare
  • training-ul durează de la câteva săptămâni (dacă se alege pe BlackBerry o persoană care are experiență anterioară pe J2ME) până la 6 luni (dacă se dorește angajarea pe iPhone a unui programator care nu știe Objective-C… cum spunea și Ana Matei aici)
  • avantaje: recrutarea se face ușor; salariul cerut este mic (spre mediu, dacă persoana are deja experiență pe mobile)
  • dezavantaje: training-ul poate dura destul de mult; după training, angajatul va fi tentat să plece dacă primește o ofertă mai bună (și sansele de a primi astfel de oferte sunt mari la ora actuală, având în vedere raportul cerere/ofertă)

Senior

  • procesul de recrutare nu va fi simplu… dezvoltatorii pot fi recrutați prin intermediul recomandărilor, LinkedIn, al comunităților locale ale dezvoltatorilor (cum ar fi androider.ro pentru Android) sau al concursurilor (de exemplu HTC Romanian Android Challenge sau concursul Orange de aplicații pentru iPhone)
  • avantaje: persoana recrutată poate începe să lucreze din prima zi; dezvoltarea aplicațiilor va dura mai puțin timp
  • dezavantaje: durata procesului de recrutare poate fi destul de mare (da, poate ajunge și la 6 luni…); salariul cerut de un senior va fi mare (mai ales pe iPhone/Android);

Acum… de ce nu găsesc firmele seniori? Câteva motive:

  • pun anunț doar pe site-urile de recrutare – am zis anterior câteva surse mai adecvate
  • dau un test general de Java/C/C++ (uneori prea simplu, alteori cu cerințe care nu au nici o legatură cu platformele respective) – ce sa zic… foarte “placută” prima impresie creată pentru un senior… personal cred că firmele ar trebui să pună mai mult accent pe portofoliu, iar un eventual test să fie chiar o aplicație pe platforma respectivă
  • sunt șocate de pretențiile financiare ale dezvoltatorului – de exemplu știu o firmă care caută astfel de persoane de aproximativ 1 an și nu a angajat pe nimeni, chiar dacă a avut ocazia să găsească 3-4 programatori buni (motivul fiind cel financiar, deși firma respectivă nu este chiar mică)
  • postul constă în portarea aplicațiilor existente de pe alte platforme – seniorii de obicei caută un job interesant, provocator, nu ceva plictisitor (cum ar fi portările de pe alte platforme sau mentenanța unor aplicații deja existente)

Într-adevăr, în România, dezvoltarea de aplicații pe BlackBerry/iPhone/Android de-abia acum începe să ia avânt. Dar există interes. Chiar de pe băncile facultății.

Cam acesta ar fi punctul meu de vedere. Aveți altă părere?

Posted by & filed under Android.

English language This article is in English.

I’ve tried several times to start a blog, but each time I failed to keep posting. Let’s hope this time will be different.

You’ll notice that the blog is focused on Android OS. Mainly from a developer perspective.

I’ve started working on Android almost 2 years ago, before Android 1.1 was released. Since then, a lot of things have changed and the Android is now on its way to becoming one of the top operating systems for mobile phones. And now, it starts to become popular in Romania, too.

That’s why I’ve decided to create my own apps in my spare time. There will be 2-3 apps for Romanian market at the beginning, but this will change in the (near?) future. I have plenty of ideas… I just need time for them :(

If you’re wondering why I chose to write this article in English… it’s because I don’t plan to target only Romanian readers. This blog will be for everyone, so most articles will be in (a bad?) English… but I will write in Romanian too.

PS: I don’t expect any feedback on this first post, but I’ll allow the comments. Just in case. :)