28 December 2005

Photos of new smartphone Nokia N95

There are some photos of new Nokia phone or smartphone prototype that will become a Nokia N95 phone. I suggest this phone was built on Symbian 9 OS.





13 December 2005

Names of nul string descriptors in Symbian

I always forget who nul string descriptor is called. If you do too, here they are:
_LIT(KNullDesC,"");
_LIT8(KNullDesC8,"");
_LIT16(KNullDesC16,"");

They are declared in e32std.h file.

06 December 2005

Secret of full-duplex audio on Nokia 6630 and 6680 has been revealed

Finally we can find out how to use full-duplex audio on Symbian Series 60 2ed. FP3 phones. As they say here Nokia has released on its Forum Pro site such example in 9 November. It' named Full-Duplex Audio Example. Details of this example we can learn very soon when somebody will publish such a code.

24 November 2005

Opera have released new version of browser for Symbian Series 60

Opera Software have released the new version of its Opera Mobile browser for Symbian Series 60 (S60). Opera 8.5 for S60 boasts high speed, Opera's wide range of features and a new password manager for automatic log-in to sites. The browser also features Opera's advanced zoom-on-page functionality which means that users can zoom in or out to view images and text.
Opera 8.5 for S60 also includes customizable keypad shortcuts, enhanced image handling and more extensive language support. There is new languages in Opera. Opera also have its Small-Screen Rendering (SSR) technology, which dynamically reformats full Web pages for mobile devices to give the best possible user-experience. SSR keeps as much of the original page design and layout as possible while gently adapting the page to fit the width of the screen, eliminating the need to scroll around horizontally.

Also Opera 8.5 can correctly run AJAX web pages, what is very helpful in modern web.
Opera browser is shareware software with 14-days trial period. After this you can buy Opera 8.5 to continue using the browser. Opera 8.5 is a free upgrade to owners of previous versions of Opera. For example, on some models of Nokia phones Opera browser is preinstalled and you don't have to pay for upgrade.
You can
download Opera Mobile and buy it.

21 November 2005

Symbian mobile phones: Semapedia - wikipedia in real life

Project Semapedia hosted on the site semapedia.org is created to connect the virtual and physical world by bringing information from the Internet to the relevant place in physical space. Source of information proposed to be a Wikipedia. The project works in this way:

- you have to create a Semacode which contains URL to Wikipedia site. You can do it online on their site;



- then you have to print this semacode tag and place it on a real world object, for example on the Microsoft headquarter in Redmond;



- now anyone who wants to get information about this thing can use mobile software for Nokia cameraphones with Symbian OS;
- you have to install this software reader on the phone and launch it; (also there are readers for J2ME cameraphones)



- now you can point the camera of your phone at semacode tag and load page from Wikipedia about this object.

This project can become wide popular because of its simplicity and usefulness. Lets wait awhile.

17 November 2005

Nokia Wireless Presenter v2.0




Nokia have released a new version of its Wireless Presenter for Nokia 6680 phone.
With Wireless Presenter you can use your Nokia 6680 to control PowerPoint presentations, music players and other Windows applications. Nokia Wireless Presenter software allows you to access your Windows desktop applications via Bluetooth wireless technology. You need to install this software in both your PC and your Nokia 6680 to remotely control the mouse and keyboard functions.
You can download this application here. 1.8Mb English

16 November 2005

Call of SetPriority() in audio classes in Symbian Series 60 programming

There is priorities in Audio MMF Server for each client. When you use API classes for recording and playing audio you always have to setup some priority to your audio. There are different priorities for some purposes. What value should you select? In many cases it will be enough to setup EMdaPriorityNormal. If you setup EMdaPriorityMax value then you cannot be interrupted by other MMF Server clients.
But in some cases standard Symbian applications and services can interrupt your audio input/output, for example, beeping of key pressing. You will get KErrDied error code then. What we should do to avoid this? The solution, recommended by Nokia developers is to setup priority of your client to 80, like this:

iAudioPlayer->SetPriority( 80, EMdaPriorityPreferenceTimeAndQuality );

So you won't be interrupted by other clients and will not block audio at all for clients with higher priority.

14 November 2005

Mobile Symbian podcast catcher for S60 phones

