Category Archives: iPhone

Rankz – an innovative middleware for sports event ranking information distribution

In one of my last posts I wrote about a young company Rarebyte. The folks from Rarebyte are mainly focused in game development but they also have a great experience in building highly scalable middleware applications for sport timing respectively sport events.

They are named their product line Rankz.

Rankz is desigend for small to very large sports events with thousands of  athletes. Its purpose is to get detailed information about every aspect of a sport event in real time. It has already been successfully used at the

Rankz is also the central core layer in a student project called “IRONNET” (FH-Sportstiming) done by students from Network Engineering & Communication (NET) and is also the overall software basis used  by “FH Sportstiming” (NET).  An older version is also operated by Triangle Show & Sports Promotion Gmb.

The middleware uses spring core layer technologies which allows them to be highlight flexible. The data structures which specify the sport event can be entirely configured through XML. A full featured editor for XML/POJO  is also available. The interface to the timing database can also be configured through XML. For this reason you are neither limited by the used format of the timing data nor to the database engine. Rankz works out of the box with MySQL, PostgreSQL, Oracle, MSSql.

Furthermore Rankz uses a dynamic plugin system. So new features can be added very easily. Plugins can be loaded and unloaded @ runtime.

Features

  • Superfast – detailed results nearly live during a race
  • Support for plugins (input, output, calculations)
  • Platform independent (completely written in Java)
  • Integrated webserver (Jetty)
  • Plugins:
    • Overall ranking
    • Ranking per split
    • Ranking in athlete’s age group
    • Relative ranking at certain splits
    • Timing, average Speed, finishing context,….
    • statistic system and missed time error correction system
    • FTP plugin upload
    • Athlete’s (geographical) real time position prediction.
    • SMS/MMS Notification Service
    • Athlete’s@Twitter …
    • Virtual Athlete’s rankings (audience favorite….)
    • Position estimation
    • RESTful resource connectors
    • Webservice Revision Layer
    • Distributed mode for sport events like wingsforlife
  • Query engine
  • RESTful interface
  • Web output for all plugins
  • CSV exports for all plugins
  • Android/iPhone  (iOS) applications for live data/timing visualization (special version for Event Moderator/sport commentators).

How to cross compile ffmpeg for iOS (iPhone and iPad)

In one of my latest projects I needed some audio/video streaming capabilities for iOS driven devices.

The first App. which we implemented was a audio/HDVideo low latency conference streaming application for smart phones.

The second app was around  MPEGTS to Elementary Stream demuxer for some dreambox streaming fun 🙂

The framework of choice is the swiss army knife for streaming stuff,.. ffmpeg. To be more precise, ffmpeg consists of serveral libraries and the command line programs ffmpeg, ffplay, ffprobe.

What do you need:

  • Xcode4.3
  • Apple’s command line tools (Xcode -> Preferences -> Components)
  • pkg-config -> download
  • gas-preprocessor -> download (extract under your ffmpeg root dir ./gas-preprocessor)
  • build-essentials -> you can download an install script
  • m4
  • autoconf
  • automake
  • libtool

I used the latest snapshot available at the the time of writing. Extract the snapshot .tar to a folder of our choice.

Thanks Michael, the lead developer of ffmpeg, the ffmpeg source comes with the convenient autotools facilities. So we only need to set the correct configure flags 🙂

1. Compiler flags:

As we need to do some cross-compiling we need to select the compiler/assembler which comes with our XCode

–cc=’/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2′.

–as=’./gas-preprocessor/gas-preprocessor.pl /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2′

–arch=arm

–target-os=darwin

–cpu=cortex-a8

–enable-pic

–disable-yasm

2. iOs SDK path:

–sysroot=’/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk’

3. extra flags:

–extra-cflags=’-mfpu=neon -pipe -Os -gdwarf-2 -miphoneos-version-min=5.0′

–extra-ldflags=’-arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -miphoneos-version-min=5.0′

4. configure ffmpeg library components:

