Menu

c:twee pro Android

mobility01.12.2009android c:twee hero htc 
komentáře: 26

Před nějakou dobou jsem vyměnil HTC Touch Pro2 za HTC Hero. S touto výměnou mobilu souvisela také výměna operačního systému. Windows Mobile ustoupil Androidu od Google. Spolu s touto změnou se mi otevřel také zcela nový a krásný svět vývoje mobilních aplikací. Pro Windows Mobile sice lze vyvíjet ale víceméně to jde jen ve Windows kterými nedisponuji. Aplikace pro Android jsou psané v Javě a pro Javu je mnoho pohodlných možností i v Linuxu. Hlavní pro vývoj je IDE a SDK. První je NetBeans a druhé je Android SDK poskytované přímo společností Google. Obojí je zdarma a funguje to výborně. Konečně mám mobil který je kompletní. Mobil bez možnosti si pro něj sám dělat aplikace je jednoduše nuda.

Abych mohl vyvíjet aplikace pro svůj mobilní telefon, byly potřeba kromě IDE a SDK ještě dvě další věci. Odhodlání mi dodal Georgo, který se pustil do vývoje pro Palm Prē. Druhou podstatnou věcí byla znalost Javy, tu jsem si musel dodat sám. Rozhodl jsem se tedy, že se Javu naučím. Do styku jsem s ní přišel jen krátkodobě na univerzitě v Liberci a tehdy to byla dost děsivá zkušenost, která mě od tohoto jazyka permanentně odrazovala. Překonal jsem tedy odpor, poptal se na materiály a začal něco dělat.

c:twee 0.10

Něco? Aha, nejdřív musím mít co dělat. Učit se Javu jen tak zbůhdarma by mě skutečně nebavilo a tak jsem si musel stanovit nějaký cíl. Tyto cíle mám rovnou dva. Tím skutečným je aplikace pro geocaching. Druhý cíl mi slouží jako místo, kde se mohu učit. Je jím klient pro Twitter. Až budu spokojený s klientem a se svými znalostmi Javy, vrhnu se na geocaching. Jak ale nadpis textu naznačuje, hodlám se dnes věnovat c:twee, tedy klientovi pro Twitter.

c:twee je název, který jsem použil již u klienta pro velký počítač. Ten byl založený na webových technologiích a ač jej používám výhradně na počítači, mohl by běžet i jako on-line služba. Počítačový c:twee se mi povedl a rád jej používám již několik měsíců bez výraznějších změn. Upravil jsem nějaké chyby a implementoval několik málo nových funkcí, které Twitter přidal. Oproti ostatním dostupným klientům mi vyhovovala jednoduchost a přehlednost, která je myslím pro Twitter typická.

c:twee 0.10

Když jsem přemýšlel o ideálním klientovi pro své HTC Hero, posteskl jsem si že žádný klient není hezký, jednoduchý a přehledný tak, jak bych si představoval. Oblíbený twidroid je s každou další verzí složitější a bohužel také pomalejší. Napadlo mě, že by mi vyhovovalo něco jako c:twee pro velký počítač. A na světě byla učební pomůcka pro Javu. Twitter má jednoduché a výborně zdokumentované API a tak je vývoj klienta vyloženě hračkou. Tedy pokud se píše v jazyce, který vývojář zná. Psát v Javě, o které nevím zhola nic, je místy zajímavé peklo a tak jsem se mnohdy celé dny nemohl přehoupnout přes základní problémy. Narážel jsem hlavně na použití handlerů a listenerů, které z PHP neznám.

Učil jsem se co to dalo a postupem času se mi podařilo překonat všechny počáteční problémy. Podařilo se mi tedy vyrobit klienta, který zatím umí číst a psát stavy na Twitter. Umí také najít webové adresy a ty zobrazit. Stejně tak umí pracovat s geotagy u jednotlivých stavů. Dneska jsem nakonec přidal také autorizaci pro používání cizími lidmi. Tuto první fázi vývoje jsem završil založením účtu na SourceForge, kde jsem uvolnil ke stažení první verzi. Mám z toho radost :)

c:twee 0.10