Podcasting nowadays is widely popular in the world. And it is strange that no one have released a software for Symbian smartphones that can subscribe and recieve podcast.

But recently such software was created by
Mobiedge. It is Mobiedge Radio - a Wireless/Wired Podcasting Client. As developers claim: "Mobiedge Radio is a podcatcher (podcasting client) that runs on an S60 mobile phone. You can use it to download, read, manage your subscribed podcasting feeds on your phone."

You can buy this software application at Handago
here.
If you have purchased Mobiedge Newspaper software you don't need to buy this one, just upgrade to version 1.1 of Mobiedge Newspaper.

07 November 2005

The new Sony Ericsson P990 smartphone was announced


The Sony Ericsson P990 will be the first commercially available smartphone to adopt Symbian OS v9.1 and the UIQ 3 software platform.
Screen Display:
240x320 pixels QVGA
262 k color
Memory:
RAM Memory: 64MB
Flash Memory: 128MB
Shared memory for storage: Up to 80MB user free memory
External memory: Up to 4GB Memory Stick Duo Pro
Max JAR Size: Unlimited (but depending on available storage)
Max SIS Size: Unlimited (but depending on available storage)
Local Connectivity:
Infrared
Bluetooth
USB
WiFi
Extra features:
2 Megapixel camera with autofocus
Video recorder/player
QWERTY, QWERTZ, AZERTY and Russian keyboard options
Jog Dial
QuickShare
MusicDJ
PlayNow
4GB Memory Stick Duo Pro
Flight mode
FM radio

Press release says:

Developers can program in C++ or Java to create powerful professional and personal productivity tools for the P990. The smartphone is based on Sony Ericsson's Java Platform 3 (JP-3) and supports four new JSRs including Web Services (JSR 172). It is the twentieth phone from Sony Ericsson to support Mobile Java 3D with JSR 184. The P990 supports both CDLC and CDC Java environments, and standard Java applications can run in both flip-open and flip-closed modes.

03 November 2005

New Nokia Symbian-smartphones N71, N80 and N92

Nokia has introduced three new Symbian OS-based phones.

With the browsing experience accentuated by its huge high resolution color display (320 x 240 pixels, up to 262,144 colors), the Nokia N71 supports the new Nokia Web Browser with Mini Map. A pocketable entertainment system, the Nokia N71 keeps people entertained with digital music, videos and stereo FM radio and is the latest member of the Nokia XpressMusic family.



Nokia N80 is the first ever handset to enable seamless home media networking between compatible TVs, audio systems and PCs.



Nokia N92 is, the first integrated DVB-H mobile device in the Nokia Nseries range for watching broadcast TV programs.



For more info go to
Nokia site.

Want to look at new Symbian UIQ smartphone SonyEricsson 990 with opened flip?

If you didn't see how SonyEriccson P990 looks with opened flip or recording video then this two pictures are for you


31 October 2005

Do action for all files in some directory on all drives in Symbian

In SDL there is a useful sample of how to run through all files in directory:


void ForAllMatchingFiles(RFs& aSession, const TDesC& aWildName, const TDesC& aScanDir)
{
TFindFile file_finder(aSession);
CDir* file_list;
TInt err = file_finder.FindWildByDir(aWildName,aScanDir, file_list);
while (err==KErrNone)
{
TInt i;
for (i=0; i < Count(); i++)
{
TParse fullentry;
fullentry.Set((*file_list)[i].iName, &file_finder.File(),NULL);

// Do something with the full Symbian OS filename

DoOneFile(aSession, fullentry.FullName());
}
delete file_list;
err=file_finder.FindWild(file_list);
}
}

26 October 2005

Pics of Symbian smartphone Nokia N71 prototype

In the Internet show up pictures of prototype of the new Nokia Symbian-smartphone N71. Here is the link. And here is one of the pictures:

More about writable descriptor

Code in previous post about writable descriptor was related to use members of class. If you need the descriptor only in small pieceof code then you can write like this:

TPtr8 iWriteDes(iHeapDes->Des());

22 October 2005

How to convert TInt64 to string on Symbian?

