Friday, December 29, 2006

Google Ride Finder

Stumbled upon the ride finder app on Google labs. Aint it cool. Have been hearing about this concept for quiet some time now but nice to see some sort of implementation.

Tuesday, December 19, 2006

Mobot

Mobot has been in news recently due to their "deal" with Neomedia. Havent really heard about them for a long time now and was suprised to find them in the rss feeds. Personally, I like the technical model they follow a lot. MMS based techie stuff is really cool and tie in a sort of visual recognition and it really gets be interested. Their technical model is based on ScanR (one of my fav's) except offcourse the imaging engine.

Will be interesting to see what these guys do in the weeks and months to come.

Sunday, December 17, 2006

Bleenks.com: Free Full Length TV episodes

Ain't this site coool... whether u want to watch smurfs or southpark.. this site has got it all... Happy viewing in the office ;)

Tuesday, December 12, 2006

Caller Tunes on Tmobile (a.k.a ringback tones)

I finally subscribed to the caller tunes feature on Tmobile. People calling me are now welcomed by "beautiful day" from U2 and the special ones get welcomed with voices of Mr T, Donald Trump and even some dialogues from office space.I guess my trip to india opened me up to the whole ring back tone funda :).

The only regret, I can only assign the tones available on Tmobiles site and I cannot upload any of my own :( .. this sucks !!!!

Wednesday, December 06, 2006

Google and Find

Never ceases to amaze me how the word google has replaced find in our vocabulary.

Sunday, November 26, 2006

Back from Vacation

Back from a month long vacation.. needed this badly... had fun celebrating diwali at home after a real long time.

Friday, October 13, 2006

Firefox Extension: Mobile Barcoder

Found this interesting extension for firefox. Have been thinking about this for a long time but never got down to doing it myself... kinda feel left out :-).

Its a pretty neat extension, generates a QR code with the URL in the address bar. It does not follow any of the existing Vodafone or Imode specs, the url is encoded without any scheme, now all we need to do is find an application and device that supports it. The site mentions that this is compatible with series 60 third edition phones.. somehow i cannot fail to wonder if this would have been more useful if the barcode generated was a Datamatrix (Semacode).

Extension Site: Ramblings in Utopia

Thursday, October 12, 2006

Frucall: "Buy Feature" now AVAILABLE :-)

Frucall now has the Buy now feature available ... way to go guys ... I havent been able to check it out yet.. will do that this weekend. Buying on the phone ... now thats a nice feature.

Wednesday, October 11, 2006

YouTube - Re: A Message From Chad and Steve

Ok.. so the deal is done. Found this interesting video on Youtube in response to the original video from Chad and Steve.




YouTube - Re: A Message From Chad and Steve

Question: Google ... Microsoft ... anything similar ?

Saturday, October 07, 2006

Go Shop !

"You just shop, scan and go! You don't have to push a shopping cart around, you'll have faster checkout and there won't be any hauling your purchases home. It will all be delivered to you anywhere in Manhattan – same day if you want it – for just $15!
All of this... along with The Container Store's famous customer service! Try it today!"

Checked this out yesterday in the Container store on Lexington and 58th. They have a bunch of windows mobile PDA's from symbol (i think).. aint it cool.. no more moving around the store with a shopping cart ... just scan what u like and have them bring it out for you at checkout. I wonder if all furniture type stores will take this approach. They should !!!

Thursday, October 05, 2006

Wednesday, September 27, 2006

Saturday, September 23, 2006

Friends Map on Orkut

Orkut has added a new feature, the MAP allows me to see where my friends are located on world map (dont think they have Asia working yet).
Seems like every site is adding the map feature...

Thursday, September 21, 2006

The Coming Dramatic Decline of Youtube - Blog Maverick

A nice post by Mark Cuban about Youtube.

"Come to our website and use our video hosting services, we can party like its 1999 all over again ! "

The Coming Dramatic Decline of Youtube - Blog Maverick

Thursday, September 14, 2006

Tabs in my Google Home page

Its a tabbed world. Started with Firefox and n then IE and now it seems everything I use comes with tabs :-). Just noticed the new Tab feature on my personalized home page. This should help me organize the clutter on my page :-)

The only complain, I wish they let me choose the color for my tabs. Green and white combo just isnt something I like. So I decided to check the different colors out and began adding tabs but now I am stuck on the 4th tag :-( and it wont let me add more tabs and neither will it let me go back to my previous tabs.... A very Buggy situation. Hopefully the bug would have dissapeared by tommorrow.



Wednesday, September 13, 2006

Mobile Shopping: Are we there yet ?

Mobile Shopping has arrived... atleast people are more receptive to the idea than a couple of years back. I could not locate the definition for Mobile shopping but did manage to locate one for Mobile Commerce which I believe is the next closest thing. Infact shopping would be a subset of mobile commerce. I wonder why no one has defined it on wikipedia yet.

Mobile shopping isn't gonna replace the existing ecommerce websites atleast not in the near future but it will serve as a bridge between the online world and the physical world (Stuff Scott always talks about). I started working on a checklist of stuff that I want to be able to do with my mobile device when I am in a physical store.

1) Piece of Mind factor:

