-->

niedziela, 17 listopada 2013

Holo Compass 1.4

Nowa wersja Holo Compass trafiła właśnie do Google Play. Naprawiony został przede wszystkim błąd z niewyświetlaniem się okręgu na niektórych telefonach. Motywy są teraz w pełni zintegrowane z Holo UI. Przez to minimalne wymagania co do wersji Androida podskoczyły do wersji min. 4.0. W najbliższym czasie postaram się obniżyć to wymaganie do Androida 2.1 za pomocą biblioteki supportującej ActionBar. Zmiany objęły także UI kompasu, płynną zmianę motywu bez wychodzenia z aplikacji oraz obcięcie wagi .apk o ponad połowę. Oczywiście aplikacja jest za free i nie wymaga żadnych uprawnień :) 

Link do pobierania: Holo Compass



Czytaj dalej/Read more!

czwartek, 14 listopada 2013

Teeter Pro na Windows Phone



Od wczoraj można pobierać moją grę Teeter Pro w Windows Phone Store! Na początek jest 30 poziomów do ukończenia, dodatkowe poziomy z wersji Androida dojdą na pewno w ciągu kilku tygodni. 

Link do pobrania: Teeter Pro

Co do samej certyfikacji w WP Store to trwa ona około 4 dni, w porównaniu do Google Play certyfikacja jest o wiele bardziej restrykcyjna. Na pewno żaden spam w takim przypadku nie znajdzie się w sklepie co jest na plus, także samych aplikacji jest o wiele mniej a to daje większą widoczność dla dewelopera. Samą opłatę licencyjną 99$ można ominąć zakładając konto studenckie na DreamSpark a później wpisując kod rejestracyjny z DreamSpark podczas rejestracji w Windows Phone Dev Center. Jeżeli planujesz robić aplikacje zainteresuj się WP, na Google Play jest już zbyt tłoczno, każdego dnia dochodzi wiele aplikacji i gier i spamu którego nikt nie kontroluje. 

Czytaj dalej/Read more!

wtorek, 1 października 2013

Motocross Challenge


Chciałbym przedstawić moją nową grę o nazwie Motocross Challenge. Wcielacie się w motocyklistę i musicie w jak najkrótszym czasie przejechać poziom (narazie jest ich 20). Po drodze oczywiście spotkacie drobne utrudnienia w postaci pachołków, opon, kamieni, cegieł itp. Do wyboru są także globalne rankingi a więc możecie rywalizować z graczami z całego świata. Gra jest oczywiście za free, miłej zabawy!









Czytaj dalej/Read more!

poniedziałek, 30 września 2013

Holo Compass bug fixing oraz Teeter Pro na WP

Na wstępie chciałbym napisać o Holo Compass, na niektórych telefonach (S4, HTC One, Infinity) występuje błąd z niewyświetlaniem się okręgu obrazującego obracanie się kompasu. Jest to wina najprawdopodobniej starej wersji cocos2D, która powoduje ten błąd. Dlatego w najbliższym czasie Holo Compass zostanie przepisany na libGDXa i myślę że ten problem zostanie zlikwidowany.

Co do Teetera Pro to prace ukończone są w 70%, do końca muszę przenieść 20 poziomów (na początek wersja WP będzie miała 30 poziomów), dorobić preferencje zapisujące postępy w grze oraz poprawić te błędy które wystąpią na rzeczywistym urządzeniu. Denerwujące są błędy z emulatora WP, który ma problemy z właściwym interpretowaniem dotyku, wydaje się że nie powinny one występować w rzeczywistości. Na plus emulatora jest to że działa akcelerometr i mogę swobodnie testować zachowanie fizyki co widać na poniższym zrzucie.



Czytaj dalej/Read more!

niedziela, 11 sierpnia 2013

Motocross Challenge

