检测在mobile智能手机是否插入了耳机

sxlufo 2009-06-07 05:23:21
检测在mobile智能手机是否插入了耳机,就是说插入耳机和不插耳机有啥区分标志。
在http://www.microsoft.com/china/MSDN/library/Mobility/pocketpc/dnppcgenwhatsnewwm5.mspx?mfr=true
这里有说明,可以不知咋用!

...全文
311 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihao38 2009-06-08
  • 打赏
  • 举报
回复
插入手机,拔出手机,注册表键值相应变化(1表示耳机插上状态,0表示没插),你只要监控这个键值就可以知道是否插耳机了,

直接用RegistryNotifyCallback就行了

HKEY_LOCAL_MACHINE\System\State\Hardware
"Headset"


有的手机不支持,请验证
cytlyy 2009-06-08
  • 打赏
  • 举报
回复
不同的手机可能不同,有些手机在[HKEY_LOCAL_MACHINE\System\State\Hardware]
这个键值下的dword类型的Headset变量来表示是否插入耳机了。
世外涛缘 2009-06-08
  • 打赏
  • 举报
回复
在SDK中有例子:\PocketPC\CPP\win32\battstat
它示范了如何使用RegistryGetDWORD, RegistryNotifyWindow, RegistryNotifyCallback, RegistryNotifyApp。
在结合hhygcy的回复,相信楼主能搞定。
nihao38 2009-06-08
  • 打赏
  • 举报
回复
手机有支持的话,在注册表中会有记录的

HKEY_LOCAL_MACHINE\System\State\Hardware
"Headset" = DWORD:0
"Car Kit" = DWORD:0
"Speaker" = DWORD:0
ppc_2008 2009-06-08
  • 打赏
  • 举报
回复
不了解,帮顶一下
MS_Frank 2009-06-08
  • 打赏
  • 举报
回复
这个我也想知道 !
hhygcy 2009-06-08
  • 打赏
  • 举报
回复
msdn有个函数的例子:

HRESULT RegistryNotifyAppExample()
{

NOTIFICATIONCONDITION nc;
HRESULT hr = S_OK;

// The notification name must be unique across the mobile device.
// It is considered good practice to prefix this name with the name of your application.
TCHAR szNotificationName[] = TEXT("myAppCradled");
TCHAR szAppName[] = TEXT("myApp.exe param1 param2");

// Receive notifications whenever the mobile device is cradled.
nc.ctComparisonType = REG_CT_EQUAL;
nc.TargetValue.dw = 1;

// Since you are not masking, dwMask must be non-zero for dwords.
nc.dwMask = 0xFFFFFFFF;

// The application is launched from the command line with: myApp.exe param1 param2 /notify "myAppCradled".
hr = RegistryNotifyApp(SN_CRADLEPRESENT_ROOT,
SN_CRADLEPRESENT_PATH,
SN_CRADLEPRESENT_VALUE,
szNotificationName,
szAppName,
NULL,
NULL,
0,
0,
&nc);

// When you are done, call RegistryStopNotification to remove the notification.
// hr = RegistryStopNotification(szNotificationName);

return hr;

}
这里的SN_CRADLEPRESENT_ROOT, path, value这些参数估计都要改掉
在snapi.h里面有这个定义
////////////////////////////////////////////////////////////////////////////////
// HeadsetPresent
// Gets a value indicating whether a headset is present
#define SN_HEADSETPRESENT_ROOT HKEY_LOCAL_MACHINE
#define SN_HEADSETPRESENT_PATH TEXT("System\\State\\Hardware")
#define SN_HEADSETPRESENT_VALUE TEXT("Headset")

你试试看行不行

xmanlin 2009-06-08
  • 打赏
  • 举报
回复
监视注册表.
大饼哥- 2009-06-08
  • 打赏
  • 举报
回复
关注。。。不懂帮顶。。。
发现心流 2009-06-07
  • 打赏
  • 举报
回复
底层有消息通知吧

或者应该有getStatus的接口吧
czbever 2009-06-07
  • 打赏
  • 举报
回复
这个还真不知道 之前只知道storage card插入有通知 可能会类似吧

7,657

社区成员

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

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