Windows Mobile 如何实现麦克风功能?

jamesony 2010-07-06 11:04:41
我想在Windows Mobile下实现麦克风功能,请问各位该如何实现?谢谢
...全文
156 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jamesony 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mayonglong 的回复:]
看看有没有相关的SDK参考~~
[/Quote]
还没有发现。。。
mayonglong 2010-07-21
  • 打赏
  • 举报
回复
看看有没有相关的SDK参考~~
jamesony 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nbcool 的回复:]
LS要看清楚哦,麦克风不是录音机,麦克风要能回放出来的。根据每部手机驱动的不同,这个功能只有特定机型才能开发成功。
[/Quote]
是在不好意思,由于一个项目的原因,很长一段时间没有上网了,实在对不起大家。我的想法来自一个无线会议系统,想增加一个比较好的功能,即:无线麦克风。我们都知道现在的windows mobile手机基本上都有Speaker功能,如果能够实现麦克风的功能的话,那就省去了会场麦克风传递的麻烦。我有两种想法:一种的直接在手机上录音再通过speaker播放,另外一种是采集声音后到计算机那边的音响播放,不过,不管如何,这无疑都有比较严重的混音。所以,迄今,不知道有没有好的解决方案。谢谢各位,期待好的方案出现。
yuhuaijun 2010-07-09
  • 打赏
  • 举报
回复
麦克风相当于line-in,放音相当于line-out, 不知道LZ想实现具体什么功能?
烂番 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 nbcool 的回复:]
手机可以接音箱的,就像接耳机一样啊。这个卡拉OK功能早就有人做过了。
[/Quote]

他娘的,谁想出来这么无聊,这么有创意的点子
让我手痒起来了,想出几个比较好玩的功能
载舟之水 2010-07-08
  • 打赏
  • 举报
回复
手机可以接音箱的,就像接耳机一样啊。这个卡拉OK功能早就有人做过了。
烂番 2010-07-08
  • 打赏
  • 举报
回复
拿个手机,一边录音,一边放音,这个比较BT吧 =—。=
就我们在争,LZ都不知道跑哪去了。。。。。
载舟之水 2010-07-07
  • 打赏
  • 举报
回复
这个比较麻烦,要改Audio驱动,同时打开录音和放音通道。还要有回声消除算法,不然放出来的声音进入mic形成回路,会产生啸叫。
载舟之水 2010-07-07
  • 打赏
  • 举报
回复
LS要看清楚哦,麦克风不是录音机,麦克风要能回放出来的。根据每部手机驱动的不同,这个功能只有特定机型才能开发成功。
烂番 2010-07-07
  • 打赏
  • 举报
回复
搞这么底层,吓到人了撒

搞简单应用,几个“waveIn”开头的函数就行了啦,示个例

void CRecorderDlg::OnRecStart()
{
//分配buffer内存
pBuffer1=(PBYTE)malloc(INP_BUFFER_SIZE);
pBuffer2=(PBYTE)malloc(INP_BUFFER_SIZE);
if (!pBuffer1 || !pBuffer2) {
if (pBuffer1) free(pBuffer1);
if (pBuffer2) free(pBuffer2);
MessageBeep(MB_ICONEXCLAMATION);
AfxMessageBox(_T("内存申请失败!"));
return ;
}

//打开波形设备并录音

waveform.wFormatTag=WAVE_FORMAT_PCM;
waveform.nChannels=1;
waveform.nSamplesPerSec=11025;
waveform.nAvgBytesPerSec=11025;
waveform.nBlockAlign=1;
waveform.wBitsPerSample=8;
waveform.cbSize=0;


if (waveInOpen(&hWaveIn,WAVE_MAPPER,&waveform,(DWORD)this->m_hWnd,NULL,CALLBACK_WINDOW)) {
free(pBuffer1);
free(pBuffer2);
MessageBeep(MB_ICONEXCLAMATION);
AfxMessageBox(_T("无法打开音频设备!"));
}
pWaveHdr1->lpData=(char*)pBuffer1;
pWaveHdr1->dwBufferLength=INP_BUFFER_SIZE;
pWaveHdr1->dwBytesRecorded=0;
pWaveHdr1->dwUser=0;
pWaveHdr1->dwFlags=0;
pWaveHdr1->dwLoops=1;
pWaveHdr1->lpNext=NULL;
pWaveHdr1->reserved=0;

waveInPrepareHeader(hWaveIn,pWaveHdr1,sizeof(WAVEHDR));

pWaveHdr2->lpData=(char*)pBuffer2;
pWaveHdr2->dwBufferLength=INP_BUFFER_SIZE;
pWaveHdr2->dwBytesRecorded=0;
pWaveHdr2->dwUser=0;
pWaveHdr2->dwFlags=0;
pWaveHdr2->dwLoops=1;
pWaveHdr2->lpNext=NULL;
pWaveHdr2->reserved=0;

waveInPrepareHeader(hWaveIn,pWaveHdr2,sizeof(WAVEHDR));

//////////////////////////////////////////////////////////////////////////
pSaveBuffer = (PBYTE)realloc (pSaveBuffer, 1) ;
//添加缓冲

waveInAddBuffer (hWaveIn, pWaveHdr1, sizeof (WAVEHDR)) ;
waveInAddBuffer (hWaveIn, pWaveHdr2, sizeof (WAVEHDR)) ;

//开始采样

bRecording = TRUE ;
bEnding = FALSE ;
dwDataLength = 0 ;
waveInStart (hWaveIn) ;
}

void CRecorderDlg::OnRecStop()
{
TRACE(_T("停止录音 \n"));
bEnding=TRUE;
Sleep(500);

waveInReset(hWaveIn);
}
yzbsd 2010-07-07
  • 打赏
  • 举报
回复
手机上的硬件应该增加回声消除了吧

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