Category Archives: Android

Tabs on Android

Using a tabbar, either at the top or bottom of an interface, is a typical design pattern used in apps to navigate between segments. This is used by the Android Twitter client for example. The typical way to implement this is by using TabWidget, TabActivity, TabHost and friends. Each tab is populated with whatever activity you want and all is well.

There is a problem with this approach however. If you start a new activity the tabs (area A, B, C) all disappear and this is not always what you want. Sometimes what you want is to keep the tabbar around and have an individual backstack for each of the tabs.

Typical tab layout

Typical tab layout

I’ve published an example on github that shows how you can get the best of both worlds. It explains how to keep an individual backstack for each tab, but also how to start activities that break out of the tabs as is the traditional way on Android. The Back button still works and you can also programmatically navigate back. The behavior of back is changed to respect the backstack of each individual tab.

If you want to try it out yourself I’ve compiled an Android package for you. Navigate to http://bit.ly/stacksintabs with your Android device and install the .apk to check it out.

Navigation in the example

Navigation in the example

The design is very simple. I still use TabWidget, TabHost and TabActivity (layout here) – but instead using normal activities for each tab, I subclass FragmentActivity – and build a stack of Fragments inside each tab. The gist of the code is in the addFragment(…) function

To launch a new fragment inside a tab (area D), see the launchNewFragment() function, and to see how you break out of the tabs and launch a new activity (area E) see the function launchNewActivity(…)

The fragments and activity I use are just examples, the point is that you replace ExampleActivity and ExampleFragment with you own classes.

My initial approach at solving this problem was using Fragments exclusively, but since nested Fragments are not supported on Android I gave up.

I hope this helps some of you – it’s all available under a BSD license. The example requires API level 7 and uses the Android Support library v4. Comments and contributions are welcome. Btw: I’m also working on a comparison between QML and Android XML where I compare pros and cons, so stay tuned for more :)

Qt Developer Days 2011 in Munich

We’re back from Qt Developer Days 2011 in Munich, Germany. What a great show! For those of you who werent’ there here is a small recap of what happened from our perspective. First, some pictures

This slideshow requires JavaScript.

Both Marius and I were presenting in Munich. Marius dissected the code of several of our apps, and explained how QStateMachine makes your life easier. The talk is available here:

I talked about Necessitas, Qt and Qt for Android and basically explained how you publish Qt apps on the Android market. That talk is available here:

Now we gotta work to catch up on other projects!

Share

Qt mobile platforms poll

We in Cutehacks are trying to gage the developer interest in Qt for Android and Qt for iOS. Thank you for taking the time to answer this short poll.

Update: added nice charts so you can see the results so far.

Update: the poll has ended. A total of 344 people answered our questions. Thanks to everyone that participated!

You can also play with the interactive charts here.

Share

Cutehacks 1st year – An executive summary

Time flies when you’re having fun, and we’ve had lots! It’s been year since we started Cutehacks. Here is a short summary of what we’ve achieved, and what we’ve learned – the good stuff and the bad stuff.

For the executive brief, check out the video below.

Achievements

  • Formed a legal company
  • Got an office and bought hardware
  • Got an accountant, lawyer, designer etc.
  • Published 4 Symbian apps
    • Yr.no for NRK
    • Telenor Faktura for Telenor
    • WiMP for Aspiro
    • Fly for ourselves :)
  • Made our Symbian apps run on Maemo, MeeGo and Android as well
  • Contributed a bit to Qt for Android
  • Created a UI prototype on Win/Mac/Symbian for a client
  • Went to Qt Developer Days, Qt Contributor Summit, MeeGo Summit, Akademy, SEE, etc.
  • Consulted for ad-agencies and printing companies
  • Stayed at five star hotels – for FREEEEE
  • Got 3 minutes on national TV
  • Got mentioned on lots of mobile sites
  • Started a tech-startup-network-club-thingy
  • Got tattooed
  • Got paid

Three things we’ve learned

“If you set yourself goals, you will actually reach them”: When we started Cutehacks we said that an ideal project for us would be to develop the WiMP client. One year later, we actually achieved that. We’ve also worked towards getting our apps running across multiple platforms – this is also starting to happen.

“Ask and you may receive”: We’ve gotten free hardware, new projects and invitations to talks – simply by asking for it.

