Posts Tagged ‘Android’

Flash Colors – Game using seperate Sound Class

Another app in the Google Play Market. This time, I focussed on how to create a seperate class to handle Sounds. The app is quite simple. It shows colors. The user can choose one of 3 playing modes; simple, medium (remember growing series) or hard (remember random series). It was a challenge to work with a seperate Sounds class, that would handle sound playing. For this app, I used SoundPool. There is one other method to play sounds, MediaPlayer. The latter is for large sounds, music and so on. For Flash Colors, a small soundbite is sufficient, so SoundPool will do. First, we create a seperate class that we can invoke when sounds are played ;   import android.media.SoundPool; public class DoSound { private static SoundPool soundPool; private static HashMap<Integer, Integer> soundsMap; static int SoundYeah = 1; static int SoundWrong = 2; public static void initSounds(Context context) { soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100); soundsMap = new HashMap<Integer, Integer>(); soundsMap.put(SoundYeah, soundPool.load(context, R.raw.yeah, 1)); soundsMap.put(SoundWrong, soundPool.load(context, R.raw.wrong, 1)); } /** Play a given sound in the soundPool */ public static void playSound(Context context, int soundID) { if(soundPool == null || soundsMap == null){ initSounds(context); } float volume = 1.0f; soundPool.play(soundsMap.get(soundID), volume,… >> Lees meer…

Imagination Trainer – Developing for older Android versions

This month, I finished work on a brand-new app that jogs your Imagination. Einstein said : “Logic will get you from A to B. Imagination will take you Anywhere”. As a dad, I like to make up bed-time stories. I found it was very hard for the kids to dream up random characters, items and locations for these stories. Those factors combined made this app. Imagination Trainer serves you with nine random images. Can you make up a story that uses all this pictures? Think outside the box. Try to stretch your story and introduce a plot, an intrige or maybe let your kids wonder what image will make its entrance next? Programatically, this was not a very big deal. Until I found out that my code wouldn’t run on pre-Honeycomb Android versions! Don’t be mistaking, there are lots of people who won’t update their phones. My MinSDK was 11, which maps to Android 3.0. This API level was needed, because I used the setAlpha property for ImageView :   view.setAlpha(1f); I actually forgot to set the MinSDK in my AndroidManifest. Within a few hours, complaints started coming in :D. So, I shuffled around some code, and came up with… >> Lees meer…

WieBenIk : Functionaliteit uitgebreid

In de Google-market maakte Chantal de opmerking dat WieBenIk te moeilijk is. Zij had het geinstalleerd, gespeeld, maar niet geraden dat ze “Google” was. Tja. Ik heb het zelf met 3 anderen 1,5 uur lang gespeeld. We hebben veel gelachen en eigenlijk vonden we het niet echt te moeilijk. Je moet wel je medespelers op het juiste moment een hintje geven … Juist daar dacht ik aan een stukje automatisering. Dit weekend ben ik dus aan de slag gegaan met het maken van 3 hints per woord. Ook de code moest daarvoor een beetje worden aangepast. Op het moment dat we een woord uit de database halen, kunnen we ook meteen de hints erbij laden. De database heeft er dus 3 kolommen bijgekregen, die ik uitlees. De resultaten plaats ik in een String Array, zodat het later makkelijk is om de variabelen te vullen met de verschillende hints. De DBHelper heeft dus een nieuwe methode gekregen : public String[] getRecord(long rowId) { SQLiteDatabase db = getReadableDatabase(); Cursor c = db.query(TABLE_NAME, new String[] { WORD, “HINT1”, “HINT2”, “HINT3” }, _ID + “= ” + rowId, null, null, null, null, null); if (c != null) { c.moveToFirst(); } db.close(); String[] result; result… >> Lees meer…

Nieuwe app : Wie Ben Ik ?

Ik was op zoek naar een leuk spelletje, dat je met veel mensen kunt spelen. Bijvoorbeeld om elkaar iets beter te leren kennen, samen te lachen of gewoon als tijdverdrijf. Het moest een spelletje zijn dat je kunt spelen in een groep, maar ook met z’n 2en. Misschien zelfs wel in de trein, met mensen die je niet kent. Tijdens een weekend van Mensa speelden we “WelkSpel”. Een geweldig leuk spelletje met 3 rondes. In ronde één moet je een omschrijving geven van een persoon, je team moet raden “wie je bent”. Ik begon wat te fröbelen en, tadaa : Wie ben ik op je Telefoon! Dus vandaag heb ik weer een app gepubliceerd in de Market. Ik ben nog bezig met de verfijning en ben dan ook erg nieuwsgierig naar jullie op- en aanmerkingen. Sowieso zit er nog wat werk in de vertaling. Daarnaast ben ik bezig met een andere GamePlay. We noemen het “WelkSpel” en het lijkt een beetje op de ronde ‘raadt de bekende Nederlander’ van Ik Hou van Holland. Het ontwikkelen van deze app ging behoorlijk goed! Inmiddels beginnen de JAVA tutorials hun vruchten af te werpen en begrijp ik een beetje hoe je Object Oriented… >> Lees meer…

Cursus en tutorials online

De afgelopen week heb ik een een paar dagen cursus Android Development gevolgd (kostte me wat vrije dagen, maar was de moeite meer dan waard!). Tijdens de cursus werd mijn vermoeden bevestigd; Eigenlijk zijn het niet de specifieke Android-dingen die ik niet begrijp. Ik heb de JAVA-Basics gewoon niet onder de knie. This, Context, inner- en outer-classes en static operators. Al die termen zeggen mij eigenlijk (nog) helemaal niets. Zie ook deze blogpost. Ik heb de Apps die tot nu toe in de market staan, gebouwd door gewoon maar code kopiëren-en-plakken. Elke keer als ik een fout tegenkwam, heb ik Google geraadpleegd en met veel pleisters en extra code de boel maar weer opgelost. Dat heeft als resultaat dat mijn code niet overeenkomt met welke conventie dan ook (behalve misschien mijn eigen, haha). Tijdens de cursus leerden we onder andere hoe je een XML pagina kunt ‘parsen’ en om kan zetten in FeedItems voor in een Listview. De Listview kun je dan weer tonen in een App. Interessante technologie! Ik dacht meteen aan mijn – vaak voorkomende – ergernis: Als Mensa-lid heb ik toegang tot de ledenlijst, waar ik soms een telefoonnummer of contactgegevens in wil opzoeken. Op dit moment… >> Lees meer…

Verdienrapport #1 – Estimated Earnings, Balance en Tap4Tap

Langzaam beginnen de contouren van het verdienen zich af te tekenen. De eerste stappen richting het doel. Nu wordt duidelijk hoe e.e.a. inelkaar zit en zijn de eerste rapporten beschikbaar. AdMob (adverteren in Apps) heeft al een keer $25 uitbetaald. De “Estimated Earnings” (de geschatte verdiensten per 1.000 indrukken) liggen op dit moment rond de $1,91. Als ik dat extrapoleer; Per maand moeten de Advertenties in de apps ca. 1.000.000 keer bekeken worden om een reëele verdiencapaciteit van iets minder dan 2.000 euro te bereiken. Ter vergelijking; FlitsWoorden heeft op dit moment ongeveer 100 indrukken per dag. FlitsWoorden is ca 4.000 keer geïnstalleerd, waarvan 2.000 actieve installaties. Ik doe een hoop aannames EN… Als 50% van de installaties actief blijft moet FlitsWoorden dus ca. 1.400.000 keer geïnstalleerd worden om te komen tot de 35.000 indrukken per dag (= ca € 65). FlitsWoorden is een mooi model, want er blijven kinderen instromen in groepen 2 en 3 van de basisschool. Onderhouden, dus. Kijkend naar de revenue-grafieken van FlitsWoorden valt op, dat de app het meest wordt opgestart op woensdag. Waarschijnlijk vanwege de halve dag vrij. Ik verwacht tijdens vakanties een dip te zien. Daarnaast verwacht ik vlak voor de start van… >> Lees meer…

Ideeënstroom – So much to do…

Ik ben een beetje aan het fröbelen met Speed.java. Daarmee kan ik de fruitjes in aPpLeZ wat snelheid geven. Terwijl ik dat zo aan het doen ben schieten de ideeën door mijn hoofd. aPpLeZ moet beter, leuker en uitgebreider. Ondertussen komt het eerste crashrapport van de Google Playmarket binnen. Een gebruiker is zo vriendelijk geweest om op Rapport te drukken (bedankt, Peter ;)). java.lang.NullPointerException at happyworx.nl.Applez.MainGamePanel.onDraw(MainGamePanel.java:271) at happyworx.nl.Applez.MainThread.run(MainThread.java:58) Voor apps die obscure code bevatten, bevatten stacktraces obscure symboolnamen. … Wat er bedoeld wordt met “obscure symboolnamen” weet ik niet precies, maar wat er misgegaan is, gelukkig wel. Op regel 271 van de MainGamePanel worden de appeltjes getekend. Kennelijk heeft het spel geprobeerd een appel te tekenen die er niet meer was. Dat komt waarschijnlijk door de snelheid (traagheid) waarmee sommige arraylists worden leeggemaakt. Ik heb fluks één en ander veranderd in de code en een nieuwe versie in de Market gelanceerd. Nee, helaas geen team van testers om een uitgebreid test traject mee uit te voeren ;(. Ondertussen bedenk ik allemaal leuke extraa’tjes. Appels die langzaam groter worden (dan zijn ze makkelijker te pakken), een levelcounter, na level 5 gaat dan alles draaien, na level 10 ook bewegen. Je kunt… >> Lees meer…

How-to : Een simpele Game Loop

Mijn aPpLeZ-Game is gebaseerd op een eenvoudige tutorial, Droidz . In de komende posts zal ik uitleggen hoe het raamwerk van de game eruit ziet en hoe je zelf een simpele game kunt bouwen. Daarnaast zal ik ingaan op de problemen die ik tegenkwam bij het ontwikkelen van Applez. Uiteindelijk heb ik, voor Applez, 12 vragen gesteld aan de StackOverflow community. Als je in die community even zoekt op mijn naam, kun je vrij makkelijk de vragen over Applez vinden. Goed. Een game. Hoe werkt dat eigenlijk in Android? Je moet bedenken dat er sprake is van een eenvoudige architectuur. De basis is eigenlijk : Controleer gebruikersinput > Controleer plaatsen en gebeurtenissen van objecten (Physics) > Verwerk data > Teken het scherm > Speel geluid af. Daarna begint de loop weer opnieuw. Dat alles gaat zo snel, dat je erop moet rekenen dat je bij een simpel spelletje, zoals Applez, al snel 50 keer per seconde het scherm kunt tekenen (50 Frames per Second). In de tekening bij deze post kun je de beschreven architectuur herkennen. Hieronder geef ik de code voor een simpele game-loop. CopPa (jep, CopyPaste 😉 ) maakt gebruik van een Background, een View, een Thread en… >> Lees meer…

aPpLeZ gepubliceerd in de Market

Link naar market Het is zo ver.. weer een nieuwe game van mijn hand in de Market! De vakantie is nuttig geweest, vooral om even afstand te nemen en een Architectuurtje te maken. Dat bleek toch nodig. De code is nog steeds niet zo mooi als zou kunnen, maar het spelletje werkt en is volgens mij ook best leuk om te doen. Ik werk nog aan geluid (om het echt irritant te maken) en een deel-op-facebook knop voor je scores ;). Andere verzoekjes? Roept u maar! Dan even inzoomen op het verdienmodel (want uiteraard dient ook aPpLeZ bij te dragen aan het doel). Ik heb weer gekozen voor een in-App advertising model. Mijn vriendinnetje raadde me aan om full-screen ads te gebruiken tussen de levels in. Ik denk dat die inderdaad erg goed werken. Toch heb ik gekozen voor – voorlopig – bannerads. Vooral omdat de game nog niet voorziet in levels van verschillend moeilijkheidsniveau. Omdat er geen XML bestanden zijn die de Layouts vormen, was voor implementatie van de Advertisements nog best een truukendoos nodig. In mijn Activity maak ik een RelativeLayout aan. Daar voeg ik zowel het GamePanel als de AdView aan toe ; rl = new RelativeLayout(this);… >> Lees meer…

B2B Apps ; Something completely different

Ik ben architect. Géén professionele App-Developer. Dat is slechts een hobby. Met mijn hobby richt ik me op de consumenten markt. Een overzichtelijke market. Het publicatie proces is kinderlijk eenvoudig, als je een beetje op het versiebeheer let. Het meeste werk zit in het ontwikkelen van de App. Hoe anders is het met Business 2 Business applicaties! Als Business Process Architect, werk ik onder andere aan Smart Mobility proposities. Met deze diensten helpen we bedrijven en overheden de mogelijkheden van Apps en mobility te herkennen. In mijn rol als bedrijfsprocesarchitect kom ik spannende en leuke trajecten tegen. Op veel plekken zie ik ook wat er gebeurt als bedrijven onvoorbereid aan Mobile Solutions beginnen… Veel bedrijven beginnen aan mobility oplossingen en laten dan onder andere een App bouwen. Net zoals in de vroege jaren ’90 websites werden gebouwd. Kleine bedrijfjes bouwen snel een App, maar geven de code niet prijs. Misschien zijn ze zelfs opgeheven als er iets gewijzigd moet worden. Ik wil niet alle app-bouwers over één kam scheren. Er zitten zeker goede bij. En… er zijn ook veel bedrijven die Inmiddels weten we, in het geval van websites, dat we rekening moeten houden met een wijzigende wereld. We zien… >> Lees meer…

FlitsWoorden – Een onverwacht succes?

Niets zo leuk als voorlezen voor de kinderen. Op een zeker moment gaan de appeltjes van je oog ook zelf het lezen ontdekken. Maar voordat geen Donald Duck meer veilig is, moet eerst worden geoefend. Op school wordt gewerkt met ‘kernen’. Kleine woordjes, die worden aangeleerd en getest. De kernen in de App komen niet exact overeen met de school-kernen, maar ze zijn wel ongeveer van hetzelfde moeilijkheidsniveau.Als een klas het eind van een kern bereikt heeft, worden één-minuut leestesten afgenomen. Hoe meer woordjes het kind kan lezen in een minuut, hoe beter. Rond dit idee zette ik FlitsWoorden in de markt. Ik had niet de verwachting dat het een groot succes zou gaan worden. Ik dacht dat ouders liever een boek zouden pakken om hun kinderen te helpen met lezen. Toch werd FlitsWoorden in 3 maanden tijd bijna 3.200 keer geïnstalleerd! Het idee achter de app is vrij eenvoudig. Er wordt een woordje getoond. Als je tikt op het woordje, verschijnt het volgende woord. Eind maart 2012 maakte ik de extra test-functionaliteit; Een stopwatch die een minuut loopt en telt hoeveel woordjes er zijn gelezen. Doordat de App op verschillende sites werd besproken en zelfs in nieuwsbrieven van basisscholen… >> Lees meer…

JollyJot XMas – Hoe een gratis versie meer oplevert.

Na het kleine succes van JollyJot, besloot ik een andere versie te maken die ik gratis zou aanbieden op de Android Market. Omdat ik een doel heb met mijn App-schrijverij, moet de app wel geld opleveren. Daarom besloot ik deze versie van JollyJot te voorzien van in-app advertising. JollyJot XMas is een remake met een kerst-thema. De vraag die JollyJot XMas aan de gebruiker stelt is niet  “Wat zou je doen met een miljoen?”, maar “Wat is jouw kerst-wens voor de wereld?” De werking van de app is exact identiek aan het origineel. Het invoegen van de advertenties was geen lastige opgave. Het Google platform AdMob is duidelijk gedocumenteerd en er zijn op Internet stap-voor-stap implementatiehandleidingen te vinden. Het was interessant te onderzoeken of het advertentiemodel lucratiever is dan het betaalmodel. Na 8 dagen in de market was de gratis versie al net zo vaak geïnstalleerd als de betaalde versie in 3 maanden! De advertenties leveren niet heel erg veel op. Je moet een flinke installed base hebben om een paar cent per dag te kunnen bijboeken. Het hoogtepunt van de advertentie inkomsten was rond de kerst (geen verrassing ;)). Toen op één dag de inkomsten boven $1 uitstegen, was… >> Lees meer…

JollyJot, een Twitter Wrapper.. en.. To pay or not to pay!

Op 12 oktober 2011 publiceerde ik mijn 2e applicatie in de Android Market. Mijn vriendin is vaak bezig met onder andere Abraham Hicks. Ikzelf ben in 2007 NLP Practitioner geworden. Het idee iets ‘te bestellen’ in het Universum heeft me altijd erg aangesproken. Christenen noemen het bidden, anderen doen een wens bij een vallende ster. Abraham Hicks gebruikt de term “Rockets of Desire“. Het zette mij aan het denken; Wat als je de aandacht van heel veel Internet gebruikers zou kunnen combineren om jouw persoonlijke wens meer ‘gedachtenkracht’ te geven? Sommige filosofieën zeggen : “Wat je aandacht geeft, dat groeit“. Stel nu, dat je niet de enige bent die de aandacht geeft, maar 1.000 anderen ook. Of misschien wel 5.000? Er is een snelle en simpele manier om je gedachten te delen met een grote groep mensen. Twitter. Het werd mijn doel een Twitter-achtige applicatie te schrijven, gebaseerd op het gedachtegoed van The Secret, Hicks, Anthony Robbins en vele anderen. Vrolijkheid speelt altijd een grote rol in mijn werk en mijn leven. De naam voor de App was dan ook snel gevonden; JollyJot. Ik heb besloten om de app iets meer toe te spitsen op een specifieke vraag. Wat zou… >> Lees meer…

Android, iOS, Java, SDK, adWords, adMob, StackOverflow, NPE..

Eenmaal besloten dat ik mijn PI zou gaan verdienen met Apps, moest ik een paar keuzes maken. De verleiding is groot om te gaan zitten wachten op HET idee. De killer-app. De app die alle andere apps overbodig maakt. Uit ervaring weet ik inmiddels, dat er weinig gebeurt als je gaat wachten. Ondernemen is ook ‘gewoon beginnen’. En vallen. En weer opstaan. In de afgelopen 10 jaar is wel mijn houding en gedrag veranderd. Voldoende om niet in dezelfde valkuilen te stappen. Ik maak me geen zorgen. Er zijn vast genoeg nieuwe valkuilen te ontdekken. 😉 Ik weet niets van JAVA. Ik weet niets van Apps maken. Ik weet niets van iOS. Ik weet niets van… Tja. Gewoon beginnen klinkt eenvoudig. En dat blijkt het ook te zijn! Google geeft je alle informatie die je nodig hebt. De keuze voor het platform was snel gemaakt. Als je voor Apple wilt ontwikkelen, moet je 99 dollar betalen.. per jaar! Als je bedenkt hoe je PI zich zal ontwikkelen, een te verwaarlozen bedrag. Bij Android (Google Play) kost een ontwikkel-account 25 dollar. Eenmalig. Een net iets meer te verwaarlozen bedrag. Apple modereert welke Apps gepubliceerd worden. Android (Google) niet. Dat betekent dat… >> Lees meer…

De achtergrond, het doel en een warm welkom

Op 13-jarige leeftijd besefte ik, dat de sleutel tot zorgeloos leven onder andere ligt in het verwerven van een passief inkomen. Ik wist alleen nog niet dat het zo heette. In 1992 was er nog geen groot, publiek ontsloten Internet. Er waren wel zg Bulletin Board Systemen (BBS). Op mijn 286 AT 6 Mhz kon ik met mijn 26 MB harde schijf met zo’n systeem opzetten. DataWave werd binnen 2 jaar een volwaardig BBS met 3 inbelpunten en een aansluiting op CachetNet en KroonNet (de e-mail van de vroege jaren ’90). Ik vond het geweldig mensen toegang te verschaffen tot “gratis” post, bestanden en nieuwtjes. Mijn eigen kosten liepen snel op: Een telefoonlijn (noodzakelijk om mijn ouders niet op de kast te jagen) en regelmatig nieuwe apparatuur om bij te blijven. De enige manier om de kosten te compenseren, was het verkopen van abonnementen. BBS gebruikers konden toegang krijgen tot afgeschermde functionaliteiten en gedeelten van het systeem door 20 gulden per jaar (met eventueel een staffelkorting) over te maken op mijn rekening. Daar heb je het; een passief inkomen. Het systeem draaide, de electronische post werd midden in de nacht opgehaald en verspreid. De abonnees betaalden. Ik hoefde nauwelijks te… >> Lees meer…