通话过程中如何让PPC后台播放一段声音。

wwonion 2007-12-25 04:57:21


在通话中是关闭扬声器(非听筒,是喇叭)设备的,无法播出声音,如何才能启用扬声器呢?

...全文
726 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinan_julias 2008-01-24
  • 打赏
  • 举报
回复
现在已经不是应用层的问题了,而是你音频驱动有没有把输入通道的切换功能提供出来的问题,
你先确认一下吧。
wwonion 2008-01-23
  • 打赏
  • 举报
回复
回楼上,在不使用耳机的时候也是无法播放声音的。
shuiyan 2008-01-23
  • 打赏
  • 举报
回复
插着耳机,默认就是只有耳机有声音的。

一般只有在来电的时候,才会Speaker/听筒/耳机一起响。一旦接通电话,就会用当前设备,而不会所有都开。你听不到听筒的声音很正常。
wwonion 2008-01-23
  • 打赏
  • 举报
回复
我也装了EVC4.5 就是不太会用。
yinan_julias 2008-01-23
  • 打赏
  • 举报
回复
我已经成功了,但是对你来说没有用啊。

输入通道的切换估计音频驱动没有提供。
wwonion 2008-01-23
  • 打赏
  • 举报
回复
非常的感谢啊!如果你成功后能不能把EVC的项目文件打个包发到 wwonion#163.com 里 把#换成@
yinan_julias 2008-01-23
  • 打赏
  • 举报
回复
其他还要做的是切换输入通道,因为通话时音频的输入通道是切换到GSM模块上去的,你得切换回来才能播放声音。

输入通道的切换估计音频驱动没有提供。
yinan_julias 2008-01-23
  • 打赏
  • 举报
回复
我用EVC。刚试了一下,好像做这个工作还不够,我试成功后告诉你。
wwonion 2008-01-23
  • 打赏
  • 举报
回复
请问你是用什么开发工具的?
yinan_julias 2008-01-23
  • 打赏
  • 举报
回复
只涉及到音频驱动,不需要用到额外的库。

VS 2005的我不熟,你到音频驱动里去加调试代码,在打电话时会把音频的其他流声音调小的,然后在结束通话后再恢复。

你只要在打电话过程中把这些流调大,应该就可以播放声音了
wwonion 2008-01-23
  • 打赏
  • 举报
回复
我用的是VS 2005 没有这2个头文件,请问是否要用到.lib的链接库啊??
yinan_julias 2008-01-23
  • 打赏
  • 举报
回复
我是WM6.0的系统,这两个头文件都在D:\WM604\PUBLIC\COMMON\OAK\INC里面
wwonion 2008-01-23
  • 打赏
  • 举报
回复
谢谢 yinan_julias

我无法在ppc wm5.0 mfc 项目中引用这2个头文件,这是为什啊?
#include "audiosys.h"
#include "wavedev.h"
这样也不行
#include <audiosys.h>
#include <wavedev.h>

都是提示找不到头文件。

是否还要装什么SDK ?
yinan_julias 2008-01-23
  • 打赏
  • 举报
回复
回wwonion,
'MM_WOM_SETSECONDARYGAINLIMIT' 要在audiosys.h中定义

m_hWAVDevice即音频驱动的句柄,为HANDLE型,通过CreateFile对其赋值,如
hWAVDevice = CreateFile( _T("WAV1:"), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL );

'IOCTL_WAV_MESSAGE' 在wavedev.h中定义

dwOutData为DWORD型
shuiyan 2008-01-22
  • 打赏
  • 举报
回复
如果带着耳机通话,你用扬声器给谁听呢?

应该就是用当前回放设备来播放提示音才对。
wwonion 2008-01-22
  • 打赏
  • 举报
回复

谢谢楼上的回答,请问

'MM_WOM_SETSECONDARYGAINLIMIT' 要引用什么.h文件 和什么.lib 库
'm_hWAVDevice' 是什么类型,要怎么声明
'IOCTL_WAV_MESSAGE' 要引用什么.h文件 和什么.lib 库
'dwOutData' 是什么类型,要怎么声明



yinan_julias 2008-01-22
  • 打赏
  • 举报
回复
楼主用以下语句试一下:
MMDRV_MESSAGE_PARAMS sAudioparams;
for ( i = 0; i < 3; i++ )
{
sAudioparams.uMsg = MM_WOM_SETSECONDARYGAINLIMIT;
sAudioparams.dwParam1 = i;
sAudioparams.dwParam2 = 65535;
DeviceIoControl(m_hWAVDevice, IOCTL_WAV_MESSAGE,&sAudioparams, sizeof(sAudioparams), &dwOutData,sizeof(dwOutData), NULL,NULL);
}
wwonion 2008-01-22
  • 打赏
  • 举报
回复
当前(听筒)的也放不出声音。

不知道是为什么?
shuiyan 2008-01-21
  • 打赏
  • 举报
回复
是成品手机?还是开发中的?
如果插着耳机听音乐,此时来电,Speaker会不会响?以此判断驱动是否支持“强制打开Speaker”。
waveOutMessage的返回值做一下判断,看看结果。
wwonion 2008-01-21
  • 打赏
  • 举报
回复
没有用的,你看我的代码


#define MM_WOM_FORCESPEAKER (WM_USER+2)

waveOutMessage(0,MM_WOM_FORCESPEAKER,0,0);
BOOL success = PlaySound (L"\\windows\\alarm1.wav", NULL,SND_FILENAME|SND_SYNC);
加载更多回复(8)

7,655

社区成员

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

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