Prace nad moją nową grą idą w dobrym kierunku ;) Aktualnie do ukończenia są poziomy (na początek 15), preferencje, poprawna obsługa ekranów o ratio innym niż 1.6, UI dla ekranów < 1280x768 oraz jeżeli się uda to Google Play Game Service dla tablic wyników i osiągnięć. Niestety porzuciłem koncepcję prostej grafiki, docelowo każdy poziom miał być rysowany ręcznie a to jak się przekonałem wiązało by się z dużą wagą samej aplikacji. Na obecnym etapie jest zrobiony automat który sam rysuje "teren" poziomu. Na Adreno 200 gra osiąga około 30-40FPS ale są denerwujące zwolnienia, na szczęście większość telefonów ma przynajmniej Adreno 205 które jest około dwa razy szybsze niż poprzednik. Cały czas pracują nad lepszym zachowaniem się fizyki (gęstości różnych ciał, ich sprężystości), gra będzie oferowała sterowanie za pomocą akcelerometru oraz przycisków ekranowych. Jeżeli ktoś chciałby dowiedzieć się jak rozwiązałem różne rzeczy (UI, niezależne UI oraz projekcja rozgrywki, budowa levelu i jego rysowanie) może śmiało pytać ;] Motocross Challenge to nazwa na ten moment mojego projektu. Na koniec tego wpisu dwa screeny pierwszy pokazowy a drugi jak to wygląda od kuchni:





Czytaj dalej/Read more!

poniedziałek, 8 lipca 2013

Box2D w XNA


Pisząc aplikację na Android używam często silnika fizyki o nazwie Box2D. Jest to jeden z lepszych silników fizyki dostępnych dla grafiki dwuwymiarowej. Jest do niego mnóstwo przykładów i poradników. Dzięki niemu kulka w Teeter Pro uderza o ściany a ciężarówka w Parkin Truck może mieć kolizje. Wystarczy stworzyć świat, dodać do niego kształty i zacząć aktualizować co jakiś określony czas stworzony świat aby zobaczyć że wszystko działa.

W przypadku programowania w XNA możemy użyć box2D-XNA (nie aktualizowany od dawna) lub użyć autorskiej nakładki na Box2D o nazwie Farseer Physic. Autor zapowiedział że nie zrobi supportu dla WP8 a tym samym MonoGame, ale za niedługo spróbuję przystosować Farseera dla MonoGame (być może wystarczy podmienić przestrzenie nazw z XNA na Monogame). Na tą chwilę udało mi się uruchomić Farseera z WP7 i XNA 4. Całość zajęła mi bardzo dużo czasu, Farsser nie chciał się skompilować i wyprodukować pliku .dll, który później dołączamy do projektu. Dlatego też dodałem źródła Farseer'a do projektu i poprawiłem kilka drobnych błędów. Ma to swoje plusy o tyle, że możemy ingerować w pliki źródłowe i je poprawiać ;]. Kompletny projekt działający z VS Express 2012 , XNA 4.0 możecie znaleźć tutaj. Poniżej screen z ekranu jak to powinno w praktyce wyglądać :]




Czytaj dalej/Read more!

wtorek, 2 lipca 2013

XNA, MonoGame i Windows Phone 8...


Zaczęcie z pisaniem aplikacji na Windows Phone to trudna sprawa. Szczególnie jeżeli zabierasz się za pisanie gier. Jako że chciałem zacząć ćwiczyć pisanie na platformę Microsoftu, musiałem ściągnąć SDK, czyli zestaw narzędzi do tworzenia aplikacji. Przypomnę tylko że dla Androida sprawa jest bardzo prosta, ściągasz ADT Bundle czyli Eclipse z wtyczką ADT dla Androida i zaczynasz pisać.  

W Windows Phone jest inaczej, zanim ściągniesz SDK musisz zobaczyć czy spełniasz wymagania. Dla SDK WP8, musisz posiadać Windows 8 Pro w wersji 64 bitowej (!), kilka GB pamięci RAM oraz trochę GB dysku, zapomniałem o instrukcjach SLAT procesora (Intel Core i3/5/7) i karta grafiki z supportem dla DX10 i WDDM 1.1 żeby emulator mógł chodzić...