When I am in a store and about to buy some thing, I want to be sure that the price I am paying is comparable in the online world. To make a decision I need to know
- The cheapest price for that item from a trusted website.
- The Shipping cost.
- The time for Shipping (Imp).
2) Price Match:
Lets face it, no physical store owner is gonna compete with an online price but will they be willing to come close to it ? what they will be ready to offer is a price match with a price from another physical store. Circuit city did offer this once (dont know if they still offer it). The mobile service must be able to pull down flyer or something similar from a physical store that I can use for a price match.
3) Speeeeeeeeed:
Whatever service I use for my mobile shopping needs MUST be quick. I dont want to stand in a store and wait for the more than a couple of minutes for results. I dont care about the slow data speeds on wireless networks or the sluggish SMS delivery. I want my results fast. Frucall (voice based) is the fastest way to get results compared to the other services out there today. It relies on a normal phone call and if I am not using Tmobile then I pretty much have no dropped calls :-). Yep, this even beats the SMS service(s) offered by other providers.
4) In Depth Info:
Most of the websites now offer reviews and product comparisons. I want to be able to access that information on my mobile phone while I am in a store and holding that product in my hand. Since I am viewing the information standing in a store, on a small LCD display, I do not want to sift through a lot of information. Give me the bottom line first and then let me look into details if I choose to. I like the Scanbuy Shopper approach of categorizing the product information. I get the basic info up front and then can navigate to through the diff categories. There is still a long way to go though in getting more information out to the end user.
5) Other Physical Stores:
I want to see a list of other stores close to the store that I am currently in. I dont always like to make online purchases. Buying it from a store has its benefits. Slifter does a bang up job in providing me with this information. They bring me results from big name stores and also some Ma and Pa shops in my zip code. To top it off, I can get a map and rough directions. Eventually, I would love to see a detailed map from my exact location to the stores exact location but for that we need better hardware and better access to the GPS features.
6) Ability to Place an order:
If I like a deal or offer being presented to me on the phone, I should have the ability to place an order for that item (add it to a remote shopping cart or even go through and buy it). This can be tough to implement technically as security is a major concern but I am sure we will see more and more of this feature. A few workarounds do exist though. The Pricegrabber wap site (atpgw.com) does allow you to call the store and place an order, I am sure other sites do too. From applications, there are a few apps like Amazon-Onthego that use the remote shopping cart feature of Amazon Ecommerce service. There is still a long way to go though.
7) Targetted Deals:
If I am looking to buy a digital camera, I would like suggestions to be sent to me on my phone (or by email) detailing products that match my requirements, the differences between them (pros and cons) and also where I can get the product at a decent price. I know this borders on the realm of advertising but if its targetted to my needs then I as a user dont mind it at all. Imagine, I am at a store and I pick up a digital camera and browse through the details of that product (prices, reviews etc) on my cell phone but I am not sure about if I want to buy this. I should be able to click on a button that says "Suggest Alternatives". I should get back a list of products that match close to the specifications of the original camera with pricing and other details about that product (most important - differences).

There is a good number of services that offer mobile shopping experience to the end user. I am listing out a few that I am aware of and played around with. I am pretty sure I am missing out a lot of them (Let me know).

SMS Based:



WAP Based:



Voice Based (Phone Call):


Downloadable Apps:

Friday, September 08, 2006

"TEXT ME!" Web Widget

Heard about this from a friend of mine.Pretty Cool toy.
I am adding this to the sidebar of my blog. Use it to send me an SMS when you cannot reach me.

Check it out:4INFO Mobile Search - Free SMS Search, Fast Mobile Internet Search

Thursday, September 07, 2006

New York Times Launches Mobile Site (with Msft Advertising)

checked out mobile.nytimes.com and its pretty good for a news site. Not much you can do with this but the most interesting part about the site is the Windows Mobile banner and the link on the bottom of the page. Way to go MSFT.

Wonder if all the Giants have the plans to convert existing websites into mobile sites with their advertising offcourse.

Via:MocoNews.net

Tuesday, September 05, 2006

Shakira - Hips Dont Lie SPOOF !

My brothers spanish final. Which just happens to be a hilarious, yet disturbing, Shakira spoof. Shakira - Ryan Gangsters - Sal, Matt Directed/Filmed/Edited - Tom Go to the official shakira spoof... - > www.be-dumb.com

Sunday, September 03, 2006

Google Video: IPod download

Didnt know about this until today. Isnt it just amazing that I can now dowload stuff from the Google video directly in the mp4 format for my ipod :-). I have been looking for videos to play on my ipod ever since I got it and just found out about this. :-) where have I been ???

Check out the spoof's: spoof - Google Video

Saturday, September 02, 2006

Data Service: Is it really a APP killer?

Found this interesting post by Nasser. He brings up a really neat point. Data service adoption has been slow here in the states and yes the adoption rate does hit any application (including SCANBUY Shopper and Slifter) that uses data service.

An application residing on the phone is a natural extension to the PC world that the average user has grown accustomed to. Its a more comfortable setting for the user where he can process a large amount of data with relative ease. Services using telephony do have a cost factor advantage but I do not think the comparison between services using telephony and data service is a fair one as they cannot be truely compared in terms of features they offer. Data service based application(s) like shopping assistants can provide the user more data and easy navigation (Seeing is believing). I do believe the telephony feature of the cell phone is and will be an important part of any service being offered for mobile devices in the years to come, however it will only be a small part of the complete service. Having a UI that a person can see and interact with is definitely the way to go.

But what about the extra price?
Cellular services have been a bit slow here in the US compared to markets in Asia and Europe. The carriers in the US have spent and are spending a huge amount of green ones on setting up their networks to incorporate data. True, there is an extra cost of this setup hitting the first batch of consumers but eventually the prices are going to go down (remember SMS?) .


Original Post:Frucall and Scanbuy
Another Interesting Post:
Online Price Comparisons in the Offline World

Wednesday, August 30, 2006

2D barcodes in a sequence

There are a bunch of really cool applications out there based on the 2 dimensional barcode scanning with camera phones. More so in Japan (QR code) as the reader comes pre-installed on the devices.

I have been thinking about this for quiet some time now and so far I havent found anyone doing this. How about using barcodes for downloading content directly on the phone? No, not by opening the WAP browser and then using the mime type of the content to govern the actual download and installation. How about breaking up the content file and encoding it into a bunch of 2-d codes and then having the user download the content by scanning all the codes in succession. Could be done? YES!!! (technically speaking).