for example:

 –disable-ffmpeg
–disable-ffplay
–disable-ffprobe
–disable-ffserver
–disable-avdevice
–disable-avfilter
–disable-everything

and then enable the components you need

–enable-decoder=xxx
–enable-parser=xxx
–enable-demuxer=xxx

after successful completion of ./configure run make… and voilà 🙂

If you get some errors complaining about  “error: invalid operand in inline asm: ” try to disable assembler directives with

–diasble-asm

have fun

Mario

 

iPhone4 slack joint microphone quickfix

One of my colleagues, Marvin – proud owner of an iPhone4, has been fighting for some weeks with his iPhone internal microphone. Skype and Facetime stuff are working without problems but on “Radio” calls he got unsuspected mutes. The issue occurs in not deterministic intervals.

First aid,… yeahhh we have to open the phone, … operation on the open heart :-).

The problem must be the bottom mic. So we disassembled the bottom part of the phone.

No fancy actions here,… one two three screws open, some lever actions to loosen the glue stuff and voilà it’s open.

If it were up to me I would eliminate the apple hardware and build in a Galaxy S hardware, but marvin was dead set against it,… I don’t know why 🙂

Update” :

We initial thought that the bottom microphone was causing the problem. It turns out we were wrong 🙂

After 3 days without mic. problems I would say the problem is the grounding screw left next to the upper microphone. The conductivity pad on the print is very small and it seems that slight corrosion which results in an increased transition resistance to GND causes the mic problem. 🙂

Have fun!

Mario

Switching iPhone4 from custom iOS 4.3.1 to custom iOS 5.0.1

It’s been a while I updated my developer iPhone4 to custom  iOS 4.3.1.  According to statistics more than 75 % of all registered mobile iOS Devices are on iOS >= 5.0. So I decided to switch over to 5.0.1.

It would be remiss not to tell you that 5.0.1 is currently also supported as Untethered jailbreak, which I need for some comprehensive study 🙂

But here’s where the problem starts.

It’s been a while since Apple released version 5.0.1 and at time of writing the sign window is just closed. So if you build your custom ROM with your favorite RomOMagic Tool, put your device in DFU,.. fireup iTunes and start the recovery procedure,… you will end with a shine This device isn’t eligible for the requested build…… umpf WTF.

etc/hosts are ok, but iTunes cannot “sign” your ROM.

So what can you do?

First, as a brave jailbreaker you have your umbrella always with you and also a bunch of valid SHSH Blobs and the corresponding APTickets. We are interested in BLOBS for 5.0.1 🙂

Second, we need RedSnow. With this tool you can stitch (sign) an IPSW with your SHSH blobs.

Be sure to stitch only a custom ROM without the BaseBand!

voilà, no annoying isn’t eligible message,….after flashing your device should boot with a shiny new custom  5.0.1

be nice

have fun

Mario

Fixing XCode 4.x slow responsiveness / performance

The last months I noticed a very annoying behavior of Xcode 4.2 which results in responding very slowly to user interactions, e.g. editing code, debugging refactoring … mostly all IDE day to day work were affected.

It turns out that the problem is related to the project “workspace ” file. If  you delete em, .. yes you can :-), you get back a more or less speedy XCode.

The Credits for this valuable hint goes to link

have fun

Three20 how to use TTTableView within TTScrollView addition

In a current project I came across the situation that I wanted to implement a cool TTScrollView with a few TTTableViews in it.

For some reason in my version of the current Three20 branch the TableView was receiving the “up and down” touch events but the parent view (TTSscrollView) didn’t get any touch events. Googeling give me the result that some of you had the same problem but I couldn’t find any solution for the problem.

So I came up with the following solution for the problem.

I added a new category TTTableView+TouchesMoveAddition:

// UI
 #import "Three20UI/TTNavigator.h"
 #import "Three20UI/TTStyledTextLabel.h"
 #import "Three20UI/UIViewAdditions.h"

// UICommon
 #import "Three20UICommon/UIWindowAdditions.h"