“The only constant is change”: Wow, this one has definitely been true for us. We didn’t see 2/11 coming – but once it did, we’ve simply had to adjust and move on.

Some advice for software startups

  • Use LinkedIn
  • Use Twitter
  • Use YouTube
  • Use Google Apps (Mail, Documents, Calendar)
  • Use Github (or similar)
  • Use WordPress (or similar)
  • Use a professional accountant
  • Use a professional designer
  • Present at conferences
  • Say Yes more than No
  • Build up your IP
  • Act professional
  • Use your network
  • Ask for things
  • Get an office
  • Always look for new projects
  • Experiment with new technology
  • Get signed contracts
  • Always go to a meeting prepared
  • KISS
  • Do it

Share

Cutehacks at the Qt Contributers’ Summit

A big ‘Guten Tag!’ from Berlin and the Qt Contributor’s Summit! We’ve already attended the pre-summit Qt for Android meeting and are now at the Café Moscau where the actual summit is taking place.The place is buzzing with sessions and discussions about present and future Qt development. About half the people present are non-Nokians and all are enthusiastic and engaged in shaping the future of their favorite cross-platform toolkit. There are people walking around with various Android devices and iPads running ports of Qt.

So far it’s been a fun, interesting and productive event. It’s a great venue and it’s all been extremely well organized, including working wifi (!) and free drinks. We will stay here until the end of the event on Saturday, so if you’re in Berlin and want to talk to us, give us a ping or look around for the Cutehacks logo.

Share

Cutehacks targeting Android, Symbian and more

Here is a video of two apps developed by Cutehacks: Yr.no and Fly running on Android 2.2 and Symbian. These native apps were originally written for Symbian but run great on Android as well:

Using Qt for Android (more specifically Necessitas and Ministro), the amount of code changes we had to do were minimal. This shows the power of Qt – it truly is cross-platform. Too see these apps running on MeeGo and Maemo as well – check out this video.

None of the apps above are available in Android Market yet. Be assured we’ll tell you when/if that happens :)

Share

Cutehacks developing WiMP

Press coverage

The Nokia mobile platforms might have lost one music service today, but it’s soon gaining another. Today we’re announcing that Cutehacks is developing the mobile client of WiMP (by Aspiro) for the Symbian platform. We’re going to use Qt and Qt Quick, which will make it pretty easy to provide the service for any coming MeeGo handsets as well. We’re focusing on Symbian^3 at the moment, but may later extend backwards to older Symbian platforms if there is a demand.

Wimp logo

If you don’t know what WiMP is, think of it as a direct competitor to Spotify. It is basically a streaming music service that, for a monthly subscription, gives you access to all the music of the world. It’s even got Pink Floyd (which Spotify doesn’t). You can see some screenshots and read more about WiMP here. Wimp is already available on Mac, Windows, iPhone and Android – so it is high time we bring it to the Nokia platforms as well. We are very pleased to get this project and are looking forward to working together with the guys at Aspiro.

We’re hoping for a relase this half of 2011, but that is up for Aspiro to decide so stay tuned for more news :)

Also, we’ve gotten some media coverage here in Norway already. Check out these article in digi.no (norwegian / english) and amobil.no (norwegian / english). Oh, and those are Google Translate english, so don’t complain to me if it’s messed up ;)

Anways, exciting times for us here at Cutehacks!

Share

Cutehacks is hiring

We started Cutehacks to have a fun and interesting place to work, and so far it’s been a huge success. In fact it’s so much fun, we need more people to play with :) That is why we’re looking for experienced developers to join us in developing mobile apps for Symbian, MeeGo and Android.

Here is a small sample of the apps we’re working on at the moment or have in our pipeline:

Apps in development

We are looking for a passionate programmer who cares deeply about code, design and user interfaces.

Qualifications:

  • expert knowledge of Qt and C++
  • cross platform development experience (Windows, Linux, Mac)
  • plus: Symbian, MeeGo, Android, iOS or RIM knowledge
  • plus: talent for graphical and UI design
  • plus: knowledge in HTML and web services

Your job will be:

  • code and test
  • design and implement user experiences
  • communicate with customers
  • help build the company
  • have fun