Example:
A user wants to download a string "1234" on his phone :-). So we create 4 codes with the values '1','2','3' and '4'.
1
234
These individual codes could then be combined into one single fixed delay sequence that can be captured by camera phones. Most of the barcode reading applications already support the Append mode and it shouldnt be a strecth to incorporate a streaming (using this word for the lack of other words) protocol in the barcode reading process.
Theoretically, the application could then assemble all the data by reading these individual QR codes to create the complete content file. Once the file has been created, the application will read the mime type and launch the registered content handler. Hmmm... sounds too easy. Well, there will be a bunch of issues that will have to be solved, specially those related to the frame delay in the sequence and the type of content that can be encoded. The benefit, download content without Data service :-).

Monday, August 28, 2006

BREW: ICamera Interface

I have been meaning to write this post for quiet some time now and finally got around to finishing it. I am including a few tid bits in this post about the BREW ICamera Interface. The post is not meant to be a tutorial but could provide you a starting block if you are looking to add the camera functionality into your BREW Applet and then some.
For tutorials, I recommend the following:

  • Devx:Camera-enable Your Applications with BREW's ICamera APIs by Ray Rischpater.
    A nice short tutorial to get you started with the ICamera Interface. In case the above link is broken, try searching on Google or Devx.com for the article.
  • BREW forums
    If the above link does not work, search for ICamera and you will get plenty of posts with issues about the interface and also notes on how to solve them.
Ok ... Now that you have the links, lets check out the ICamera interface.

Determine Device Support:
The ICamera interface was introduced in BREW version 2.1. The support for the interface was slow initially but now pretty much any camera phone coming out supports the interface. To check for support before actually buying the device, take a look at the BREW specs (Data Sheet) for the device available through the Qualcomm BREW developer website. Usually there is a section called "Camera" in the spec sheet dedicated to camera access that provides information about:



  • Camera Available to BREW Applet.
  • Resolution (usually the native camera resolution).
  • Access to native photo directory.
  • Path of the native photo directory.

Creating the ICamera Interface Instance:
Let's start with the header files:

  • AEECamera.h: Provides the definitions of the ICamera interface and will have to be included in your build.
  • AEEBitmap.h: Provides the definitions of the IBitmap interface. The frame captured by the camera is returned as IBitmap, so this is important.
  • AEEMimeTypes.h: Contains the definitions of the mime types etc and you might need this if you are planning on taking snapshots etc...
To create an Instance of ICamera, we resort to the trusty ISHELL interface.
ICamera *m_pICamera = NULL;
int nRet = EBADPARM;
nRet = ISHELL_CreateInstance(pMe->iShell, AEECLSID_CAMERA, (void **)&m_pICamera);
If access to camera is supported and an instance was instantiated, the function returns SUCCESS. Other common codes returned include:
  • EBADPARM: Check the pointers you are passing to the function.
  • EUNSUPPORTED: You should really check the specs on the device before trying to instantiate the ICamera interface.
  • EPRIVLEVEL: This is weird but happens on certain devices. To avoid getting this return code, you can try adding a dependency for the camera in your MIF. More details on this here.
Once we have our instance of ICamera, the next thing to do would be to register a Callback function. All a developer has to do is to have a function that corresponds to the PFNCAMERANOTIFY specification.

typedef void (*PFNCAMERANOTIFY)(void* pUser, AEECameraNotify * pNotify);

The implementation of ICamera interface is Asynchronous similar to the other interfaces like IMedia and IWeb. The operation of the camera and the access to it revolves around the BREW layer notifying the Applet via the callback function. More information on this can be found in the BREW SDK documentation.The RegisterNotify function is used to register the Callback function.
/*Registering the callback function.
m_pICamera: Instance of ICamera created above
_CameraNotify: Callback Function
pMe: Pointer to the instance of the Applet.
You can pass anything here. This ptr will be returned in the
callback as the void pointer pUser. */
nRet = ICAMERA_RegisterNotify(m_pCamera, _CameraNotify, pMe);
For more details on the AEECameraNotify structure, refer to the BREW SDK documentation. I usually use the following members of the structure to determine the corresponding action in the callback function.
nStatus : The current status.
nCmd and nSubcmd: Gives an indication of the current camera mode.
//Generic Implementation of the callback function.void _CameraNotify(void * pUser, AEECameraNotify * pn)
{
//Get a handle to the reference pointer.
MyObj* pMe = (MyObj *) pUser;
if(!pMe !pn)
return;
//Handling based on Status passed.
switch(pn->nStatus)
{
case CAM_STATUS_START:
/*Sent when Preview or Record operation is started.*/
if(pn->nSubCmd == CAM_MODE_PREVIEW && pn->nCmd == CAM_CMD_START)
{
/*preview Mode has started.*/
}
if(pn->nSubCmd == CAM_MODE_SNAPSHOT &&pn->nCmd == CAM_CMD_START)
{
/* This is the first callback recieved when you initiate the Snapshot mode.*/
}
break;
case CAM_STATUS_DONE:
/* [Preview/Record/SetParm/GetParm/EncodeSnapshot]
Operation completed successfully.
For RecordSnapShot, pData = TRUE/FALSE = > Defered encode enabled/disabled
*/
if(pn->nSubCmd == CAM_MODE_PREVIEW && pn->nCmd == CAM_CMD_START)
{
/*Preview Mode has completed.*/
}
else if(pn->nSubCmd == CAM_MODE_SNAPSHOT && pn->nCmd == CAM_CMD_START)
{
/* Snapshot has been taken. In defer mode, the bitmap captured can be accessed here.
In default mode, you can wait for the snapshot encoding to finish.
if(pn->nSubcmd = = CAM_CMD_ENCODESNAPSHOT)*/
}
if(pn->nCmd == CAM_CMD_SETPARM)
{
/* When a parm such as Zoom etc has been set.*/
}
break;
case CAM_STATUS_FAIL:
/* [Preview/Record/SetParm/GetParm/EncodeSnapshot]
Operation failed pData = CAM_EXXX error code.
You can use the pn->nCmd andpn->nSubCmd to see exactly what operation failed. */
break;
case CAM_STATUS_ABORT:
/*The last operation was aborted. The camera is now in the ready state.*/
break;
case CAM_STATUS_FRAME:
/* [Any] Frame captured by camera. The frame can be accessed using ICAMERA_GetFrame()*/
break;
case CAM_STATUS_PAUSE:
/* [Preview/Record] Record movie paused.
This status is returned when you call ICAMERA_Pause()*/
break;
case CAM_STATUS_RESUME:
/* [Preview/Record] Record movie resumed.
AEECameraNotify::pData is IBitmap pointer representing the snapshot*/
break;
case CAM_STATUS_DATA_IO_DELAY:
/* [Preview/Record] Operation being delayed by data i/o access*/
break;
case CAM_STATUS_SPACE_WARNING:
/* [Record] Memory available to store recording running low.
To Do: Check if this applies to Snapshots too. Havent really checked this yet.*/
break;
}
}
Now that we have the different status codes that are returned in the Callback, lets check out the modes.