Sometimes you need to display some TInt64 on screen so you need to convert it to string representation. But unfortunately you can’t display it using Format() function of Symbian descriptors. What to do? You have to use functions AppendNum() or Num() which can take as parameter TInt64. Code will look like this:

    TInt64 n = 123456789;
    TBuf<64> tInt64;
    tInt64.AppendNum( n );
    tSomeString.Format( “I have this value - %S”, &tInt64 );

20 October 2005

How to assign writable descriptor in Symbian

When you need a writable descriptor like TDes8 to pass as reference into a function ( like FillMyDes(TDes8& aDes) ), and later this function will fill it with data, you probably want to allocate this descriptor in Symbian heap. So you are writing this code:

    HBufC8* iHeapDes = HBufC8::NewL(KSIZE);

And then you want to store writable descriptor for later use like this:

    TPtr8 iWriteDes(NULL,0);
    iWriteDes = iHeapDes->Des();

But iWriteDes don’t becomes what you really wanted. Because you make mistake in previous line of code, you haven’t assigned descriptor, you just trieŠ² to copy the data contained in heap descriptor to you writable descriptor. The right code will look like this:

    iWriteDes.Set( iHeapDes->Des() );

Now you got correct writable descriptor in iWriteDes.

19 October 2005

How to kill another process by its name

This code snippet will kill process with name KPROCNAME

TFullName theName;
TFindProcess process;
while ( process.Next( theName ) != KErrNotFound )
{
if ( ( theName.Find( KPROCNAME ) != KErrNotFound ) )
{
RProcess aProcess;
aProcess.Open( process );
aProcess.Kill(0);
aProcess.Close();
}
}

18 October 2005

Do you know how to convert to AMR using CMMFCodec?

This task can be tricky because of lack of the documentation on AMR-NB codec in Symbian. The following code will work on Series 60 2.0 devices:

First of all we declare missing declaration from old AmrCodec.h from Series 60 1.0 SDK:

class TAmrEncParams

{

public:

inline TAmrEncParams();

public:

TInt iMode; // encoding mode 0-7 (0=MR475,1=MR515,...,7=MR122,
default 7)


TInt iDTX; // DTX flag (TRUE or default FALSE)

};

TAmrEncParams::TAmrEncParams() :

iMode(7), iDTX(0) {}

And we will also declare UIDs of AMR codecs:

#define KAdvancedUidCodecPCM16ToAMR 0x101FAF68
#define KAdvancedUidCodecAMRToPCM16 0x101FAF67

This is the function that convers PCM data to AMR-NB (note that CMMFPtrBuffer class you can use only on Series 60 2.0 FP2 SDK, on earlier SDKs you have to use CMMFDescriptorBuffer). Size of aDes parameter is supposed to be equal to 320 bytes.

HBufC8* ConvertFromPCMToAMRNBL( const TPtr8& aDes, TInt aMode )

{

TAmrEncParams taepParams;

taepParams.iMode = aMode;

cmmfcCodec = CMMFCodec::NewL(TUid::Uid(KAdvancedUidCodecPCM16ToAMR ));

CleanupStack::PushL( cmmfcCodec );

cmmfcCodec->ConfigureL( TUid::Uid(KAdvancedUidCodecPCM16ToAMR), ( const TDesC8& ) taepParams );
ptrbPCM16 = CMMFPtrBuffer::NewL();

CleanupStack::PushL( ptrbPCM16 );

ptrbPCM16->SetPtr( aDes );

desbAMRNB = CMMFDescriptorBuffer::NewL( 32 );

CleanupStack::PushL( desbAMRNB );

TCodecProcessResult result = cmmfcCodec->ProcessL( * ptrbPCM16, * desbAMRNB );

if ( ( result.iStatus != TCodecProcessResult::EProcessComplete )

( result.iSrcBytesProcessed != ( TUint ) aDes.Length() ) )

return NULL;

CleanupStack::Pop( 2 ); // cmmfcCodec, ptrbPCM16

HBufC8* pAMRData = desbAMRNB->Data().AllocL();

CleanupStack::Pop( 1 ); // desbAMRNB

return pAMRData;

}

16 September 2005

ScreenFTP

Did you hear something about this very interesting software ScreenFTP?  This is a new concept of transferring information between PC and your phone. This software uses PC’s display and phones camera to transfer data between PC and phone. Speed of this data channel reaches 1.3 Kbps. They have developed this application for Nokia 6600 phone. You can download it from the site and try to use on your phone.  

