×
Namespaces

Variants
Actions

How use NotifyChange to get camera clicks

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Article
Created: rathodavinash (15 May 2007)
Last edited: hamishwillee (14 Jun 2013)

Does your application need a notification whenever a photo is clicked through the camera application? Well, here is how you can achieve it. The following article shows how your application can get a notification as soon as a photo is clicked and stored in the Phone memory, i.e., the C:\Nokia\Images folder. It is achieved using the NotifyChange API of the RFs server.

Remember to include PlatformEnv.lib in your mmp file if you are using the PathInfo API's

Library needed:

LIBRARY PlatformEnv.lib

Source:

#ifndef _NOTIFY_C_
#define _NOTIFY_C_
#include <f32file.h>
#include <e32base.h>
 
#include "MyDirObserver.h"
 
class CMyCNotify : public CActive
{
public:
CMyCNotify(RFs& aFs, MDirObserver& aDirObserver);
~CMyCNotify();
 
void StartMonitoring();
 
public: // CActive
void RunL();
void DoCancel();
 
private:
RFs& iFs;
MDirObserver& iDirObserver;
};
#endif
#include <eikenv.h>
#include <PathInfo.h>
 
#include "MyCNotify.h"
 
CMyCNotify::CMyCNotify(RFs& aFs, MDirObserver& aDirObserver)
: CActive(EPriorityStandard),
iFs(aFs),
iDirObserver(aDirObserver)
{
CActiveScheduler::Add(this);
}
 
CMyCNotify::~CMyCNotify()
{
Cancel();
}
 
void CMyCNotify::RunL()
{
if(iStatus==KErrNone)
{
iDirObserver.CChange();
StartMonitoring();
}
else
; // there was an error so all monitoring will now stop
}
 
void CMyCNotify::DoCancel()
{
iFs.NotifyChangeCancel(iStatus);
}
 
void CMyCNotify::StartMonitoring()
{
if(!IsActive())
{
TFileName path = PathInfo::PhoneMemoryRootPath();
path.Append(PathInfo::ImagesPath());
 
iFs.NotifyChange(ENotifyWrite, iStatus, path);
 
SetActive();
}
else
; // already waiting for a change so do nothing
}

and finally implement the interface

#ifndef _DIROBSERVER_H_
#define _DIROBSERVER_H_
 
class MDirObserver
{
public:
virtual void CChange() = 0;
virtual ~MDirObserver(){}
};
 
#endif

Similarly a notifier can be implemented on E:\Images to capture photos from MMC using PathInfo::MemoryCardRootPath(). Also the same can be used for videos, recorder, etc.

This page was last modified on 14 June 2013, at 07:54.
33 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×