Jeżeli to wszystko spełniasz należy zainstalować SDK, licencjonować Visual Studio 2012 (free) no i zacząć pisać. 

Jest tylko problem w czym, tzn. w jakim frameworku... Po chwili poszukiwań znajdujesz że gry można pisać w XNA, biblioteka dla Windows Phona i Xboxa. Niestety porzucona przez Microsoft i już nie wspierana. Co prawda wszystko dobrze działa ale po co pisać w czymś co jest nie aktualizowane. Na szczęście istnieje wolny odpowiednik XNA 4 czyli MonoGame, które cały czas jest rozwijane. Jest także Cocos2D-XNA, który bazuje na MonoGame. 

Wystarczy wpisać MonoGame w wyszukiwarkę, ściągnąć instalator do VS2012 i szkielety aplikacji są gotowe! Wszystko? Niestety nie. W XNA istniało coś takiego jak "content pipeline", który pozwalał popularne formaty plików (png/jpg/wav/mp3) przetworzyć do plików .xnb i narysować lub otworzyć w Twojej grze. W Mono tego nie ma :X, trzeba utworzyć projekt XNA z WP7.x, wrzucić te assety i budować projekt, otrzymasz wtedy pliki .xnb i znów import do projektu z Mono i WP8. Trochę skomplikowane to wszystko jak na samo ogarnięcie środowiska.... Na chwilę obecną działa mi Mono z emulatorem, części z plikami gry nie przerabiałem. Emulator WP chodzi o niebo lepiej niż Androida, choć i tak nie idealnie. Najlepszym rozwiązaniem i tak jest fizyczne urządzenie. Miłym zaskoczeniem jest to iż oficjalnie do obsłużenia są jak na razie trzy rozdielczości :) A jeżeli chodzi o tutoriale to jest ich dość dużo do XNA. Można je przerabiać, ponieważ MonoGame ma nawet identyczne przestrzenie nazw jak XNA.



Czytaj dalej/Read more!

niedziela, 23 czerwca 2013

Ciąg dalszy game dev-u



Ostatnie miesiące nie pozwalały na chociażby zaczęcie czegoś nowego. Najpierw projekt Droid Painters na konkurs Samsunga, a ostatnie tygodnie to tylko i wyłącznie praca magisterska. Na szczęście ostatnie dni są już luźniejsze i można zacząć pisać coś nowego. Nie jest to żaden rewolucyjny pomysł, zresztą możecie zobaczyć na poniższych zrzutach przedstawiających wczesny prototyp. 








Dlaczego robię coś co już jest na markecie? Większość tego typu gier moim zdaniem ma złą fizykę. Motocykl albo klei się do podłoża, albo działa bardzo duża grawitacja lub jest ona stanowczo za słaba. Dodatkowo chciałbym aby grafika była "rysowana" ołówkiem, czyli była bardzo prosta ale jednocześnie wyróżniająca się z wielu gier. Na trasie powinno znaleźć się wiele ciał dynamicznych, to znaczy takich z którymi motocykl będzie miał interakcję (kłody, skrzynki, belki, kamienie, samochody itp.). Dodatkowo jest to świetne ćwiczenie i nauka Box2D w libGDXie. 

Co później? Na pewno zakup telefonu z Windows Phone i przeportowanie Teetera Pro oraz produkcji o której tutaj piszę na telefony z systemem Microsoftu. Im wcześniej tam jesteś tym lepiej, system ma potencjał i myślę że będzie umacniał pozycję wśród Androida i iOS.


Czytaj dalej/Read more!

niedziela, 16 czerwca 2013

Millenial Media, MobFox - crap!

Niekiedy deweloper chce zmonetyzować swoją wykonaną pracę przy aplikacji. Najłatwiejszym sposobem jest wyświetlenie reklamy w aplikacji. Jest wiele sieci reklamowych, które oferują bannery, appwalle itp. Każde kliknięcie przez użytkownika w banner dodaje nam określoną kwotę do konta w sieci reklamowej.