Starting the Camera (PREVIEW Mode)
J2ME developers will find the approach a bit different, there is NO Videocontrol :-). The developer is responsible for getting the captured frame from the instance and then blitting it on the LCD. The approach is very similar to the Series 60 API's and maybe microsoft smart phones (I am not sure).
Things to do:

  • Set the Size of the Preview Frame.
  • Start the Preview Mode.

Offcourse, there are bunch of Optional things you can do before starting the preview mode but remember, just cause its stated in the API, doesn't mean its supported on the phone.

The BREW API provides the developer a way to query the supported resolution for rendering the preview frames. Again, not all phones will support this method. The simplest way to set the size for the preview frames is to use the device LCD size. Since the frame has to be rendered on the device screen, might as well use this size(Japanese phones from KDDI do provide a preview frame of size larger than the LCD. But the frame is scaled when you blit it on the entire screen.). Using the device screen size gives the default preview size for the device.

static void initDisplaySizes(cameratest * pMe)
{
AEESize *ltSize;
int loop;
boolean bRet= FALSE;
int nRet = EFAILED;
//Get the Resolution available for the Preview Mode.
ltSize = (AEESize *)CAM_MODE_PREVIEW;
nRet = ICAMERA_GetDisplaySizeList(pMe->m_pICamera, if(SUCCESS != nRet)
{
// There was an error in getting the sizes. use the screen size.
return;
}
// Got the available sizes.
// Run through the loop and get the
// best resolution possible.
for(loop = 0 ; ltSize[loop].cx != NULL && ltSize[loop].cy != NULL ; loop++)
{
// Width: ltSize[loop].cx
// Height: ltSize[loop].cy
}
}
To start capturing and displaying the frames:
static void cameratest_DisplayCameraPreview(cameratest * pMe)
{
int nRet;
AEESize az;
// Setting the Display Size. Using Screen Size.
az.cx = pMe->cxScreen;
az.cy = pMe->cyScreen;
ICAMERA_SetDisplaySize(pMe->m_pICamera, &az);
// Start the Preview mode.
// This call will start the messages to be
// sent to the callback function.
nRet = ICAMERA_Preview(pMe->m_pICamera);
}
Once the Preview mode has started, a notification with the status CAM_STATUS_START is sent to the callback function. In case of error, a corresponding error status is sent. The individual frames captured by the camera are sent with the status CAM_STATUS_FRAME. The developer must implement logic here to display the frames on the screen.
void _CameraNotify(void *pUser, AEECameraNotify *pn)
{
cameratest * pMe = (cameratest *) pUser;
if(!pMe !pn)
return;
switch(pn->nStatus)
{
case CAM_STATUS_START:
//Preview mode has started. Do any applet specific
// stuff here.

break;
case CAM_STATUS_FRAME:
// A frame has been captured by the camera and
// is now available for rendering on the LCD.
IBitmap * pFrame; AEEBitmapInfo bi;
//Get the captured frame
ICAMERA_GetFrame(pMe->m_pICamera, &pFrame);
if (!pFrame)
break; //Error
//Get the bitmap info...
//IBITMAP_GetInfo(pFrame, &bi, sizeof(bi));
//Blitting the frame on theLCD from (0,0)
IDISPLAY_BitBlt(pMe->pIDisplay,0, 0,pMe->cxScreen, pMe->cyScreen, pFrame, 0, 0, AEE_RO_COPY);
// Release the Bitmap instance
IBITMAP_Release(pFrame);
//Update the Display
IDISPLAY_Update(pMe->pIDisplay);
break;
case CAM_STATUS_DONE:
// The camera has stopped the preview mode
// and has entered the ready state.

break;
}
}
To stop the camera in preview mode, use the ICAMERA_Stop() function. This will send the CAM_STATUS_DONE status to the callback function.

Adjusting Parameters:
Now that the camera is running in the preview mode, lets take a look at some of the control parameters available to the developer. Digital Zoom, Brightness, Contrast etc. Are some of the control parameters that are available through the BREW api. For the complete list check the SDK documentation. The SDK provides wrapper functions for adjusting these parameters and also checking if they are supported (ICAMERA_IsBrightness). I personally prefer using the ICAMERA_SetParm and ICAMERA_GetParm methods eventhough I am probably replicating code :-).
#define _CAM_MOV_UP 1 // Move one Step Up
#define _CAM_MOV_DOWN 2 // Move one Step down
#define _CAM_MOV_HIGH 4 // Move to highest
#define _CAM_MOV_LOW 8 // Move to the lowest

#define ADJUST_QUALITY(po, pDir) adjustParm(po, pDir,CAM_PARM_QUALITY)
#define ADJUST_ZOOM(po, pDir) adjustParm(po, pDir,CAM_PARM_ZOOM)
#define ADJUST_BRIGHTNESS(po, pDir) adjustParm(po, pDir,CAM_PARM_BRIGHTNESS)
#define ADJUST_CONTRAST(po, pDir) adjustParm(po, pDir,CAM_PARM_CONTRAST)
#define ADJUST_SHARPNESS(po, pDir) adjustParm(po, pDir,CAM_PARM_SHARPNESS)