// Style
 #import "Three20Style/TTStyledNode.h"
 #import "Three20Style/TTStyledButtonNode.h"
 #import "Three20Style/TTStyledLinkNode.h"

// Core
 #import "Three20Core/TTCorePreprocessorMacros.h"

#import "TTTableView+TouchesMovedAddition.h"

@implementation TTTableView (TTTableViewDataSourceNIBCapAddition)

- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
 [super touchesBegan:touches withEvent:event];

if ([self.delegate respondsToSelector:@selector(tableView:touchesMoved:withEvent:)]) {
 id<TTTableViewDelegate> delegate = (id<TTTableViewDelegate>)self.delegate;
 [delegate tableView:self touchesMoved:touches withEvent:event];
 }

if (_highlightedLabel) {
 UITouch* touch = [touches anyObject];
 _highlightStartPoint = [touch locationInView:self];
 }
 }
@end

So if you implement the UITableView protocol in your ViewController which holds, for example, your TTScrollView:

- (void)tableView:(UITableView*)tableView touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{
 tableView.scrollEnabled = NO;
 [_scrollView touchesBegan:touches withEvent:event];

}

- (void)tableView:(UITableView*)tableView touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event{

 [_scrollView touchesMoved:touches withEvent:event];

}

- (void)tableView:(UITableView*)tableView touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event{
 tableView.scrollEnabled = YES;
 [_scrollView touchesEnded:touches withEvent:event];

}

The touch events will be forwarded to the TTScrollView.

Focus on the scrollEnable calls !!!… 🙂

have fun 🙂

iPhone Apps III or ….hurray its a …. StudentsLife app

 

Let me introduce you our first iPhone app. called StudentsLife (v1.0.0) 🙂

StudentsLife is the must have iPhone Gadged for all Students of the FH-Kärnten.  … just try it out.

Our first release can be tested at the fair BeSt in Klagenfurt.

Get it at the App-Store

…. to cut to the chase …..

The Feature set :

  • your personal timetable
  • detailed course overview
  • news ticker
  • university contact list
  • course overview
  • location based service
    • amenities
    • current party locations
    • study locations
    • locations every student should know of 🙂
  • personal list of grades

But take a look for yourself….

 

And … Daniel big thx for your hard work!!!! 🙂

By the way, we are also working on an Android version…. so stay tuned…

IPhone programming part I

Yes it happened, I have started to program the iStuff!

The initial burn came from one of my fellow workers who wants to have a mobile application based information system for our campus.

As of now iPhone/iPad programming will also become one of our course topics @Medical Information Technology 🙂

First Step, get the tools.

What do you need for developing:

First of all you need a  Mac OSX . (Snow Leopard preferably). The rumor says there is a chance to get it run under VMware, well, see for your self and read the apple OS license stuff 🙂

The next step is to get an IDE to program your applications. The IDE for programming iStuff is named XCode. XCode offers you all the needed tools to configure, manage, code, compile, debug, simulate and upload your applications to a device.

OK, but where do you get the goodies? Although XCode is free of charge you can not download it on the fly. Yes, you work with apple stuff and apple thinks different. Before you can download your development utils you have to register a developer account at apple. Go ahead -> iPhone Deveoper Center.

You can choose between 5 developer programs -> developer programs comparison link.

As you can see from the comparison chart you have to pay if you want to deploy your application to a physical device.

But we are lucky, for our first steps on iPhone developing we do not really need a hardware. XCode comes with an iPhone simulator. To write and run apps on the simulator you only have to be registered as developer! A registered developer can download the IDE but he cannot create certificates nor provisioning profiles. – But who wants that, … yet 🙂

OK, now we are a registered iPhone Dev., have installed our Xcode IDE + SDK, what next?… Next we have to learn Objective-C (ObjC). what…… C … no problem.

How to write your first application with ObjC and what are the essential parts in the iPhone SDK will be discussed in Part II. stay tuned,…

Have fun!