Aplikace, bez kterých se na Androidu nebejdete

Už něco přes dva měsíce jsem majitelem G1, prvního telefonu s operačním systémem Android. Za tu dobu jsem si našel aplikace, které jsou nezbytné pro každodenní práci a teď jsem se rozhodl o svůj seznam podělit.

AppsInstaller

AppsInstaller umožňuje instalaci aplikací z paměťové karty – ideální pokud máte například zakoupený software (v ČR stále není dostupný placený obsah v Marketu)

CalWidget

Widget zobrazující události z kalendáře, dobře konfigurovatelná náhrada za ne příliš povedený systémový widget.

widgety od CurveFish

Malé widgety umožňující rychlé zapínání/vypínání WiFi, Bluetooth, zvonění atd, také mají widget pro rychlé změny podsvícení, ale to mam de facto pořád na minimu, takže tenhle konkrétní widget nepotřebuji. A mají hezký widget se stavem baterie (graficky znázorněná kapacita, napětí, teplota…).

Screebl

Naprosto geniální aplikace. Screebl se totiž snaží odhadnout, jestli s telefonem pracujete či nikoliv a podle toho bud prodlouží nebo naopak zkrátí timeout, po kterém se vypíná display. Odhaduje to na základě dat z akcelerometru a nutno říci, že to funguje až nečekaně dobře.

ConnectBot

SSH klient. Nemám, co bych dodal – dělá přesně to, co se od něj očekává.

K-9 Mail

Výborný mailový klient. K-9 je forkem původní Mail aplikace pro Android ale od té doby ušel dlouhou cestu. Vyzdvihl bych zejména dobře nastavitelné pohledy na složky.

Co mi na Androidu chybí?

V porovnání s Nokií nemá Android vestavěnou podporu pro “běžné” kancelářské formáty – PDF, XLS, DOC… Existují placené aplikace, ale ty si člověk v terénu nestáhne právě kvůli chybějící podpoře v Marketu. Další věcí, byť zřejmě dočasnou, je absence navigačního software. Mne osobně to nevadí protože mám v autě “velkou” navigaci, ale z pohledu potenciálního kupce je to mínus pro Android – zvlášť když před necelým měsícem Nokia uvolnila navigační software zdarma pro drtivou většinu svých smartphonů. Pro Android samozřejmě placené aplikace pro navigaci existují, ale “zdarma” je cena, která se poráží těžko.

How to update T-Mobile G1 from 1.1 (factory) to 1.6

Some time ago my Android’s camera stopped working. Today T-Mobile sent me new G1 as temporary phone until my is fixed. But this “new” G1 is really brand new – with original 1.1 firmware. And I can’t wait for OTA as it could take weeks.

You’ll need following files:

signed-TMI-RC9-from-TMI-RC4.c8187210.zip
signed-CRB17-from-TMI-RC9-eu.17667e06.zip
signed-kila_eu-CRB43-from-CRB17.1638e1b4.zip
signed-kila_eu-CRC1-from-CRB43-FIX2.1c36f92b.zip
signed-kila_eu-CRC37-from-CRC1.404fe17f.zip
signed-kila_eu-DRC92-from-CRC37.a7b90b4e.zip

For every file repeat following steps (remember to keep file order same as above):

  • copy file to SD card’s root as update.zip
  • power off the phone
  • power on the phone while holding Home key
  • when an attention icon is displayed, press Alt+L and then Alt+S
  • wait for update to finish
  • press Home+Back to reboot when instructed to do so
  • wait for the phone to power off (or on, this depend on current firmware version), there might also be an icon with arrow and memory chip displayed for some time, don’t panic!
  • repeat steps above with next file in a row

Don’t be surprised that maintenance screen changes between updates, it starts as simple, key driven screen but after second update it can be also controlled by the trackball.

After applying above mentioned steps to all files you should have latest 1.6 (aka Cupcake) installed on your G1.

T-Mobile G1 aneb jak jsem k Androidovi přišel

Bylo nebylo, objevila se možnost mít za dobrých podmínek G1 od T-Mobile CZ. Sice jsem byl doteď relativně spokojený se Symbianovskou Nokii E66, ale rozhodl jsem se dát novému operačnímu systému šanci – buď budu spokojen a přejdu na Androida, nebo ne a pak zůstanu u Symbianu. Vlastně jsem o Androidu uvažoval už delsí dobu, ale pořád jsem čekal, až začne vyrábět takové telefony moje oblíbena Nokia. Léta ve vývoji mobilních telefonu jsou u téhle firmy znát a jejich “business” telefony řady Exx jsou nejen relativně hezké ale hlavně poměrně robustní a disponují velice slušnou výdrží na baterii.