static int adjustParm(cameratest * pMe, int pDirection, int parmID)
{
int nRet;
AEEParmInfo pi;
int32 p1;
int adj = 0; //Adjusted Value
//Get the Parm Value
nRet = ICAMERA_GetParm(pMe->m_pCamera,(int16) parmID, &p1,(int32 *)&pi);
/**@TODO: Handle CAM_PENDING */
if(SUCCESS = = nRet)
{
//Calculate the next step
switch(pDirection)
{
case _CAM_MOV_UP:
adj = pi.nCurrent + pi.nStep;
break;
case _CAM_MOV_DOWN:
adj = pi.nCurrent - pi.nStep;
break;
case _CAM_MOV_HIGH:
adj = pi.nMax;
break;
case _CAM_MOV_LOW:
adj = pi.nMin;
break;
default:
return EUNSUPPORTED;
}
//Set the New Value
nRet = ICAMERA_SetParm(pMe->m_pCamera,(int16) parmID,(int32) adj, 0);
}
return nRet;
}
To increase the digital zoom all I have to do is call ADJUST_ZOOM macro. I am uploading a zip file containing the source code of the application for the preview mode and also the ARM binaries. My development environment is Microsoft Windows .NET 2003. In case the link below does not work, shoot me an email and I will send you the zip file.
Download Sample Application 1

Taking Pictures:
The most obvious use of the ICAMERA interface in any applet is to take snapshots. The SNAPSHOT mode of the interface allows you to do this. One thing to remember is that the ICamera instance MUST be in the READY state for the operation to succeed.
Things to do:

  • Make sure the camera is in READY state. If you are in preview mode then call the ICAMERA_Stop() function to get there.
  • Set the Media data (ICAMERA_SetMediaData()).
  • Set the size of the picture to be taken (ICAMERA_SetSize()).
  • Set the encoding for the image (ICAMERA_SetVideoEncode()).
  • Adjust the quality of the picture to be taken (ICAMERA_SetQuality()).
  • Initiate the picture taking operation (ICAMERA_RecordSnapshot()).

Taking a snapshot is a 2 stage operation, the first step is the actual capturing of the frame and the second step deals with encoding the snapshot. Another mode, ENCODESNAPSHOT maintains the camera state when the encoding is being done.


static void takePicture(cameratest * pMe)
{
AEESize sz;
// 1) Set Media Data
pMe->md.clsData = MMD_FILE_NAME;
pMe->md.pData = "snap.jpeg" ; //Store the picture in the applet directory
pMe->md.dwSize = 0 ;
ICAMERA_SetMediaData(pMe->m_pICamera, &pMe->md , MT_JPEG);

// 2) Set the Size of the picture.
sz.cx = 320;
sz.cy = 240;
ICAMERA_SetSize(pMe->m_pICamera, &sz);

// 3) Adjust the Quality.
ADJUST_QUALITY(pMe, _CAM_MOV_HIGH);

// When needed set the Defer Encode mode. This will allow you
// to display the captured bitmap to the user before encoding it.
//ICAMERA_DeferEncode(pMe->m_pICamera, TRUE);

//Take a shot.
ICAMERA_Start(pMe->m_pICamera, CAM_MODE_SNAPSHOT, 0);
}
Since the Camera must be in the ready state when the snapshot mode has to be invoked, I recommend maintaining a applet level flag that is set when the user initiates the snapshot by pressing a key. Only the preview mode is stopped by the key press and the call to take the snapshot is made in the callback function when the CAM_STATUS_DONE for preview mode is returned.

Using the Defer Encode Mode:
The defer encode mode is a neat feature of the ICamera interface. It allows the developer to break down the taking picture operation into 2 distinct steps. When set, the picture taking operation stops after a frame has been captured by the camera. The applet can access the frame captured possibly to display a preview to the user or add some sort of graphics to it. To complete the picture taking operation, call the ICAMERA_EncodeSnapshot() method to finish the encoding.

To set the defer mode on, call ICAMERA_DeferEncode(pMe->m_pICamera, TRUE) method before invoking the snapshot. The captured frame can be accessed in the Callback function by calling the ICAMERA_GetFrame() function.

I am uploading a zip file containing the source code of the application for taking pictures and storing them in the applet directory on the device.Download Sample Application 2

Handling Suspend and Resume:
A brew Applet maybe suspended any time due an incoming call or ... Its completely upto the developer how he or she wants to handle this. Personally, I release the instance of ICamera when my applet is suspended and create it back again when the applet is resumed. Using the Pause mode of ICamera is another possibility however, I had some disturbing experiences with the pause mode earlier on and then never experimented.

One thing to keep in mind is In-comming calls while your applet has the ICamera interface in preview mode. The ringtone of the device does get distorted. I guess this has something to with the execution queue but not sure why. I have a Post on this that you can refer to for more details. I am looking for a better way to handle this, if you have any suggestions, please post them in the comments.

Movie Mode:
To be honest, haven't really found a phone that supports the movie mode. Its been some time since I actually was actively looking. If you know any device that allows a BREW applet to execute ICamera in movie mode then please do post it in the comments section of the post.

ICamera on the BREW Emulator:
The BREW SDK 2.1 emulators return EUNSUPPORTED while instantiating the ICamera interface. I did hear from someone that the 3.1 SDK's supported ICamera interface on the emulators using a webcam. Not sure about this. If some one did get this to work, then please do post your experience in the comments section.

Thursday, August 24, 2006

Thursday, August 10, 2006

DeviceAnywhere - Any device, Any network, Any global location

Have been using this site for testing out our applications. Pretty Neat ! Did find out that the application was misbehaving on a lot of phones. The system is pretty cool, you are connected to a real device and I would like to see more emulators built in similar fashion down the road. Won't that be cool.

The site is not perfect, the Launch conductor can hang at times but i suspect thats more to do with my PC than the actual app itself. You also need to have a really good connection speed.

Positives:
1) As a developer I do not need to buy all the phones atleast not the crappy ones.
2) Gives the QA the ability to record frames so that there are no more "Cannot reproduce" statements in the test report.