Jedną z najpopularniejszych sieci reklamowych na platformie Android jest obecnie AdMob. Właścicielem sieci jest Google. Panuje powszechna opinia że Admob słabo płaci za kliknięcia użytkownika. Z jednej strony słaba stawka za klik, z drugiej praktycznie w każdym kraju AdMob wyświetli reklamę, ponieważ backfilluje AdMoba kolejna sieć reklamowa czyli AdSense. Niestety, stawki dobre są od użytkowników zamieszkujących zachodnią Europę oraz USA. Im więcej użytkowników z innych rejonów świata tym gorzej dla zarobków. Praktycznie każdy zaczyna od AdMoba, w moim przypadku było identycznie. Po kilku miesiącach zacząłem rozglądać się za innymi sieciami reklamowymi.

W sieci popularne są tak zwane `succes story` czyli opowieści o tym jak deweloper osiągnął sukces, często te wpisy są wiązane razem z siecią reklamową, która pozwala dużo zarobić. Takie historie pisano między innymi o Mobfoxie i Millenial Media.

Zachęcony tymi recenzjami zaimplementowałem najpierw Mobfoxa a później Millenial Media. Obie sieci reklamowe okazały się dużo gorsze niż AdMob. W dodatku mają dłuższe okresy wypłaty zarobionych środków... Każda sieć obiecuje duże stawki reklamowe, rzeczywistość praktycznie zawsze jest inna. Wszelkie agresywne sieci reklamowe typu Airpush, Leadbolt pozwalają zarobić przynajmniej 3 razy więcej niż tradycyjne ale bardzo dużym kosztem oceny aplikacji na markecie i utrzymania użytkownika.

Jedyna sieć która płaciła praktycznie tyle ile obiecuje jest StartApp. Sieć ta płaci za instalację ale problemem jej jest to ze programy antywirusowe wykrywają jej SDK jako adware....

Dlatego jedynym pewnym wyjściem są albo płatności w aplikacji albo mieszanie różnych sieci reklamowych.


Czytaj dalej/Read more!

wtorek, 30 kwietnia 2013

Samsung App Cup - wyniki!



Miło mi poinformować że razem z moim kolegą ze studiów zajęliśmy 4 miejsce w ogólnopolskim konkursie organizowanym przez Samsunga na platformę Android! :) Konkurs trwał od listopada do marca, a dziś zostały ogłoszone wyniki. Jeżeli jeszcze nie spróbowaliście naszej produkcji to możecie znaleźć ją w sklepie Samsunga : Droid Painters. Takie wyniki motywują do dalszej pracy na rynku mobilnym, a szczególnie w sektorze aplikacji rozrywkowych jakimi są gry. Nadal nie jest za późno aby samemu spróbować sił i stworzyć aplikację szczególnie na system Android, gdzie codziennie dochodzi około 1.5 mln nowych użytkowników. Pamiętajcie że liczy się najpierw jakość i wykonanie a później pomysł, nawet ciekawa aplikacja bez dobrego wykonania zostanie niezauważona w markecie. Powodzenia!

Czytaj dalej/Read more!

piątek, 5 kwietnia 2013

LibGDX & Cocos2D



Przy pisaniu moich dwóch ostatnich produkcji używałem portu silnika grafiki z iOSa o nazwie Cocos2D, źródła możecie znaleźć tutaj. Zaletą jego jest to że tak naprawdę nie przejmujemy się żadną skomplikowaną mechaniką OpenGla, mamy gotowe metody na przykład do animacji sprite'ów. Mimo że jest to port i nie ma dużo przykładów na Android to można bez problemu wzorować się na kodzie napisanym w objective-c (iOS) i portować go na Jave. Silnik idealnie nadaje się do gier 2D, zresztą jest on bardzo popularny na platformie Appla co jest dobrą rekomendacją. Niestety ma jedną dużą wadę, na Androida port nie jest już rozwijany, w dodatku jest dość stary. Wersja na Androida oznaczona jest numerem 0.99.4, wersja iPhon'owa ma numer 2.1-rc1 więc na pewno dużo się pozmieniało. Zamiennikiem Cocos2D w Javie jest Cocos2D-X  na którym piszemy w C++, na chwilę obecną nie testowałem w żaden sposób wersji C++ ale w niedalekiej przyszłości na pewno spróbuję i porównam do kolejnego silnika o nazwie libGDX.