09 August 2005

Full duplex audio on Nokia 6630, 6680

There is first known application "Useful Skype Phone for Nokia 6630, 6680" that uses full duplex audio feature on the Nokia 6630, Nokia 6680 phone.
I hope soon this feature will be at public access to all developers.

05 August 2005

There is new newsgroup at publicnews.symbiandevnet.com news-server

New group is called discussion.Symbian.Signed. As written in welcome to the group:
"Just as with the other newsgroups on this server, Symbian has created discussion.Symbian.Signed to be a free, public, self-help discussion forum fordevelopers using the Symbian Signed process. Please feel free to post (andanswer!) any questions about Symbian Signed in this group instead of in theother ones on this server. Again, just like the other groups, this forum will beread/monitored by Symbian staff who will respond on a 'best effort' basis to tryand help the community, but we can't offer any *guaranteed* answers in any fixedtime-frame. As usual, however, we will do our best! We will also attempt to turnany questions which arise regularly in to FAQs to help other developers infuture."
news://publicnews.symbiandevnet.com/discussion.Symbian.Signed

04 August 2005

EHeretic - port of the Raven/Id first person shooter game Heretic to the A92x, A1000, Pxxx phones.

Another port of shooter to the Symbian. Main interest to developer - code of the game is open source.
http://home.comcast.net/~stevesprojects/#EHeretic

symbiancodex.com



There is a new site http://www.symbiancodex.com/ created by Simon Judge. The idea of this site is to create search mechanism through the most of opened code sources for Symbian in public access. Sometimes it's more effective than searching across all of the Internet via Google.

08 July 2005

CEikDialog usage hint

There is a one useful hint. If you use CEikDialog child class and don't want to write all necessary parameters in the resource file thn you can write only desired ones there. And after this you can dynamically specify other parameters of the dialog. In this case shoul be called this functions:
iDialog->PrepareLC(the _Resource_Id);
// manual altering parameter, for exampe iDialog->SetTextL(the_String);
// and then call RunLD function
iDialog->RunLD();

22 April 2005

Common products UIDs

Do you know all the UIDs that you should write in .pkg files to specify application target platform? Here they are:

Series 60

Series 60 v0.9 0x101F6F88
Series 60 v1.0 0x101F795F
Series 60 v1.1 0x101F8201
Series 60 v1.2 0x101F8202
Series 60 v2.0 0x101f7960
Series 60 2nd Edition 0x101f7960
Series 60 2nd Edition + Feature Pack 1 0x101F9115
Series 60 2nd Edition + Feature Pack 2 0x10200BAB
Nokia 3650 0x101F7962
Nokia 6600 0x101F7963
Nokia 6620 0x1020216B
Nokia 6630 0x101F7964
Nokia 7610 0x101FD5DB
Nokia 7650 0x101F6F87
Nokia N-Gage 0x101F8A64
Siemens SX1 0x101F9071

Series 80


Series 80 v2.0 0x101F8ED2
Nokia 9300 0x101F8ED1
Nokia 9500 0x101F8DDB

UIQ

UIQ v2.0 0x101F617B
UIQ v2.1 0x101F61CE
SonyEricsson P80x 0x101F80BE
SonyEricsson P90x 0x101FBB35

Development platforms


Series5mx 0x1000118a
Brutus board 0x10005f60
Cogent board 0x10005f61
Win32Emulator 0x10005f62
WinC 0x10005f63
CirrusLogic 7211 board 0x1000604f

How to add this UIDs in your .pkg files:

Example for UIQ 2.0:
(0x101F617B), 2, 0, 0, {"UIQ20ProductID"}
Example for Series 60 2.0:
(0x101F7960), 0, 0, 0, {"Series60ProductID"}

It is generally preferable to use the Series 60 vX.X UIDs unless your application is only targeted at a very specific phone. Note that there is a known issue in the Series 60 Developer Platform 2.0, Nokia 6600, firmware version 3.42.1 described in
"Developer Platform 2.0: Known Issues", current version of this document you can find
here.

UIDs was found here.

21 April 2005

Using of CErrorUI