Negatives:
1) I do not think their implementation is perfect for all devices. I have had some issues with screen refreshing that I do not think I am responsibloe for specially since they do not occur on the live device.
2) Would like to see more devices added to their list [OK ... this is not a negative]

They have a special promotion to try out the Beta product for 199.99 per month. I do not know how different this is from the actual product for 399.99 per month. I have been using the Beta product.

Hopefully, sites like Device Anywhere will drop their prices in the near future once they have made up their initial investement so that more developers can get access to devices.

DeviceAnywhere - Any device, Any network, Any global location

Sunday, August 06, 2006

BlackBerry 8100 cameraphone! Stealth revealed! - Engadget

Just saw this at Engadget. Looks awesome. Cant make out if it has a Scroll wheel though.

BlackBerry 8100 cameraphone! Stealth revealed! - Engadget

Revisiting ScanR

Its been a while since I checked out the ScanR application. They have made some nice changes. They now have a seperate address for sending documents and whiteboards. I guess its just some time before they enter into the product matching space. Love the google gadget they have come up with. Added it to my home page instantly. I guess technically speaking it should be simple to implement a google gadget. I am now adding it to my TODO list ;-).

My Earlier Post on ScanR
ScanR Blog

Friday, August 04, 2006

[WAP] SCANBUY Shoppers WAP site is now online

The beta version of SCANBUY Shopper is now finally up and running. The WAP site is now available at http://search.scanbuy.com


Friday, July 21, 2006

[Cell Phones]Cellfire: Coupons on your Phone

"Cellfire is software for your cell phone. Install it and you'll have access to coupons for a growing number of great restaurants, stores, entertainment venues and more."

Pretty neat application. It works and works quiet well. However, the functionality offered seems very basic to me but I guess thats what they will be working on imprving in the coming days.

Cellfire

Thursday, July 20, 2006

[WAP] Detecting Mobile devices on your WAP pages

The first thing you want to do while making a WAP site is to detect the browser that is accessing your site. Knowing the device that is accesing your site can help you determine what content and how this content should be delivered to the requesting browser.

I had been surfing through the web trying to determine the best way to go about detecting the users handset and carrier etc. but did not find a lot of material on this. I have included some of the stuff that works for me.

Determine the carrier:
The best way is to find this out is to look at the
HTTP_VIA header in the request. Most of the requests from handsets come through carrier gateways and that usually would provide you the name of the carrier.
e.g. One of the gateways for Sprint:
"1.1 kcindmagprx01-int.nmcc.sprintspectrum.com:8090, 1.1 ISA1"

As you can see, a simple search for "sprintspectrum" in the HTTP_VIA header will tell us that the mobile device is from Sprint. Similarly, Cingular devices have "mycingular" in the header.


Determine the handset:
There are 2 ways to go about this, you can either use the User Agent (HTTP_USER_AGENT) or the User Agent Profile (HTTP_PROFILE or HTTP_X_WAP_PROFILE). I prefer parsing the User Agent as it saves time making a request to get the RDF file and parsing the XML returned. However, if you need more information like the color depth, screen width and screen height then the UA profile is the way to go.

Some examples of User Agents are:

Nokia
- Nokia6230/2.0+(04.43)+Profile/MIDP-2.0+Configuration/CLDC-1.1+UP.Link/6.3.0.0.0
- NokiaN91-1/3.0 (1.00.001.15) SymbianOS/9.1 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
-Mozilla/4.0 (compatible; MSIE 5.0; Series80/2.0 Nokia9500/4.51 Profile/MIDP-2.0 Configuration/CLDC-1.1

Sony Ericsson
- SonyEricssonK700i/R2N SEMC-Browser/4.0.1 Profile/MIDP-2.0 Configuration/CLDC-1.1

Motorola
-MOT-V3i/08.D8.35R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
-Motorola-T33/1.5.1a UP.Browser/5.0.1.7.c.2 (GUI) (Google WAP Proxy/1.0)

Samsung
-SAMSUNG-SGH-T809/T809UVEJ9 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
-Samsung-SPHA680 AU-MIC-A680/2.0 MMP/2.0
-SEC-SGHD807/1.0 TSS/2.5 UP.Link/6.3.0.0.0
-SGH-Z500 SHP/VPP/R5 SMB3.1 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.

Sanyo
-Mozilla/4.0 (MobilePhone MM-7500/US/1.0) NetFront/3.1 MMP/2.0

Audiovox
-AUDIOVOX-PM8910KIT/T115SP0T07 UP.Browser/6.2.2.6.h.1.100 (GUI) MMP/2.0

LG Electronics
-LGE-VI125V01/1.0 UP.Browser/6.2.3.2.1.1.100 (GUI) MMP/2.0
-LG-CU500 Obigo/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.0
-LG-LX350 AU-MIC-LX350/2.0 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1

Siemens BenQ
- SIE-ME45/05 UP.Browser/5.0.1.1.102 (GUI)

RIM
-BlackBerry7100/4.0.2 Profile/MIDP-2.0 Configuration/CLDC-1.1

HTC
-HTC-8100/1.2 Mozilla/4.0 (compatible; MSIE 5.5; Windows CE; PPC; 240x320)

Here is a good site where you can find a more comprehensive collection of User Agents.

As you can see, its pretty simple to extract the Model Name and Manufacturer name from the User Agent, but if you are looking for more information then the UA profile is the best way to go.

Sunday, July 16, 2006

[Cell Phones]Slifter: Search stores closest to you

Another neat shopping application for cell phones.

"Slifter is a mobile and online local product finder, which includes a personalized shopping list, and the ability to send products to friends. Slifter contains a wide range of products from diverse online and offline retailers.

In addition to seeing descriptions and images of products you are searching for, you can get the address and phone number of the location selling the product and even a streetmap to help you find it.

There is no cost for using Slifter both on the go and online, although your mobile carrier may assess data service charges depending on your plan."














I tried the application out and after some intial connection issues on my phone it worked like a charm. Having information about the inventory of stores in my vicinity is definitely a plus.

You can download the application by visiting www.slifter.com on ur phone.

Friday, July 14, 2006

Rollyo: Roll Your Own Search Engine

Shabbs pointed this out to me. Totally neat !!! I now have my very own Rollyo to search in all the forum sites I visit.

The best part about it (according to Shabbs) is that it comes with a plugin for firefox.

Visit Rollyo

Wednesday, July 12, 2006

Barcodepedia.com - the online barcode database.

Nice work !!! I joined the site recently and plan to post tons of barcodes into the system. It would be great when other sites can access the feed from barcodepedia. This is not the first initiative in creating a free database of barcodes, the more famous UPC Database is the first stop for anyone trying to lookup the product associated with a barcode specially if you use google.

What makes this site cool is the webcam barcode scanner :-). Check it out if you have a Webcam hooked up to your PC. The scanner seems to decode only when the barcode is in horrizontal alignment and there are a few false decodes too but overall the concept is cool and I love using it. Barcode decoding using webcams has been around for a while. There were numerous firms offering Webcam SDKs including SCANBUY but I do not know who currently provides this software anymore.