LibGDX jest napisany w Javie dlatego nie musimy uczyć się na nowo języka jak np. C++ w Cocos2D-X. LibGDXa możecie znaleźć tutaj. Musiałem się go nauczyć ze względu na pisanie aplikacji konkursowej (Droid Painters). Sam w sobie libGDX oferuje świetne możliwości takie jak ładowanie tilemaps, budowanie UI + definiowanie skinów (must have!), loader do assetów Androida, możliwość portu do iOS, obsługa konsoli OUYA, padów do gier i wiele innych. Dodatkowo sam silnik świetnie się rozwija, podczas pisania aplikacji konkursowej musiałem zrobić refactoring z wersji 0.9.6 do wersji nightly, tego czego mi brakowało w 0.9.6 dostałem w testowej wersji z nawiązką ;) Dodatkowo jest on w czołówce jeżeli chodzi o wydajność, tutaj możecie zobaczyć małe porównanie. 

Z drugiej strony początki z nowym frameworkiem zawsze bywają trudne, tak też było w tym przypadku. O ile dokumentacja znajduje się na stronie to albo jest ona niekompletna albo bardzo zdezaktualizowana. Zaczynając z 0.9.6 miałem bardzo duży problem ze wspomnianymi skinami, okazało się że różnice pomiędzy 0.9.6 do 0.9.8 i wyżej są znaczące. Mam wrażenie że cocos2D poszło mi na początku łatwiej niż z libGDXem ale pewnie jest to spowodowane tym, że cocos2D jest wyżej poziomowy niż lbGDX. W cocosie2D nie musimy przejmować się kamerą/viewportem lub spritebatchem aby coś pokazać. 

Tak czy inaczej polecam wam libGDXa, sam silnik jest przemyślany i ma mnóstwo udogodnień. Polecam wam także Cocosa2D-X jeżeli za wszelką cenę nie poszukujecie dużej wydajności, jestem pewien że metody nie różnią się od wersji javowej zbyt dużo, problemem może być C++, jego nieład w postaci plików nagłówkowych, prototypów funkcji itp. ;] i tak pewnie będę musiał się tego wszystkiego nauczyć. 

Jest także kilka innych silników, z popularniejszych AndEngine ale nie może on pochwalić się dużą wydajnością na tle dwóch poprzednich, także sam nic w nim nie robiłem dlatego jest o nim tylko krótka wzmianka :]

Czytaj dalej/Read more!

czwartek, 4 kwietnia 2013

Droid Painters - Samsung App Cup



Chciałbym przedstawić grę wykonaną przeze mnie oraz mojego dobrego znajomego na konkurs organizowany przez firmę Samsung. Sam konkurs nosi nazwę Samsung App Cup i jest organizowany na terenie Polski. Aplikacje należało zgłaszać do 31 marca 2013. Można było zgłosić aplikację lub grę, w zależności od własnych preferencji :]

Wybraliśmy grę ze względu na realizację pomysłu, którego nie widzieliśmy do tej pory na urządzeniach mobilnych. Dodatkowo chcieliśmy poznać silnik LibGDX, który moim zdaniem w najbliższym czasie warto znać chociażby dlatego że jest na tle innych bardzo wydajny, darmowy i ciągle bardzo dynamicznie się rozwija. O libgdxie i o jego wadach i zaletach napiszę za niedługo w osobnym wpisie.

