Archived:Media File Symbian API
Article Metadata
Compatibility
Article
- This API is not part of the public SDK. It can be found in the SDK API Plug-in.
The Media File API is responsible for sending notifications about file updates to the Media Gallery. It also offers an API to check duplicate media files, that is, to check if the file name is a unique media file name in the phone memory or the multimedia card.
Header files
#include <MGXFileManagerFactory.h> #include <CMGXFileManager.h> #include <CMGXFileNotificationHandler.h> #include <MMGXFileNotificationObserver.h>
Link against
LIBRARY MGXMediafileapi.libRequired capability
CAPABILITY ReadUserData WriteDeviceData
Example code
Creating File Manager and the file notification handler
CMGXFileManager* iFileManager = MGXFileManagerFactory::NewFileManagerL(
iCoeEnv->FsSession() );
CMGXFileNotificationHandler* iFNH =
MGXFileManagerFactory::NewFileNotificationHandlerL();
Updating a file
There are different file update types:
1) A general update to the media gallery.
2) Notify Media Gallery after saving a file from a viewer application.
3) Notify Media Gallery after renaming a media file.
4) Update Media Gallery files (an array of files).
The code snippet to send an update is:
// Create an array of descriptors for the selected files
CDesCArrayFlat* fileArray = new (ELeave) CDesCArrayFlat(5);
CleanupStack::PushL(fileArray);
TBool allowMultiple(EFalse);
TBuf <20> lHeading;
lHeading.Append(_L("Image Files"));
// Open the dialog. this is overloaded
TBool ret = MGFetch::RunL(*fileArray,EImageFile,allowMultiple,KNullDesC,lHeading);
if( ret )
{
BaflUtils::RenameFile(CEikonEnv::Static()->FsSession(),
fileArray->MdcaPoint(0),_L("c:\\Data\\Images\\new.bmp"));
iContainer->SetTextL( _L("File Renamed") );
iFileManager->UpdateL(fileArray->MdcaPoint(0),_L("c:\\Data\\Images\\new.bmp"));
}
else
{
iContainer->SetTextL( _L("File Not Selected") );
}
CleanupStack::PopAndDestroy(); // fileArray
Checking for duplicate file names :
TBool ret = iFileManager->SuccessFileNameL( iFileName, EDriveC );
//To check for file in phone memory.
//iFileName is filename to be checked.
//To check if it exists in MMC use "EDriveE" instead of "EDriveC"
Register and unregister observer
You can also register to get notifications of changed media files (for example, new files are created or existing files are modified or deleted, etc.)
1) Derive your class from MMGXFileNotificationObserver and implement the pure virtual function HandleFileNotificationEventL.
2) Register for observations:
iFNH->SetObserver( *this )
3) Unregister to stop getting notifications :
iFNH->RemoveObserver(*this);