For best results, use a webcam with a adjustable focus. I am using the Logitech 4000 pro which has a adjustable focus around the lens and it works like a charm for barcode scanning.

The directions to use the scanner from the site...


"To use the scanner simply:
  1. 1 Adjust your webcam focus to be sharp on objects around 10cm/5inch from the webcam
  2. 2 Hold the barcode in front of the webcam such that you can see the entire barcode in focus in the preview area

Please notice that the current scanner only works with EAN13 and UPCA barcodes. Therefore if the scanner is unable to scan your barcode ensure that the barcode has 12-13 numbers below it."


Tuesday, July 11, 2006

SCANBUY Shopper on GetJar

SCANBUY Shopper application is now also available on www.getJar.com as a free download. The best part about downloading from getJar is that you can get the Jar file on the PC and then transfer it to your phone via Infrared or Bluetooth.

Sunday, July 09, 2006

[SMS] Comparison Shopping: Smarter Price Check

Text comparison shopping is becoming popular. A lot of the regular comparison shopping sites have taken cues from the Google SMS service and have launched their own service for providing Prices by SMS.

I came across Smarter.com today and played around with their SMS service. Works quiet well for electronics and similar stuff. All the user has to do is a be a bit specific in his search. The service works best when you provide the Manufacturer name and SKU Number, Providing a partial product name and SKU or Model number gives accurate results too. Needless to say, their SMS number is now in my phone book.

Try it yourself: Text the Product Name + Model Number of any product to the number 610-7627837 and you will get an SMS back with the best price. To find the Model number etc.. try looking on the sides of the box

I searched for "Win TV 1033" and got back the exact prodcut with the pricing available at Smarter.com. I am so glad that I did not over pay and got it cheaper to SCANBUY ;-) earlier. I did try entering the UPC but that did not give me any results at all, but who's complaining :-).

Taking on Google SMS? :-) ... I love their approach. Check out How we stack up on their website. Gives a clear indication of what the relatively smaller firms should aim for in terms of service to stay afloat with the BIG G around. I agree with the Smarter team completely. Way to go guys.

Saturday, July 08, 2006

Orkut: Scrapping

I am registered on a huge number of community sites though I do not spend much time there.

Sometime along the line I created these accounts thanks to the emails that kept filling up my inbox with reminders from my friends for signing up. Recently, I have started logging onto my Orkut account (created about a year ago) and just love the scrapping thing. Its like texting somebody on the world wide web. Can be fun !!! I am pretty sure, I will get tired of this by next week and then move on to something else but its a nice way to spend a half hour ;-)

GMAIL: There must be a better way

I have been using gmail for quiet some time now. I love the service since my yahoo account is now solely for spam and hotmail .... well lets not even go there right now.

I have about 3000 mesages in the spam folder of my gmail account and I thought of cleaning up the space today...
One thing missing in all the features provided is a DELETE ALL or a PURGE SPAM button. I am pretty sure I am not going to delete spam page by page (specially when there are about 400 pages)... it's so freakin time consuming. The end result.. I am stuck with 2456 spam messages :-) .. Didnt have the patience to go all the way and I guess I never will.

I miss the "No Spam. Hoooraaay ...." message :-(

Thursday, June 29, 2006

Barcodes at their best: Download apps using a shot code.

I have been around the concept of scanning barcodes using camera phones for around 3 years now and frankly it was a pleasant suprise to see the shotcode being used on a website to download Java applications. This thing has been around for ages now but I finally got to use it myself.


Check out the camera download at http://www.getjar.com for any application that meets your fancy.


Image from www.symbiangear.com




What you need:
1) You will need to download the Shotcode reader (called GOD for some reason) on your phone. Since the barcode reading happens on the phone itself the number of phones supported are quiet limited ( I feel their pain).
2) Once you have the application on your phone, just select the application you like and shoot the shotcode.

The way it works:
The shotcode contains a 6-8 digit index (numeric value). Once the code is decoded the index value is added to the download URL in the query string and the download app launches the WAP browser on your phone. The index maps to the file you are looking to download and redirects the browser to the location of the JAD file.

And Voila .. you have downloaded a Java application on your phone with just one click :-)..

Moving On:
The technology has been around for ages now and the only thing that remains is mass adoption and standardization. As a user, I would like to have just one Downloader application that allows me to download from multiple sites. Wonder when this change is gonna happen.



Wednesday, June 07, 2006

SCANBUY Shopper: A Shopping Assistant for your cell phone

"SCANBUY Shopper enables cell phone users to have the best bargain hunting tool at their very fingertips. Get the best prices and all the product info you need to make smart and fun purchases. "



The first version of the shopper application provides a user the ability to "scan" (I use this term loosely here) the products in a store before buying them.


