Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

How use NotifyChange to get camera clicks

From 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 04:54.
32 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.

×