Co do samej gry, nazywa się Droid Painters, możecie ją znaleźć w sklepie Samsunga (Link). Chodzi o to aby przez 120 sekund zamalować jak najwięcej planszy. W czasie rozgrywki pojawiają się bonusy, które mogą pomóc Ci wygrać (powiększają strumień malowania, zamrażają Twoich przeciwników itp.) ale są też bonusy, które szkodą. Przed rozgrywką należy wybrać kolor i imię poszczególnych graczy. Na chwilę obecną najlepszymi urządzeniami do zabawy w malowanie są tablety ze względu na rozmiar ekranu. Można grać z trzema osobami jednocześnie na jednym urządzeniu. W przyszłości planujemy dodać rozgrywkę po Bluetooth lub WiFi :)

Regulamin obliguje nas że aplikacja przez pierwsze 6 miesięcy będzie tylko w sklepie Samsunga, na pewno po tym okresie wrzucimy ją do sklepu Googla ;] Miłej zabawy ze znajomymi!






Czytaj dalej/Read more!

niedziela, 10 marca 2013

1 000 000 - Teeter Pro

   
                 

     Niedawno Teeter Pro przekroczył liczbę miliona ściągnięć stając się drugą bardzo udaną produkcją. Co ważne nadal, po mimo upływu pierwszych 31 dni od wydania liczba ściągnięć w każdy dzień wynosi około 55 tysięcy. Na pewno czynnikiem decydującym jest to że jest to gra prostsza niż Parkin Truck. Bardzo dużo opinii w postaci komentarzy mówi o tym że Parking Truck jest trudny, nie jest to gra dla wszystkich. Z Teeterem Pro jest inaczej, wystarczy doprowadzić kulkę do odpowiedniej łuzy. 


       Mam kilka spostrzeżeń po wprowadzeniu systemu komentarzy z konta Google+. Dzienna liczba komentarzy jest o wiele mniejsza niż przedtem. To sprawia że trudniej jest poprawić ranking aplikacji we wspomniane 31 dni. W przypadku Teeter Pro przez dwa pierwsze tygodnie niewiele się działo, dopiero kampania rozpoczęta w AdMobie dała dobre rezultaty. Także relacja kliknięć +1 dla Google+ do komentarzy/ocen jest nie porównywalna. Jeżeli nie masz solidnej aplikacji gdzie możesz zareklamować swoją nową produkcję lub nie chcesz wydawać pieniędzy na kampanie reklamowe to obecnie ciężko jest się wybić niezależnemu deweloperowi. Jednym słowem jest trudniej...



Czytaj dalej/Read more!

czwartek, 7 lutego 2013

House Ads - AdMob



Niekiedy chcemy pomóc aplikacji w wypromowaniu się. Możemy kupić recenzję na jakimś znanym portalu związanym z tematyką Android, jasne jest że wiąże się to z dodatkowymi kosztami, które narzuca nam recenzent. Jeżeli chcemy tego uniknąć możemy wykorzystać tak zwane house ad. House ad to rodzaj reklamy polegający na promowaniu własnych (bądź cudzych ;) produkcji. Zaletą tego typu reklamy jest to, że nie płacimy nikomu za pokazywanie naszego bannera. Poświęcamy jedynie naszą powierzchnie reklamową we własnej aplikacji/aplikacjach, w tym momencie nic nie zarabiając (w zależności od stosunku wyświetlanych reklam).

W kilku krokach chciałbym opisać jak stworzyć kampanię promującą aplikację przeznaczoną na telefony/tablety z Androidem. Przykład opiszę na podstawie sieci Admob, niektóre elementy są analogiczne także w innych sieciach reklamowych oferujących house ads.

Pierwszym elementem jest odszukanie przycisku House Ads w zakładce Sites & Apps. 




Następnie klikamy na przycisk tworzący nową kampanię reklamową.


Podczas tworzenia naszej kampanii musimy wybrać przedział czasowy kiedy będzie ona działać, nadać jakąś nazwę, typ (Android App Download) oraz opcjonalnie krótką notatkę.


Kolejnym krokiem jest wybranie naszych aplikacji w których będziemy pokazywać reklamę. Taką grupę aplikacji musimy nazwać. Ważnym polem jest Ad Group Impression Goal, tam wpisujemy ile wyświetleń poświęcamy na pokazanie naszego bannera. Możemy zaznaczyć Fully allocate, wtedy każde wyświetlenie będzie pokazywało reklamę naszej aplikacji bez jakiegokolwiek limitu. 