How does it work ?
You walk into a store, you like a product you see on the rack and you want to buy it.
- You key in the UPC barcode value of the product in the Shopper application and Voila... you are able to see online offers and even read reviews of that product.
- If you like some thing you see, you can send yourself an email. Then, in the comfort of your home or cubicle you can review the information again on your PC.
- Its as simple as that.

Whats the value to me?
- Piece of mind factor: Before buying anything I would like to see how much extra I am shelling out to get the product then and there. If the price difference is something that catches my eye and I can wait a week or so for the shipping, I would much rather order it online.
- Reviews: Before buying that webcam or external hard drive I would like to know what the others think about it. I know, reading long reviews on a small shitty screen of a cell phone isnt a very rosy proposition but for products like books, cameras and other electrnonic stuff these reviews will help me make up my mind.

I took the application out to Staples when I went shopping for web cams. We needed a few for the office and some of the price differences were pretty amazing. I bought a Creative Labs webcam online after sending myself an email from the Shopper app but I also bought a couple of other models from the store cause the price difference was just not worth the wait.

The first version seems simple enough. Its a Java app based around J2ME and is available for Java enabled cell phones on all GSM carriers here in states. One catch for the average user, you will need data service on your phone. You can add it to your plan through your carrier for a few dollars more but its definetly a good investment considering the applications that you can then load on your phone ;-).

The app is now available for download at http://wap.scanbuy.com
For more info and also to send yourself a link to download the app visit :
http://www.scanbuyshopper.com

Friday, May 26, 2006

The bar code gets a hip new life

The Wall Street Journal came out with an article about Comparison shopping on the phone and how the use of barcodes or visual tags can bring changes into the user experience. Get the article here:

The bar code gets a hip new life

Get the repost on

Olivier's Blog

Monday, April 24, 2006

J2ME: Moto Key Codes

There are times when I agree that device manufacturers have to make changes in the software platform between different classes of devices... BUT ..keycodes ...commmmonnnn!!!!!

So damm frustrating ..

Seems like moto has decided to make a switch in the key code values of their handsets. The new series of handsets including the crappy yet popular RAZR and ROKR have different keycodes for the navigation keys than the earlier "Cool" phones like V600.

Here is the low down:

UP
V600 : 1
RAZR: -1

DOWN
V600 : 6
RAZR: -6

LEFT
V600 : 2
RAZR: -2

RIGHT
V600 : 5
RAZR: -5

SELECT
V600: 20
RAZR: -20

I know its just the negatives but I still have to make changes to my application. Common Moto take a cue from Nokia at being more developer friendly.

Wednesday, April 19, 2006

ShopWiki : Comparison Shopping with a Difference

Nice site, I wouldnt say its a completely new concept in comparison shopping but its the first time I have seen this type of approach being taken. You see more and more sites coming up based on the WEB 2.0 ideology these days.

Whats intersting in ShopWiki is not that they are getting you the best price for a product ( I think I can get a better price on some other sites) but the fact that they help the user in making decisions about the product. The articles and reviews of a product or type of product are based on wiki's left by other users and provide valuable info for research. Lets face it the avaerage user spends about 80 % of the time researching about a product and only 20% of the time scoping out deals for stuff (s)he likes. Integrating the wiki pedia concept with comparison shopping is definitely new and I think this gonna pick up. Soon we will see a lot more sites working around these principles.

You can read more about the benefits of using ShopWiki here.

Nice concept, not the best catalog in terms of products but its only the start.


Saturday, April 15, 2006

Where Was I ?

Long long time since I have posted anything on this blog. Time just flew by and I was suffering from the bloggers block or something similar... Just didnt know what to write about and I didnt want to reduce the blog to a links haven :-)


Well, blogging is growing in my firm. My firm's founder now has a blog too. A real tech geek, this should make interesting reading. Check it out :
AttiaOnline

Tuesday, February 21, 2006

ASP.NET Webservices Tutorials

Found myself working on a webservice yesterday. As you can imagine my Frusto meter was pretty high yesterday :-).. got it working by the end of the day (thanks to some peer programming) but it got me thinking about how little I know about the server technologies :-(. Sure, making edits is fine but when you have to start from scratch !!!. Its a humbling experience.

Found some cool tutorial sites

for ASP.NET 1.1: Go here (godotnet.com)

for ASP.NET 2.0: Go here (ASP.net)

There are plenty of other sites that come up in a google search but to me these sites were the most helpful. Hopefully my next forray into server side coding will be better ;-).

Sunday, February 12, 2006

TastePhone : An awesome resource

OK.. so now i have my J2ME application ready and working on the couple of test devices. Whats Next ?

The deployment stage of any J2ME Midlet can be a nightmarish experience specially if your MIDlet has functionality that requires it to use specific API's. So how would a developer go about ascertaining the list of devices that most likely will support his/her application. Well, the easiest thing to do is to buy all the devices out there and test the MIDlet suite on all of them. Unfortunately, this is not a very practical solution.


The site maintained by Sun is decent but usually not of much help.

Device manufacturers and even carriers have developer portals that do publish the specs of devices BUT, almost in all the cases you end up not finding the detailed information you are looking for. For e.g. The specs say that a device supports MMAPI 1.0 but it usually does not mention if the device the supports the complete implementation or just the audio subset.

Among Manufacturer's dev portals, Nokia's Forum Nokia site is my personal favorite, Motorola's Motocoder site also has improved leaps and bounds in the past 6 months. I will not even talk about Sony Ericsson's specs on their own devices.

Carriers too publish the specs of some of the phones they support but most of the times they link you back to the manufacturer's site. CDMA carriers are better to work with atleast here in US cause they do have and provide the most detailed info on devices when they want to :-).

There are a bunch of third party efforts that do offer comprehensive info and benchmarks on devices but most of them are charged services.

Personally, I love the TastePhone site, its free and gives me the info that I most look for in my apps. If you are J2ME developer then its a MUST visit site for you and while your there try adding your device to the ever growing list ;-)

TastePhone, the MIDP phone benchmark midlet