[CF.Skills]播放嵌入资源的声音文件

本文介绍如何在WindowsMobile平台上播放嵌入资源的声音文件。利用反射及P/invoke技术,通过具体的代码示例展示了如何从程序集中加载音频并进行播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[CF.Skills]播放嵌入资源的声音文件

摘要:本文阐述了在Windows Mobile中如何播放潜入资源的声音文件
Keywords
PlaySound, Windows Mobile, Embedded Resources, p/invoke

要在Windows Mobile上播放嵌入资源(Embedded Resource)的声音文件,该怎么办呢?显然是要用到反射的,我查了一下MSDN,还好GetManifestResourceStream对移动设备是可用的。

首先我们需要一个类,通过P/invoke来帮助我们实现播放声音的功能:

   [Flags]
    
enum  SoundFlags
    
{
        Alias 
= 0x00010000,
        Filename 
= 0x00020000,
        Synchronous 
= 0x00000000,
        Asynchronous 
= 0x00000001,
        Memory 
= 0x00000004,
        Loop 
= 0x00000008,
        NoStop 
= 0x00000010
    }


    
class  PlayNativeRef
    
{
        [DllImport(
"CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)]
        
public extern static int PlaySound(byte[] szSound, IntPtr hMod, SoundFlags flags);
    }

调用的时候,我们先要将该声音资源从程序集加载到内存中:

 MemoryStream ms  = (MemoryStream) Assembly.GetExecutingAssembly().GetManifestResourceStream( " PlayEmbeddedAudio.Resources.yuyinlangdu.wav " );

Tips这里的资源名字,一定不要弄错,如果你不确信的话,可以通过GetManifestResourceNames方法来查看资源的名称。

然后,我们就可以调用PlaySound方法来播放了:

                PlayNativeRef.PlaySound(
                     ms.GetBuffer(),
                     IntPtr.Zero,
                     SoundFlags.Synchronous 
|  SoundFlags.Memory);   


注意这里的SoundFlag要记得把Memory加上,表示第一个参数是指向内存中的声音文件镜像。播放的时候从内存中加载资源。

不过有一点要注意的,嵌入的声音文件不宜太多,否则会让程序集变得很庞大。

代码在这里下载

Enjoy it!

黄季冬<fox23>

2008/5/18

基于知识图谱的大学生职位推荐系统 程序设计说明书 目录 系统概述 系统架构设计 功能模块设计 数据库设计 推荐算法设计 接口设计 技术实现 前端交互设计 1. 系统概述 本系统是一个面向大学生的职位推荐平台,结合协同过滤算法与知识图谱技术,提供以下核心功能: 职位管理:支持职位发布、查询、修改、删除及分类管理。 用户管理:支持管理员、HR、求职者三类角色的注册、登录与权限控制。 智能推荐:基于用户行为数据和知识图谱的职位推荐。 个人中心:用户可管理教育经历、技能证书、求职意向等信息。 交互功能:职位收藏、投递、面试邀请管理。 2. 系统架构设计 2.1 技术架构 前端:Vue.js + Element UI 后端:Spring Boot + MyBatis + PageHelper 数据库: 关系型数据库(MySQL):存储用户、职位、投递记录等结构化数据。 图数据库(Neo4j):存储职位与技能、教育、位置等实体间的关系。 推荐算法:协同过滤(用户行为) + 知识图谱(语义关系)。 2.2 系统分层 控制层(Controller):处理HTTP请求,调用服务层接口。 服务层(Service):实现业务逻辑,调用数据访问层。 数据访问层(Mapper):通过MyBatis操作数据库。 工具层(Utils):提供算法、验证码、文件上传等工具类。 3. 功能模块设计 3.1 用户管理模块 功能: 角色区分:管理员、HR、求职者。 登录/注册:支持验证码校验(CaptureController)。 Token认证:通过JWT实现权限控制(TokenUtils)。 3.2 职位管理模块 功能: 职位CRUD:通过PositionsController实现。 分类查询:按行业、工作性质、地点等筛选(TypeController、NatureController)。 知识图谱关联:通过FishRepository建立职位与技能、教育等关系。 3.3 推荐算法模块 输入:用户行为数据(收藏、投递)、职位相似度矩阵。 算法流程: 计算职位相似度(余弦相似度 + 欧几里得距离)。 融合知识图谱与用户行为数据(Utils.fuseSimilarityMatrices)。 生成Top-N推荐列表(JobRecommendation.generateRecommendations)。 3.4 交互功能模块 收藏管理:用户可收藏/取消收藏职位(CollectController)。 投递记录:查看投递状态(SubmissionController)。 面试邀请:HR发送邀请,求职者接受/拒绝(InvitationController)。 4. 数据库设计 4.1 核心表结构 表名 字段示例 positions id, name, salary, education job_seeker id, username, avatar submission job_id, seeker_id, status collect job_id, seeker_id 4.2 知识图谱设计(Neo4j) 实体:职位(Position)、技能(Skill)、教育(Education)、地点(Location)。 关系: (Position)-[:REQUIRES]->(Skill) (Position)-[:LOCATED]->(Location) (Position)-[:BELONGS]->(Industry) 5. 推荐算法设计 5.1 算法流程 数据准备: 用户行为数据:收藏、投递记录(RelateDTO)。 职位特征向量:从知识图谱中提取(技能、教育等)。 相似度计算: 用户行为相似度(协同过滤)。 知识图谱语义相似度(图嵌入)。 融合评分: java 复制 double[][] fusedSimilarity = Utils.fuseSimilarityMatrices(simKnowledgeGraph, simUserBehavior, alpha); 生成推荐:按预测评分排序,返回Top-N结果。 添加测试与总结部分
03-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值