Następny ekran to urządzenia oraz wersje Androida, domyślnie zostawiamy bez zmian. Możemy także ustawić region geograficzny, oraz to czy reklama wyświetlać ma się przy połączeniu WiFi/3G. 



Ostatni krok to wybranie typu bannera. Mamy dwie opcje, pierwsza to wyświetlanie tytułu aplikacji + małego opisu, druga to wyświetlenie obrazka. Polecam zdecydowanie tą drugą opcję, dobrze zrobiony banner pozwala na uzyskanie wyższego CTR, a tym samym na dotarcie do szerszego grona odbiorców. Wpisujemy także link do aplikacji w pole URL.



Tak stworzona kampania może pomóc w uzyskaniu większej liczby instalacji w ciągu dnia o ile mamy solidne aplikacje produkujące określoną liczbę wyświetleń. Jeżeli nie mamy wspomnianych wyświetleń zawsze możemy zamówić u kogoś taką kampanię ;]

Czytaj dalej/Read more!

czwartek, 31 stycznia 2013

Teeter Pro


Chciałbym przedstawić moją kolejną produkcję - Teeter Pro. Gra powstała w celu przećwiczenia obsługi parsera XML ;]. Po kilku usprawnieniach i dodaniu leveli postanowiłem wydać ją na Google Play. Poziomy powstały w programie Gleed2D , który polecam ze względu na szybkość tworzenia wspomnianych poziomów ;]. Miłej zabawy!








Czytaj dalej/Read more!

niedziela, 27 stycznia 2013

Detekcja tabletu/telefonu - Android


Podczas tworzenia nowej produkcji natknąłem się na pewien problem związany z osiami akcelerometru w urządzeniach z Androidem. Różnica wynika z tego że większość tabletów (szczególnie 10 calowych) posiada domyślny widok poziomy (landscape), a nie taki jak we wszystkich telefonach i niektórych 7 calowych tabletach czyli pionowy (portrait). Z racji tego że używam portu silnika z iOS (Cocos2D) musiałem sam zadbać o detekcję. Pierwszym pomysłem było wyliczenie w kodzie przekątnej ekranu i ustawienie zmiennych położenia w metodzie cocosa : void ccAccelerometerChanged(float accelX, float accelY, float accelZ) tak aby dopasowały się do urządzenia. Ten pomysł niestety nie zadziała, mimo że wyliczymy przekątną, to jeżeli będzie miała 7 cali i uruchomimy aplikację np. na Nexusie 7, to z racji tego że ma on tryb poziomy jako domyślny, osie się zamienią co będzie skutkowało poważnym błędem. Najlepszym sposobem było by pobranie aktualnej orientacji urządzenia (layout/portrai) i sprawdzenie aktualnej rotacji w stopniach.
 

Powyższa metoda sprawdza oryginalną orientację ekranu. Pobieramy aktualną pozycję ekranu (cfg.orientation) oraz rotację i porównujemy. Warto zauważyć że pomiędzy widokiem telefonu i tabletu jest 90 st. różnicy, a więc jeżeli wykryjemy tryb landscape oraz 90 st. rotacji to jesteśmy pewni że nasza aplikacja została uruchomiona na telefonie. Jeżeli urządzenie raportuje o trybie landscape i 0 rotacji to mamy pewność że jest to tablet z domyślnym widokiem poziomym.


Taką metodą możemy jednokrotnie sprawdzić podczas pierwszego uruchomienia aplikacji z jakim urządzeniem mamy doczynienia ;] Sam kod nie jest mojego autorstwa, znalazłem go po kilkudziesięciu minutach intensywnych poszukiwań na stackoverflow.com. Metoda została przetestowana na Nexusie 7 i HTC Desire Z, niestety nie mam dostępu do fizycznego urządzenia z natywnym trybem poziomym ale emulator potwierdził poprawność działania. 

Czytaj dalej/Read more!