c:twee pro Android jsem koncipoval podobně jako jeho většího bratříčka. Tedy s ohledem na maximální možnou jednoduchost a trochu toho stylového vzhledu. Klient tedy nemá vůbec žádné nastavení, nijak se nevypíná a dá se jen zapnout a použít. Sám stahuje nové stavy z Twitteru a umožňuje uživateli napsat stav nový, poslat odpověď nebo nějaký existující stav přeposlat. K novému stavu přidá také aktuální GPS souřadnice zjištěné z GSM nebo WCDMA (3G) sítě. To je asi tak všechno, zatím. Klient je příjemně rychlý ale přesto ho stejně časem čeká optimalizace aby tolik neplýtval pamětí. Spotřeba energie se mi podařila již od začátku udržet na příjemné hladině která nijak neomezuje jiné používání mobilu. Klient stahuje nové stavy každé tři minuty přičemž po usnutí mobilu (což není stejný okamžik jako zhasnutí displeje) se interval prodlouží na přibližně 30 minut. Právě tahle kombinace zajišťuje aktuálnost a přitom nízkou spotřebu.

c:twee 0.10

Do budoucna bych rád přidal lepší odezvu na některé chyby. Aktuálně se například uživatel vůbec nedozví, že se nový status nepodařilo odeslat – což je s častými výpadky Twitteru celkem velká chyba. Stejně tak je problém při odesílání v momentu kdy telefon nemá kontakt s mobilní sítí. Z přidaných funkcí bych rád dodělal možnost něco vyfotit (nebo vybrat v telefonu) a poslat pomoci twitpicu a stejně tak usnadnit zobrazování fotek z této služby. A také vlákna jak plynula diskuze, ty považuji za velmi důležité a nesmí chybět. Jen vyřešit jak je implementovat.

Kdo chce zkoušet, může si stáhnout instalační soubor (.apk), zkopírovat jej do mobilu a tam nainstalovat. Nicméně vzhledem k rané fázi vývoji to doporučuji jen otrlým jedincům s prstem na tlačítku „Odinstalovat“. Pokud se mi podaří vyřešit základní chyby a optimalizuji mobil také pro FWVGA displeje (takový má například Motorola MILESTONE), zaplatím potřebných 25 USD a c:twee umístím do Android Marketplace odkud bude pohodlně ke stažení pro všechny uživatele Androidu. Pro používání je vhodné mít v mobilu SD kartu, kam klient ukládá avatary uživatelů. Nepodařilo se mi zatím přijít na to, jak cachovat do paměti mobilu, tudíž je bude bez karty stahovat stále dokola a docela úspěšně zdecimuje baterii i nejeden omezený datový tarif. Později bude také čeština a angličtina (aktuálně jsem v zájmu rychlosti použil svoje mizerné znalosti a aplikace je v čemsi-jako-angličtině).

Jediná cizí věc, kterou jsem použil je ikonka ptáčka. Jejím autorem je freakyframes.


miki
reagovat na tento komentář komentář byl přidán v úterý 1. prosince 2009 v 16:55
kontakt miki[@:zavináč]qex[.:tečka]cz    

Pěkný článek, díky. Jako velký příznivce C# .NET bych rád upřesnil první odstavec; na non-Windows systémy existuje špičkový MonoDevelop. Osobně mi NetBeans přijde hrozně těžkopádné…

Nicméně jak Java, tak .NET jsou oba stejné molochy, takže si nejspíš ve většině mohou podat ruce :) Java je přeci jen rozšířenější (+mobily, BlackBerry…) ale prostě mě zatím nikdo nepřesvědčil, že nálepka „pomalý“ již neplatí.

Výhoda Android-Java oproti WM-.NET CF je dle mého předpokladu v tom, že Java běží již v Androidu, kdežto WM CF načítá, což zapřičiňuje, že „první“ start aplikace je pomalejší než startování Trabanta…


fremy
reagovat na tento komentář komentář byl přidán v úterý 1. prosince 2009 v 17:03
kontakt fremycz[@:zavináč]gmail[.:tečka]com    prezentace http://www.fremy.cz

Je skvělé, že si svůj telefon vytváříš dle představy. Hned je s ním radost pracovat, že?

Zalíbila se mi i aplikace c:twee. Nemám přehled o alternativě na Androida, ale hned jak si jeden pořídím a vyzkouším. Čeká tě ještě dlouhá cesta k opravdu dobrému twitter klientovi, ale myslím si, že máš dobře nakročeno. Proč přecpávat jiné programy zbytečnými funkcemi, které člověk stejně nevyužije, když tu máme schopného programátora, jenž nám vytvoří jednoduchý a použitelný nástroj.


carnero
reagovat na tento komentář komentář byl přidán v úterý 1. prosince 2009 v 17:04

Reakce na miki @ 01.12.2009:

Co se týče programování pro Windows Mobile, zjišťoval jsem to jen zběžně a usoudil jsem že to nepůjde. Ale je možné že před více než rokem jsem třeba jen blbě hledal nebo nevěděl co hledat. S NetBeans problémy nemám, používám to už delší dobu pro PHP (s tím je to skutečně trochu oser) a teď i pro Javu (se kterou to spolupracuje dle mých představ). Aktuálně používám NB 6.8 RC1 tuším.

