Bonjour et problème de lettre de lecteur

Login to reply to this topic.
Tue, 2005-03-29 14:14
Joined: 2005-03-29
Forum posts: 8
Bonjour,

Je viens de m'inscrire sur NewLC alors je garde mon premier post pour le french corner ...

Bon, mon problème:
Je porte sous Symbian6.1/Series60 une appli que j'ai développée avec symbian7/UIQ2 (P800 et P910i) et portée depuis sous MIDP2. C'est une application qui doit émettre un son d'alarme. Pour plus de portabilité, cette alarme est stockée dans un fichier alarm.wav, installée comme suit dans le .pkg:
Code:
"..\data\Alarm.wav"-"!:\system\apps\monAPP\Alarm.wav"

C'est à dire que c'est l'utilisateur qui va choisir de l'emplacement effectif du fichier sur le téléphone (c: ou e:, etc ...)

Avec Symbian7/UIQ, pour "jouer" cette alarme, j'utilisais le code suivant:
Code:
_LIT(wavname, "\\system\\apps\\monAPP\\Alarm.wav");
iAlarmPlayer->StartPlayL(wavname);
iAlarmPlayer étant un CQikSoundPlayer*

Qui permet de s'affranchir de savoir sur quel "disque" se trouve le fichier.

Sous Symbian6.1/Series60, j'utilise un CMdaAudioPlayerUtility*, de la façon suivante:
Code:
_LIT(wavname, "e:\\system\\apps\\monAPP\\Alarm.wav");
m_Player = CMdaAudioPlayerUtility::NewFilePlayerL(wavname, m_PlayerObserver);

Le problème c'est que si j'enlève le e: ou si je le remplace par !: ou *:, j'obtiens un "system error".

Alors, comment éviter de lui donner la lettre de lecteur ? Suis je obligé de passer par une detection du chemin d'installation ?

Je précise au passage que je ne veux pas d'un chemin absolu dans le .pkg

Merci (et bonjour),
a+

Xavier Garreau


Tue, 2005-03-29 14:17
Joined: 2005-03-29
Forum posts: 8
Bonjour et problème de lettre de lecteur
Le Cross Posting ne s'applique pas dans le cas du french corner hein ?

Je peux utiliser aussi le forum Symbian C++ pour avoir une réponse ?

a+

Xavier Garreau

Tue, 2005-03-29 15:50
Joined: 2005-03-29
Forum posts: 8
Bonjour et problème de lettre de lecteur
Bon en attendant j'ai fait comme ça ... Si quelqu'un a moins lourd, je suis preneur ...

Code:
TParse parser;
parser.Set(Application()->AppFullName(), NULL, NULL);
TPtrC ptrDP = parser.DriveAndPath();
_LIT(KWavName, "Alarm.wav");
HBufC* tmpStr = HBufC::NewLC(ptrDP.Length()+KWavName().Length());
TPtr pTmpStr(tmpStr->Des());
pTmpStr = ptrDP;
pTmpStr.Append(KWavName);
m_Player = CMdaAudioPlayerUtility::NewFilePlayerL(*tmpStr, m_PlayerObserver);
CleanupStack::PopAndDestroy();

a+

Xavier Garreau

Fri, 2005-04-01 11:41
NewLC AdministratorSymbian AccreditedForum Nokia Champion
Joined: 2003-01-14
Forum posts: 1918
Bonjour et problème de lettre de lecteur
Regarde du coté de TFindFile.... Et comme je suis extrêmement bon, une petite proc qui rend de grands services:

Code:
void NFileUtils::GetFullyQualifiedNameL(const TDesC& aFileName,TDes& aFullName)
{
 TParse parser;
 parser.Set(aFileName,NULL,NULL);
 RFs fs;
 fs.Connect();
 CleanupClosePushL(fs);
 TFindFile finder(fs);
 finder.FindByDir(parser.NameAndExt(),parser.DriveAndPath());
 aFullName.Copy(finder.File());
 CleanupStack::PopAndDestroy(); // fs
}

Appelle cette proc avec ton path ("\\system...") et tu récupèreras en sortie un chemin complet vers ton fichier pour le passer au player.

Eric Bustarret
NewLC Founder & CEO / Professional Symbian OS Consultant

Fri, 2005-04-01 13:35
Joined: 2005-03-29
Forum posts: 8
Bonjour et problème de lettre de lecteur
Ben ... Merci, mais je ne suis pas sûr que rechercher un fichier sois plus rapide que coller le nom de fichier au Path de exécutable quand on sait que ce fichier se trouve justement dans le dossier de l'exécutable ...

Merci quand même ... Mais pour prendre un parrallèle avec de la programmation windows, c'est comme si tu avais un fichier c:\winnt\truc.txt, et que tu savais que dans le même répertoire tu as un fichier truc2.txt.

C'est plus simple de regarder les premières lettres de c:\winnt\truc.txt et les coller devant truc2.txt que de faire une recherche sur tous les disques du fichier truc2.txt ...

a+

Xavier Garreau

Fri, 2005-04-01 15:13
NewLC AdministratorSymbian AccreditedForum Nokia Champion
Joined: 2003-01-14
Forum posts: 1918
Bonjour et problème de lettre de lecteur
Pas sur parce que cette fonction se contente de regarder si
A:\toto\monfichier.txt
B:\toto\monfichier.txt
C:\toto\monfichier.txt
D:\toto\monfichier.txt
...


Et s'arrete dès qu'elle le trouve. C'est la méthode "normale" pour resoudre ce problème de drive sur Symbian.

Eric Bustarret
NewLC Founder & CEO / Professional Symbian OS Consultant

Fri, 2005-04-01 15:22
Joined: 2005-03-29
Forum posts: 8
Bonjour et problème de lettre de lecteur
Et la méthode avec * (enfin directement \\system\\...)  c'est propre à UIQ ou c'est dispo partout à partir de symbian 7 ?

a+

Xavier Garreau

Thu, 2005-07-14 10:36
Joined: 2005-07-14
Forum posts: 20
Re: Bonjour et problème de lettre de lecteur
Bonjour,

Et la méthode avec * (enfin directement \\system\\...)  c'est propre à UIQ ou c'est dispo partout à partir de symbian 7 ?

Cette méthode est propre à tous à partir de symbian OS 7, pour la simple raison que UIQ n'est qu'une couche de Symbian OS chargée de l'interface utilisateur.

Par ailleurs, dans la documentation, il semblerait que ?: et *: soit équivalent.
Je ne trouve pas de référence envers !:

Cordialement,
A13

Kiss me I'm french Smiling

  • Login to reply to this topic.