Every application need to display errors such as "Out of memory". In this case you need a tool to display it from any point in your code without expencing coding. Symbian has class CErrorUI for it. Here some docs from SDL.

"CErrorUI provides a mechanism for applications to display a standard error message dialog to the user. Typically, this could be used to warn a user about Out Of Memory (OOM) conditions.
CErrorUI displays an error of the form:


context : error text

in a dialog box. The context of the error is usually the application or the subsystem where the error occurred. CErrorUI uses an instance of CTextResolver to derive the error text and error context from the error code. The context may be automatically selected (default) or may be set by the caller from a limited range.

When using automatic context (ECtxAutomatic) be aware the wrong context may be shown. If CTextResolver cannot decide the context from the error code, it may display a blank context or as the previous context that was displayed. The actual context text that is displayed depends on the SDK version used to build the application. For example; the error text for KErrCancel may display as 'System : System Error' or 'General : System Error'.

Utility class to display error notes by applications. This is the default error display class to be used by applications. The features of the class are: maps given error to error text to be displayed displays error note using timed, global note does not display error if it is already "on" offers a reference to internal TextResolver instance Usage (typically as instance variable)
iErrorUI = CErrorUI::NewL(); // iCoeEnv can be given as argument, no need to that though

// ... some code causing an error ...

if ( err != KErrNone )
iErrorUI->ShowGlobalErrorNoteL(err); "

Note that you need link your app to commonui.lib to use CErrorUI.

There is no plugin realization for CVideoRecorderUtility on the Nokia 6600 phone

I you think that you can use CVideoRecorderUtility on a Nokia 6600 then you're wrong. There is no any plugin for MMF that implements such functionality. Plugin was added to the Series 60 2.0 Feature Pack 1 phones - Nokia 6620, 7610, 6260 and others.

19 April 2005

New Nokia Developer Newsletter, April 19, 2005

In this newsletter:

Tip of the Week: SMS Data to Your MIDlets
You can catch incoming messages from Midlets even if the MIDlet is not running when the SMS arrives. There is an example: MIDP 2.0: Wireless Messaging API Example MIDP_2_0_Wireless_Messaging_API_Example_v1_0.zip

New Nokia 8800 phone



Series 40 Developer Platform 2.0

CLDC 1.1
MIDP 2.0
Nokia UI API Wireless Messaging API (JSR-120)
Mobile Media API (JSR-135)
Bluetooth API (JSR-82 /except OBEX)
Java Technology Wireless Industry rel. 1 (JSR-185)
FileConnection and PIM API (JSR-75)
Mobile 3D Graphics API (JSR-184)

From Java™ MIDP to C++ for Symbian OS
How to migrate in game development from Java MIDP to Symbian C++. The story from from Spoon Interactive Arts of Manila, Philippines. Migrating_SymbianOS_Java_v1_0.pdf, 744 kB.

and more...

12 April 2005

New article about Bluetooth Symbian programming on Forum Nokia

Updated document "Symbian OS: Designing Bluetooth Applications In C++ v1.1" provides developers having already existing knowledge of the Bluetooth technology with enough information to develop Bluetooth applications in C++ for the Series 60 and Series 80 Developer Platforms and for the Nokia 7710 using Symbian OS Bluetooth APIs.
This article describe how Symbian OS Bluetooth APIs give applications access to RFCOMM, L2CAP, SDP, and HCI.
This is pdf document, size 709.0 KB, direct link
here.
Forum Nokia also have some good examples about using Bluetooth on Symbian. Another good example can be found in the sources to the book "Developing Series 60 Applications" available from here.

11 April 2005

Remote access to PC from Symbian smartphone

Not everybody knows that you can control your PC remotely via GPRS Internet connection directly from your Symbian smartphone. There are some applications which allow you to do that. The one of most popular is ActiveViewer with support of VNC protocol. ActiveViewer is written on Java MIDP and has been ported to many devices.

Useful sources

There are some good programming examples on the Mika Raento's Symbian Programming page. They are part of Context research project that is joint effort of the Department of Computer Science and HIIT Basic Research Unit, both at University of Helsinki, and of HIIT Advanced Research Unit. This project is very interesting for a mobile developer because it researches special use cases of mobile user experience. Which ones can give to developer some new ideas about how his program should run and required features should be implemented.