Java je moloch, to nepopírám. Ale třeba aplikace pro Android jsou v Javě a problémy s nimi nemám. Připadají mi srovnatelné s nativními aplikacemi ve Windows Mobile se stejným hardware. Jenže srovnávat to asi moc nejde – stačí aby byl vývojář debil a sebelepší jazyk nebo framework jeho aplikaci neudělá efektivní.

Abych to shrnul. Na Androidu asi nemám jinou možnost než Javu, ale nijak mi to nevadí. V mobilu to běží výborně a bez zjevného vyžírání systémových prostředků a moje aplikace budou spíše malé hračky než něco, u čeho by nižší výkonnost Dalvika (Android JRE nepoužívá) něčemu vadila.


Scotty
reagovat na tento komentář komentář byl přidán v úterý 1. prosince 2009 v 17:06

carnero, stále řešíš vlákna? Pokud nechceš číst dlouhé učebnice a návody, tak bych ti mohl ze školního serveru exportnout takové krátké shrnutí, jak pracovat s vlákny a základní ukázku práce. Myslím, že by se to vešlo do 2 A4… Pro pochopení by mohlo stačit.


carnero
reagovat na tento komentář komentář byl přidán v úterý 1. prosince 2009 v 17:07

Reakce na fremy @ 01.12.2009:

Ano, je to radost. Z více důvodů – taková ta dětská radost, že se něco povedlo a pak fakt že aplikace dělá naprosto přesně to, co potřebuji a chci.

Cesta to je dlouhá, ale mě baví. Takže to nevadí. Dělám to hlavně pro sebe a třeba to užije také někdo jiný. To by mi udělalo radost, ale i kdybych byl jediný uživatel… budu rád.


carnero
reagovat na tento komentář komentář byl přidán v úterý 1. prosince 2009 v 17:08

Reakce na Scotty @ 01.12.2009:

Ty návody, co jsem dostal od lidí na Twitteru mi posloužily výborně. V základech jsem se zorientoval (i ve vláknech, která již úspěšně používám) a teď už mi většinou slouží nějaké specifikace. Ale i tak děkuji.


Petr "kivan" Miko
reagovat na tento komentář komentář byl přidán v úterý 1. prosince 2009 v 19:23
kontakt petr[@:zavináč]petrmiko[.:tečka]cz    prezentace http://blog.petrmiko.cz

Pěkný článek – navíc screeny klienta vypadají líbivě. Javovskou verzi klienta pro PC asi vyvíjet nebudeš, nebo se máme těšit?


carnero
reagovat na tento komentář komentář byl přidán v úterý 1. prosince 2009 v 19:38

Reakce na Petr „kivan“ Miko @ 01.12.2009:

Pro velký počítač tuto verzi dělat nebudu.


xbaka
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 10:42

Nevím jestli je problém na mé straně, ale po návratu z browseru (mám kód) ho nemám kam zadat. Zřejmě se mi c:twee vypne během načítání twitter stránky. Nešlo nechat pole pro pin už od spuštění?


carnero
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 10:47

Reakce na xbaka @ 04.12.2009:

Přepínání aplikací nefunguje? Opravdu se c:twee úplně ukončí (kvůli nedostatku paměti, zjevně)?

Popřemýšlím, co se s tím dá dělat.


xbaka
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 10:53

Reakce na carnero @ 04.12.2009:

