来电手机铃声捕获方法
来源:互联网 发布:360极速浏览器9优化版 编辑:程序博客网 时间:2024/06/10 12:22
目前,在WM上进行手机来电铃声捕获的方法有两种,一种是TAPI,一种就是使用ril库,TAPI实施性不好,在来电铃声响一下才捕获到来电,用ril库可以在来电铃声响起来之前捕获到铃声,经过本人测试使用ril库时
在回调函数中
RIL_NOTIFY_CALLERID
RIL_NOTIFY_RING
这两个消息中可以在铃声响起之前获得消息, 甚至可以修改注册表达到修改来电铃声的目的,
下面附上部分代码:
LRESULT lresult;
result = RIL_Initialize(1, ResultCallback, NotifyCallback,
dwNotificationClasses, g_dwParam, &g_hRil);
void CALLBACK NotifyCallback(DWORD dwCode, const void *lpData,
DWORD cbData, DWORD dwParam)
{
TCHAR szString[256];
wsprintf(szString, L"notify: dwCode=0x%0X lpData=%p, cbData=%d",dwCode, lpData, cbData);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
switch(dwCode)
{
case RIL_NOTIFY_RING: //receive an inbound voice call
{
static int i = 0;
LPRILRINGINFO ringInfo = (LPRILRINGINFO) lpData;
if(! bPlay)
{
WriteReg();
bPlay = TRUE;
}
break;
}
case RIL_NOTIFY_DISCONNECT:
{
WavePlay.Stop();
bPlay = FALSE;
break;
}
case RIL_NOTIFY_CONNECT: // To make an outbound voice call
{
LPRILCONNECTINFO connectInfo = (LPRILCONNECTINFO)lpData;
//RIL_GetCallList( g_hRil );
break;
}
case RIL_NOTIFY_CALLERID: //receive an inbound voice call
{
RILREMOTEPARTYINFO *rpi = (RILREMOTEPARTYINFO *)lpData;
NKDbgPrintfW(TEXT("Number: %s/n"), rpi->raAddress.wszAddress );//来电号码
if(! bPlay)
{
WriteReg();
bPlay = TRUE;
}
//m_Str_DisplayDialNum=m_Str_DisplayDialNum+_T(rpi->raAddress.wszAddress);
break;
}
default:
break;
}
void WriteReg(void)
{
LRESULT lr;
HRESULT hr = E_FAIL;
HKEY hKey = NULL;
DWORD dwDisposition;
TCHAR wszValue[10] = L"apw3r";
TCHAR wszDerectary[40] = L"//My Documents//kkk.3gp";
//TCHAR wszDerectary[40] = L"//Windows//Rings//Ring-Saffron.wma";
lr = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("//ControlPanel//Sounds//RingTone0"),
0, NULL, 0, 0, NULL,
&hKey, &dwDisposition);
if (lr != ERROR_SUCCESS)
RegCloseKey(hKey);
lr = RegSetValueEx(hKey, L"Sound", 0, REG_SZ, (LPBYTE) wszDerectary, (lstrlen(wszDerectary) + 1) * sizeof(TCHAR));
if (lr != ERROR_SUCCESS)
RegCloseKey(hKey);
lr = RegSetValueEx(hKey, L"SavedSound", 0, REG_SZ, (LPBYTE) wszDerectary, (lstrlen(wszDerectary) + 1) * sizeof(TCHAR));
if (lr != ERROR_SUCCESS)
RegCloseKey(hKey);
lr = RegSetValueEx(hKey, L"Script", 0, REG_SZ, (LPBYTE) wszValue, (lstrlen(wszValue) + 1) * sizeof(TCHAR));
if (lr != ERROR_SUCCESS)
RegCloseKey(hKey);
RegCloseKey(hKey);
hKey = NULL;
}
- 来电手机铃声捕获方法
- mt6735 “提示音和通知”中试听手机铃声时来电,来电铃声和预览铃声声音重叠
- Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声
- Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声
- Android来电铃声默认设置的实现方法与怎么设置语音来电的默认铃声
- Android来电铃声默认设置的实现方法与怎么设置语音来电的默认铃声
- 将迷你音箱用作手机来电铃声放大器
- V3铃声设置,V3铃声设置方法,V3设置来电铃声
- 实现手机来电铃声,通知铃声、警告铃声等音频定制化功能(一,添加扫描分区myimage)
- 实现手机来电铃声,通知铃声、警告铃声等音频定制化功能(三,多媒体扫描结果定制处理)
- Android 来电(包括铃声),短信拦截的实现方法
- Android 来电(包括铃声),短信拦截的实现方法
- android 播放来电铃声
- android 设置来电铃声
- Android来电铃声设置
- Linux手机DIY.Shell应用扩展一.随机来电铃声(E680系列)
- Linux手机DIY.Shell应用扩展一 随机来电铃声(E680系列)
- ym——Android从零开始(28)(来电铃声的设置、手机闹钟、手势识别)(新)
- 计算机安全方面的顶级会议
- linux常用命令
- 狼群中等级制度 - 看完探索栏目我与狼群有感
- 毕业了,总结一次
- NOKAI测试证书申请
- 来电手机铃声捕获方法
- cisco 交换机出现环路的处理方法
- 硬盘 主分区 和 逻辑分区 区别
- 面试题(一)
- rhce之路--linux的文件系统
- tomcat 服务整合到系统服务
- 思考mysql内核之初级系列2---我可以为你服务什么?
- 静态全局变量
- factory.setNamespaceAware(true) 使用需要謹慎