Friday, November 30

Location Based Service (LBS)

Location Based Service could be next big thing for mobile application.

There are 2 ways to localize your phone:

  1. GPS - Requires special hardware (ext/int) and uses more power.
  2. Network detection (celluar id) - Less accurate and depends on mobile operators .

Lets add another 2 ways:

  1. Ask the user! Yes, let user decide manually where he/she is. Then update to server eg. SMS or Internet
  2. Make use of IP Addresses to estimate the region.
Google's mobile Gmap has recently added a new feature which can pinpoint/estimate/triangulate your location. It uses both methods - GPS and cell id. There are some on going discussion about the how it works here.

Some Technicalities:
  • J2ME have System.Properties("phone.cid") or ("CellId") which will query for the cell id. But it works for some Nokia and Sony Ericsson phones only.
  • In Python S60, MCC, MNC, LocAreaCode and CellId can be retrieved easily. Symbian C++ would be able to retrieve them too. MIT J2me notes.
More resources:

Random Exploration/Ideas


Some random stuff that could be worth exploring:

  • Barcode Reader: ZXing (Opensource, Andriod), popular Kaywa Reader in Japan
  • More to come...

Thursday, November 22

Mobile Statistics

Statistics on the surfing:

Monday, November 19

Random Resources

Randomly

  • Numbering Plan - About your phone number
  • Sprint Developer Guide - Sprint, a telco operator, has its own developer APIs for J2ME too!
  • Web Sniffer - Very useful web tool when you need to "simulate" HTTP request and see what are the responds.
  • User Agent Switcher - Let your Firefox impersonate other browsers. Import a UA list from somewhere else.
  • more to come...

Graphics Resources:
Project Management tools:
  • Basecamp - A useful online management tool, created by 37 Signal. It let developers communicate easily with its writeboard, todo, milestone, chat, etc.. It is totally online and needs no installation.
  • Trac - Lightweight, open source and works well with Subversion. Needs installation. The must try project management, which I felt is better than featured-rich Bugzilla and others.

Thursday, November 15

'Secret' Codes for Nokia phones

Tips to check some (secret) information and unlocking on your phones. Works for Nokia phones only. Press the numbers as if you are dialing. Some of which work for some models only.
  • *#06#
    • IMEI number
  • *#62209526#
    • *#MAC WLAN#
  • *#0000#
    • Firmware version
  • *#92702689#
    • Total Call Timers
  • *#3370
    • Turn on Enhance Full Rate (EFR)
    • This will increase call quality but decrease battery life (by about 5%)
    • To turn of press #3370#
  • #pw+1234567890+#
    • To read SIM/Network card status
    • p = Press "*" 2 times
    • w = Press "*" 4 times
    • + = Press "*" 2 times
    • = a number 1 to 4
  • *#7780#
  • Reset factory settings
  • *#3283



Developer Libraries


Popular libraries used by developers:

  • log4j - Logger, needy tool for debugging.
    Tip: Put the configuration file "log4j.properties" in /Tomcat 5.5/common/classes/ to be shared among the webapps
  • WURFL - Identifying devices capabilities for mobile development (eg. WAP)
  • BouncyCastle - For encryption
  • ProGuard - Obfuscation not only protects your code, but also make the package smaller.
J2ME specific libraries:

Tuesday, November 13

GPRS Configuration Settings

Setting up GPRS for a phone is always a problem for mobile. This problem is usually diverted to mobile developer when an application does not work. But in fact, this is a user or telco problem, not ours!

Anyway, here are helpful links for setting up GPRS on phones:


Specially for the 3 Singapore telcos:
  1. Singtel
    • Or make a service call: *43327
    • The AP to use is IDEAS Internet. Do not use IDEAS WAP/MMS.
    • Cost: ~0.53 cents per KB
    • Call customer service at 1626, or 1800-i-1-IDEAS (1800-4-1-43327)
  2. Starhub
  3. M1

Other links:


Sunday, November 11

News Video Summarization - my HYP

My HYP - Honours Year Project - is to do a news video summarization system. A typical scenario is a user searching for a news topic from a mobile device. Intelligently, the system will:
  • use NLP to refine the search terms
  • crawls the Internet (eg. google snippets, blogs) for the latest interesting related topics
  • rank and retrieve the most well matched news video from our news corpus
  • perform summarization on the selected news video story, ensuring that the summary is concise, informative, interesting and coherent
  • perform device adaptation such that the video file is playable and fits the screen correctly
The research value comes from the summarization portion, in which a news story of about 1 to 5 minutes has to be shortened even further. But this is a very well needed system as our time is limited. I have always wished that I can have the full 30 min news shortened to just 5 min, but still keeping as much important information that is needed.

It turns out there are so many factors to consider when doing summarization. How do I rank and choose the most informative audio segments? How do I mix video shots from other temporal? How do I ensure that there will be coherence in the audio, video and content? Even at the end of producing a summary, I have to ask - How do I evaluate/grade my summarization techniques?

Video & Audio Processing
To develop the system, I need a lot of video & audio processing. As Java is my preferred language, I have no choice but to use the forsaken JMF (Java Media Framework).

I also used ffmpeg for any other preprocessing work (not within the system).

Some guides:
Some random development notes:
  • On using frame or time as unit? Translate to time finally. Getting frame might not be possible for all.
  • There are so much problems and unknown bugs in JMF when I am just doing transcode and cut & merge videos.
  • One of the problem is the present of white noise between segments of video after I did a cut & merge. I spent 1 whole day on Christmas analyzing when will white noise be present and then I tried on a silly solution which I knew would not be solving the root of the problem. It did not work perfectly. After I came out from a shower, I tried with different audio encoding. Turns out setting the sample rate to 8000 solve the problem!

Libraries Used:
  • DownloadServlet - It is one of the most common seek after servlet. I used it to serve video files outside my container webapps.

Tuesday, November 6

Developing WAP/XHTML MP (mobile web pages)

Good Guides:
Developers Home


Steps to Getting Started:


Some notes/tips in development:

  • To copy war file to directory automatically when compiled in Netbeans, write in build.xml the following:
  • Never trust WAP Browser Simulator! Sessions are not maintained on them! ';jsessionid=' rewriting will fail!