Ne, nefunguje. (Pamět je strašně malá u G1 :( )


carnero
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 11:02

Reakce na xbaka @ 04.12.2009:

Zkusím s tím něco udělat. I když zatím netuším co.


xbaka
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 11:05

Reakce na carnero @ 04.12.2009: Co třeba nechat pole zobrazit při spuštění aplikace?


carnero
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 11:07

Reakce na xbaka @ 04.12.2009:

To je k ničemu. Musím také nějak zajistit, aby se uložily údaje z rozběhnuté autorizace dřív, než systém ukončí aplikaci. Což jde, ale nevím jak konkrétně to udělám. Po práci se na to mrknu, večer by mohla být opravená verze.


xbaka
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 11:09

Ok, díky


carnero
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 11:35

Reakce na xbaka @ 04.12.2009:

Mohlo by to fungovat.


xbaka
reagovat na tento komentář komentář byl přidán v pátek 4. prosince 2009 v 13:18

Reakce na carnero @ 04.12.2009: Díky, funguje


craig22 Napsáno na mobilu
reagovat na tento komentář komentář byl přidán v úterý 8. prosince 2009 v 22:40

Chtel jsem se zeptat zda by do tohoto Twitter klientu šel v implementovat ten trik že když zatrepes s mobilem tak se aktualizuji tweeety. Díky jinak rychly a skvělý klient.


carnero
reagovat na tento komentář komentář byl přidán v úterý 8. prosince 2009 v 22:43

Reakce na craig22 @ 08.12.2009:

Jde všechno, když se chce. Ale já to považuji za zbytečnost, takže to tam nebude.


DGO
reagovat na tento komentář komentář byl přidán v úterý 19. ledna 2010 v 11:14
kontakt dgo[@:zavináč]technet[.:tečka]ms    

Reakce na miki @ 01.12.2009: Souhlasím ale právě skutečnost NetBeans (případně Eclipse) mě nakonec odradila od nákupu HTC Hero a šel jsem dál cestou WM ač mě to také lákalo… Jenže práce v NetBeans vs práce ve Visual Studiu je alespoň pro mě dost podstatný rozdíl :-), takže WM s .NET CF u mě pokračuju dále. Na 2–5 vteřinové spouštění aplikace jsem si již zvykl :/.


SkyLuke
reagovat na tento komentář komentář byl přidán ve středu 3. února 2010 v 19:27
kontakt skajluk[@:zavináč]gmail[.:tečka]com    prezentace http://skajluk.pavouk1.org

Ahoj, používám c:twee, ale k jeho dokonalosti mi chybí jedna věc; když jsem na twiteru na stolním počítači nebo když prostě nechci upozornění na nové tweety v notifikacích, nemůžu nikde najít (ani v nastavení andoidu) jak to vypnout. Protože i to neustálé stahování je dost náročné na přijatá data.

A ještě mám jednu otázku. Když mě c:twee v notifikacích upozorní na nové tweety, tak se ty tweety rovnou stáhnou, nebo se stáhnout až při otevření aplikace? Je to pro mě docela důležité, prtž mám internet s omezením na stáhlá data.

Díky.


carnero
reagovat na tento komentář komentář byl přidán ve středu 3. února 2010 v 19:30

Reakce na SkyLuke @ 03.02.2010:

Stahuje to pořád. Oznámení se zobrazí až když jsou tweety stažené.


SkyLuke
reagovat na tento komentář komentář byl přidán ve středu 3. února 2010 v 19:38
kontakt skajluk[@:zavináč]gmail[.:tečka]com    prezentace http://skajluk.pavouk1.org

A nemáš přehled kolik cca kB má jeden tweet o 140 znacích? Tobě to nevadí, když tě telefon upozorňuje o tweetech, které jsi třeba četl na stolním twitteru?

A ještě doplňující otázka: v jakých intervalech c:twee stahuje?


carnero
reagovat na tento komentář komentář byl přidán ve středu 3. února 2010 v 19:41

Reakce na SkyLuke @ 03.02.2010:

Nemám tušení, kolik dat to vůbec stahuje. Ale stahuje to vždy jen tweety od posledního, takže to XML je docela malé. A nevadí mi to, mobil stahuje pořád něco a pár kB denně se v tom ztratí.

Stahuje to tak jednou za 3 až 30 minut. Záleží na tom, zda mobil běží nebo spí.


SkyLuke
reagovat na tento komentář komentář byl přidán ve středu 3. února 2010 v 19:51
kontakt skajluk[@:zavináč]gmail[.:tečka]com    prezentace http://skajluk.pavouk1.org

Ok, díky moc za info. Máš v plánu vyvýjet nějaké další apps? Hodila by se mi nějaka app na streamovaní rádií z inertnetu.


carnero
reagovat na tento komentář komentář byl přidán ve středu 3. února 2010 v 20:04

Reakce na SkyLuke @ 03.02.2010:

Aplikace dělám, když je potřebuji. Na zájmy ostatních moc nekoukám. A aktuálně mi dává zabrat c:geo (geocaching klient pro Android).


Gravatar - náhled
« nick
« osobní web
« kontakt
« gravatar
zapamatovat osobní údaje
« nevyplňujte, pokud jste člověk!
« příspěvek

než komentář uložíte:
» pokud už komentujete, pište slušně, česky, cesky, slovensky nebo anglicky
» do formuláře vkládejte jen osobní weby, weblogy a portfolia; firemní a výdělečné weby budou odstraněny
» odesláním komentáře souhlasíte s tím, že váš komentář může být smazán (z jakéhokoliv důvodu)