469,275 Members | 1,850 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,275 developers. It's quick & easy.

Audio Recorder

markmcgookin
648 Expert 512MB
Hi Folks,

I was hoping to get a little help here. I have recently foun the following code (here: http://www.opennetcf.org/forums/topic.asp?TOPIC_ID=160)

Expand|Select|Wrap|Line Numbers
  1. public class VoiceRecorder
  2.     {
  3.         #region API prototypes
  4.         [DllImport("voicectl.dll", EntryPoint = "VoiceRecorder_Create")]
  5.         private unsafe static extern IntPtr VoiceRecorder_Create(CM_VOICE_RECORDER* voicerec);
  6.  
  7.         [DllImport("coredll.dll", EntryPoint = "GetForegroundWindow")]
  8.         private unsafe static extern IntPtr GetForegroundWindow();
  9.         #endregion
  10.  
  11.         [StructLayout(LayoutKind.Sequential)]
  12.         public unsafe struct CM_VOICE_RECORDER
  13.         {
  14.             public int cb;
  15.             public wndStyle dwStyle;
  16.             public int xPos;
  17.             public int yPos;
  18.             public IntPtr hwndParent;
  19.             public int id;
  20.             public char* lpszRecordFileName;
  21.         }
  22.  
  23.         public enum wndStyle : uint
  24.         {
  25.             VRS_NO_OKCANCEL = 0x0001, // No OK/CANCLE displayed
  26.             VRS_NO_NOTIFY = 0x0002, // No parent Notifcation
  27.             VRS_MODAL = 0x0004, // Control is Modal    
  28.             VRS_NO_OK = 0x0008, // No OK displayed
  29.             VRS_NO_RECORD = 0x0010, // No RECORD button displayed
  30.             VRS_PLAY_MODE = 0x0020, // Immediately play supplied file when launched
  31.             VRS_NO_MOVE = 0x0040, // Grip is removed and cannot be moved around by the user
  32.             VRS_RECORD_MODE = 0x0080, // Immediately record when launched
  33.             VRS_STOP_DISMISS = 0x0100 // Dismiss control when stopped
  34.         }
  35.  
  36.         private unsafe CM_VOICE_RECORDER _VoiceRec;
  37.         private IntPtr _hRecorder;
  38.         private string wavFile = @"\My Documents\~VRec_0.wav";
  39.  
  40.         private IntPtr _Hwnd = (IntPtr)0;
  41.  
  42.         public IntPtr Hwnd
  43.         {
  44.             get { return _Hwnd; }
  45.             set
  46.             {
  47.                 _VoiceRec.hwndParent = value;
  48.                 _Hwnd = value;
  49.             }
  50.         }
  51.  
  52.         public unsafe VoiceRecorder()
  53.         {
  54.             _hRecorder = new IntPtr();
  55.             char[] temp = new char[32];
  56.  
  57.             this.Hwnd = GetForegroundWindow();
  58.  
  59.             // Populate temp with the file path of the WAV file            
  60.             Buffer.BlockCopy(wavFile.ToCharArray(), 0, temp, 0, 2 * wavFile.Length);
  61.  
  62.             fixed (char* lpszFileName = temp)
  63.             {
  64.                 _VoiceRec = new CM_VOICE_RECORDER();
  65.  
  66.                 _VoiceRec.hwndParent = _Hwnd;
  67.                 _VoiceRec.dwStyle = wndStyle.VRS_NO_MOVE | wndStyle.VRS_MODAL;
  68.                 _VoiceRec.cb = (int)Marshal.SizeOf(_VoiceRec);
  69.                 _VoiceRec.xPos = -1;
  70.                 _VoiceRec.yPos = -1;
  71.                 _VoiceRec.lpszRecordFileName = lpszFileName;
  72.             }
  73.         }
  74.  
  75.         // Show the voice recorder
  76.         public unsafe void Show()
  77.         {
  78.             fixed (CM_VOICE_RECORDER* _VoiceRecPtr = &_VoiceRec)
  79.             {
  80.                 _hRecorder = VoiceRecorder_Create(_VoiceRecPtr);
  81.             }
  82.         }
  83.     }
  84. }
  85.  
which is for creating a voice/audio recorder on a WM5 PDA. I have included the code into my project in a VoiceRecorder.cs class, and have invoked it from the main code (i.e. VoiceRecorder vr = new VoiceRecorder(); vr.show() ) and the voice recorder app appears on screen, and beeps when I hit record, but there doesnt seem to be any file being created, nor is there any functions for playback. I was wondering if anyone could help me out here, as I really want to include this in my application. If anyone has any other ideas on a good way to include a voice recording feature from c# code I would greatly appreciate it!

Cheers folks,

Mark
Oct 2 '07 #1
3 3895
RedSon
5,000 Expert 4TB
Who wrote voicectl.dll? And do you have access to the source code for it?
Oct 3 '07 #2
markmcgookin
648 Expert 512MB
Who wrote voicectl.dll? And do you have access to the source code for it?
It's a standard component within Windows Mobile 5 (NB I think i hit the wrong button earlier and reported this post and not replying! Sorry!)
Oct 16 '07 #3
Banfa
9,064 Expert Mod 8TB
Given these 2 lines

Expand|Select|Wrap|Line Numbers
  1.         private string wavFile = @"\My Documents\~VRec_0.wav";
  2.  
Expand|Select|Wrap|Line Numbers
  1.             char[] temp = new char[32];
  2.  
I can't help feeling that you have a file path/name error. I know nothing of cs but if the @ in the first statement equates to a balnk string then the path to the file is obviously invalid.

On the other hand assuming that the @ in the first statement equates to the current users directory (making the path valid) then the length of the wavFile is going to be rather longer than the 32 characters assigned to temp;

Either way you seem to have an error around you file path/name.
Oct 16 '07 #4

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

2 posts views Thread by Dfenestr8 | last post: by
1 post views Thread by fuliopen | last post: by
2 posts views Thread by arkam | last post: by
reply views Thread by Emma Gumbdough | last post: by
1 post views Thread by Jonathon | last post: by
reply views Thread by wwzaygvm | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
reply views Thread by suresh191 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.