We can offer:

  • exciting projects and interesting technical challenges
  • central offices in Oslo (Forskningsparken)
  • lunch with fresh bread , fresh coffe and good friends
  • no bureaucracy and no hierarchy
  • high degree of autonomy and freedom
  • a desk full gadgets ;)

How to apply:

Mail the following to jobs@cutehacks.com

  1. CV
  2. Code examples
  3. Cover letter

If you wonder about us and the offices, here is a video of our 1st day at work  :)

Share

Qt Quick on a Samsung Galaxy Tab – Devinco visits

Today Ole-Johan from Devinco visited us. He is interested in Qt on several platforms, including Android. So, while Espen and I were busy fixing the last bugs in our Yr app, Ole-Johan was working on getting the Android port (by BogDan and friends) running on his spanking new Samsung Galaxy Tab! And boy did it run :)

From the left: Espen, Ole-Johan and Marius

Share

AppWorks – app stores, apps.no, Angry Birds and HTML5

Espen Riskedal Yesterday I was presenting (covered here by mobizmag.no) at appworks.no, the first conference in Norway focusing on mobile app development. There were two scenes, lots of people, and a lot of good talks. Check out photos from the day here. (Photos: Eirik Helland Urke/Creative Commons)

I was talking about the mobile app market in Scandinavia and Europe, mostly from a business perspective. The most interesting slides are probably the ones about the mobile os web usage in Scandinavia, the size of the different app stores, and also the trends and forecasts on whats going to happen, according to the analysts, concerning app stores and mobile platforms.

I also attended three of the talks, and all of them were really interesting. Here is a small summary of them.

Small Efforts, big bucks

Sveinung Totland – apps.no

Sveinung Totland Sveinung had a really interesting talk about the different apps that apps.no had launched and how they had fared in the market. He was very frank and open about everything and I really enjoyed the talk. Our business idea is basically same as them, make own apps + consult and make apps for others, so it was really good to hear from someone that was already doing this, and succeeding. Here are the numbers:

Name Price Downloads Revenue
YR free 600000 None – but 60000 emails to spam
Kronespillet 17 NOK 67000 854250 NOK
Avinor 17 NOK 46000 586500 NOK
Kystpatruljen 17 NOK ? 0 – Enough to pay for the dev cost. Redningsselskapet gained 50% in new member boost
Gyldendals Soppguide 39 NOK ? 0 – Enough to pay for dev cost
Skattesøk 17 NOK ? Lost money – Free apps came out and there was no market

How we made the top grossing mobile game

Peter Vesterbacka – rovio.com

Peter Vesterbacka Peter from Rovio talked about their insane success with the Angry Birds game. It’s been the top selling game for the iPhone for over 5 months, thats more than anyone else – ever. They have sold, at least, 7 million copies of it on the Apple App Store for the iPhone only, more if you add iPad. They launched in December 2009, and since then have had a crazy ride.

One interesting fact is that Angry Birds is not their first game. According to Peter, they’ve done around 50 other game titles already, so this was not an overnight succuess, but took years of hard work before it really paid of. Angry Birds was “designed to be hit” – with that Peter meant that their designers had sat down and really studied what was needed to make a smash hit game for the iPhone. The character design was a bit by accident, they saw some sketches from one of their artists, and then instantly fell for the angry birds.

Angry Birds is now going to be everywhere: Nintendo DS, Playstation Portable, Windows etc. etc. For their existing ports: iPhone, Maemo, Android and Symbian, they’ve done them all in house – and they will continue with that for the other coming ports. They are 12 people right now, but have 15 open positions! :D Rovio is aiming for 100 million downloads of Angry Birds – they call it the “Tetris strategy”. And they might succeed – when they released the Android version a few days ago, they had 2-3 million downloads in as many days. Wow.

Apps vs HTML5 – what should we choose?

Nikolai Onken – uxebu.com

Nikolai Onken The last talk I attended was about HTML5 apps. Nikolai had a very enthusiastic talk about HTML5 apps, and how that was not a utopian dream, but actually a reality already. I think his talk clearly showed it is not quite there yet. The fact that for the iPhone, to use bluetooth support in an HTML5 app, you have to jailbrake it and write a platform spesific extension for PhoneGap speaks for itself.

I’ll keep an eye on HTML5 apps though, but at the moment – native is still the best way for anything but the most naive apps.

Share