V pátek dorazila černá G1. Po rozbalení jsem trochu zápasil s krytem, který se u nového telefonu sundavá docela špatně – než se trochu oběhá. Vložil jsem SIM kartu a baterii a dal telefon poprvé nabíjet. Asi po hodině jsem si na něj vzpomněl, zapnul ho a začal zkoumat nový operační systém. Musím konstatovat, že jsem byl velice mile překvapen – celý systém je poměrně intuitivní, návod není víceméně potřeba. Za největší rozdíly proti E66 bych označil:

  • relativně malý display s vysokým rozlišením (320×480)
  • trackball výrazně zrychlující ovládání telefonu
  • výborný GPS přijímač
  • rychlý “full featured” browser a podpora copy/paste libovolného textu
  • automatická synchronizace kontaktů a kalendáře s google mail

Naopak největší nedostatky spatřuji v:

  • menší než malá výdrž na baterie
  • chybějící podpora některých bluetooth profilů (zejména OBEXu)
  • mechanické provedení
  • rozměry a hmotnost

Tohle jsou moje poznatky z víkendu – stay tuned for more.

How to render Dzongkha (Bhutan) texts in Swing properly

As you might know we’re developing a specialised information system. It’s been widely used in Asia, in fact one of our first international customers was (and still is) located in India. Thanks to this geographical variety we’re facing issues with exotic language/script support quite often. Last time we had an issue with Urdu script, that’s been used in Pakistan. It’s still not supported in mainstream operating systems (first support came with Vista/Office2007), a special commercial software is needed for that, it doesn’t to seem to adhere to Microsoft (or any) standards, it sort of works but there are still issues. The biggest problem with Urdu is it’s height which can really vary depending on what’s written

Yesterday I was asked about Dzongkha support. Dzongkha is the official language of the Kingdom of Bhutan. It’s using Tibetan script for written form. The good news is that there are free fonts available. I installed one of them (Jomolhari) and started experimenting with it. Just to run into complete failure – no part of the system was able to show anything else than “boxes” – at least on Windows I started with. There were only two parts of the system being able to show Dzongkha properly – but only thanks to their ability to change font used for them.

Imagining how complicated/annoying it would be to change all Swing controls to use Jomolhari font (ie. adding configuration, making sure that setFont() is called on every single JComponent, testing it….) made me feel really bad. On top of that latin script rendered by Jomolhari was really ugly (especially in small sizes like 10, 12pts).

I remembered that there was a way how to specify font substitutions in Java fortunately and after couple of minutes I got the right article http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html on Sun’s website.

I started reading the document but even after finishing I was not exactly sure what should be done – there’s a paragraph about substitution, about character subsets but – Tibetan, Dzonghka was not there. Having studied Unicode pages I knew that Tibetan characters are occupying their designated range starting with 0x0F00 yet there didn’t seem to be support for this subset. I tried adding line with:

sansserif.plain.tibetan=Jomolhari

but it didn’t seem to change anything, boxes again. While getting ready to leave the office I got one last idea – what if China somehow owns Tibetan range? They keep claiming that Tibet belongs to them, so why not the Unicode range too? So I changed line with Chinese subset:

sansserif.plain.chinese-ms950=MingLiU

to Jomolhari font

sansserif.plain.chinese-ms950=Jomolhari

and – voilà, there we go – it worked as a charm. But – what if this disables Chinese, I thought. Quick test revealed that my worries were needless, Kanji characters worked too. And latin as well, rendered in usual quality.

So, what exactly is needed? Just follow steps below:

  1. Install appropriate fonts (ie. Jomolhari)
  2. Locate fontconfig.properties.src ($JAVA_HOME/lib)
  3. Rename it to fontconfig.properties (remove .src suffix)
  4. Replace all occurrences of .chinese-ms950=(P/MingLiU) with .chinese-ms950=Jomolhari
  5. Quit all Java processes and start your Swing application again
  6. Every single Swing component should be capable of displaying Tibetan script properly – if not check if you’re using “logical” fonts and not forcing physical ones (there are five logical fonts, read the Javadoc for Font class)

Having solved problem on Windows I moved to Mac – just to see that on MacOSX Leopard (10.5.6) fonts for Tibetan are installed by default and working in Java out of the box. Good work, Steve.