当前位置: 首页 > news >正文

wordpress安装幻灯片网站seo推广方案

wordpress安装幻灯片,网站seo推广方案,中文网站开发,旅游网站建设哪家好今天说的内容有点流氓,请诸君在开发应用时谨慎使用。 那么,这活儿到底有多流氓呢? 先介绍一下要实现的功能:当用户按电源键(也可以是双击屏幕)点亮手机的屏幕时播放一下短音乐,而且应用程序可以不在前台运…

今天说的内容有点流氓,请诸君在开发应用时谨慎使用。

那么,这活儿到底有多流氓呢?

先介绍一下要实现的功能:当用户按电源键(也可以是双击屏幕)点亮手机的屏幕时播放一下短音乐,而且应用程序可以不在前台运行的时候播放

有朋友脑海里也许马上浮现出两个词:后台音频,后台任务

是的,灰常正确,能在应用程序不在前台运行或者不运行时播放声音,只有用后台音频了。好,原理就是这样,我相信没有什么难理解的吧。下面就是如何达到这一目的。

在8.1中播放后台音频可以用Windows.Media.Playback命名空间下的BackgroundMediaPlayer类,该类专门用于在前台和后台之间操作音频播放,无论是前台还是后台都能用它。通过静态的Current属性可以返回一个MediaPlayer实例,这个类用起来和XAML中的MediaElement比较像,但MediaPlayer是专用来播放声音的,不能看片子的。

因此我们会想到,第一步是为MediaPlayer设置源,有以下三种方法可以设置播放源。

1、SetFileSource方法,直接把一个音乐文件的StorageFile实例传进去即可;

2、SetStreamSource方法,以流的形式传递;

3、SetUriSource方法,直接以URI来设置源。

当然,还有一个SetMediaSource方法,这玩意比较复杂,暂时不考虑。

 

如果把MediaPlayer的AutoPlay设置为True,当源被设置后就后马上播放;如果为False,那就需要调用Play方法它才会播放。

 

现在,我们要考虑最“头疼”的问题了,如何在手机屏幕点亮时就运行后台任务呢? 不要急,来,慢慢看。

Windows.ApplicationModel.Background命名空间下定义了许多后台任务触发器,用于触发后台任务的,其中有一个触发器类,专门用来捕捉系统事件的——SystemTrigger,在创建SystemTrigger实例时,需要指定SystemTriggerType,表示触发行为类型,由SystemTriggerType枚举定义。我们看看其中两个值:

UserPresent:在用户可见时触发后台,啥意思呢? 在平板或电脑上,是当用户登录系统时触发;而在手机上,是当用户按下电源键点亮手机屏幕时触发。哈哈,现在你明白如何在点亮屏幕时播放声音的方法了吧?

UserAway:在电脑或平板上当用户注销时触发;在手机上,当用户关闭屏幕时触发,所以如果想让声音在锁屏时播放,可以使用这类型。

 

现在,大家肯定明白思路了。就是结合后台音频和触发器来实现。但是,千万千万严重地记住,在点亮屏幕时播放的声音不要太长,你别来一首歌,那样会很恶心很流氓,而且系统也不会让你播放那么长的,所以,做人不能太流氓。所以,建议就用5秒钟左右的声音比较合理。

 

好,还愣着干什么,开工!

首先在解决方案中添加一个运行时组件项目,注意,不是类库,是运行时组件,编译后生成.wimd后缀的文件的,不是.dll,类库才是.dll。

这个运行时组件就是要执行的后台任务,定义一个类,并且实现IBackgroundTask接口,要实现了这个接口,系统才认你是后任务,否则系统不鸟你。

    public sealed class Back:IBackgroundTask{BackgroundTaskDeferral deferral = null;public async void Run ( IBackgroundTaskInstance taskInstance ){deferral = taskInstance.GetDeferral();Uri media = new Uri("ms-appx:///1.mp3");// 打开文件流StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(media);var stream = await file.OpenReadAsync();// 获取播放器控制对象MediaPlayer player = BackgroundMediaPlayer.Current;player.AutoPlay = true; //设置自动播放player.MediaEnded += player_MediaEnded;player.MediaFailed += player_MediaFailed;// 设置源后自动播放
            player.SetStreamSource(stream);}void player_MediaFailed ( MediaPlayer sender, MediaPlayerFailedEventArgs args ){BackgroundMediaPlayer.Shutdown();deferral.Complete();}void player_MediaEnded ( MediaPlayer sender, object args ){BackgroundMediaPlayer.Shutdown();deferral.Complete();}}

代码不是很长,应该能理解,就是从BackgroundMediaPlayer.Current中拿到player,得到player后就给它setSource,set完source后就开始播放声音了。
那么,GetDeferral方法返回的BackgroundTaskDeferral对象有什么用呢? 说白了,就是用来拖延时间的,别让后台任务这么快结束,等声音播放完再结束,听完仙乐后再死也不迟。当你觉得差不多了,要结束后台任务了,就调用Complete方法来告诉系统,这个后台任务完蛋了,该入土为安了,于是系统就会X掉后台并回收资源。

 

Good,后台任务写好了,再弄前台,

首先要在前台应用程序中引用刚才写的运行时组件,就个和引用程序集一样,就是在“引用”上右击,然后“添加引用”,相信你会操作,不然你就不是学.net的。

然后打开清单文件Package.appxmanifest,切换到“声明”选项卡,在下拉列表中选择“后台任务”,然后点击添加按钮,好,后台声明加了。然后要设置一下参数。

在支持的任务类型下勾选“音频”,注意只选音频就可以了,不要选其他,否则无法运行程序。如下图。

接着,在入口点处填上刚才运行时组件中写的那个实现IBackgroundTask接口的类名,注意连命名空间名字也填上,如下图。

 

好了,保存并关闭清单文件,但是,后台任务还没注册,声明只是告诉系统允许哪些后台任务而已,并没有真正注册。

可以在页面的OnNavigated方法中注册,也可以在App的OnLaunch方法中注册,随你喜欢,反正要在后台任务运行前进行注册。

            foreach (IBackgroundTaskRegistration task in BackgroundTaskRegistration.AllTasks.Values){if (task.Name == TASKNAME){task.Unregister(true);break;}}// 必须调用以下代码,否则不能注册后台任务var result = await BackgroundExecutionManager.RequestAccessAsync();if (result == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity){BackgroundTaskBuilder taskbd = new BackgroundTaskBuilder();taskbd.Name = TASKNAME;taskbd.TaskEntryPoint = ENTRY_POINT; //入口点// 添加触发器SystemTrigger trigger = new SystemTrigger(SystemTriggerType.UserPresent, false);/** 当用户点亮手机屏幕时就会触发*/taskbd.SetTrigger(trigger);// 注册后台任务try{var reg = taskbd.Register();tb.Text = "后台任务注册成功。\n" + string.Format("任务名:{0}\n", reg.Name) + string.Format("任务ID:{0}", reg.TaskId);}catch{tb.Text = "后台任务注册失败。";}}

先从BackgroundTaskRegistration.AllTasks.Values中找一下任务是不是已经注册了,如果是,先干掉它,再重新注册。

因为要在用户点亮手机屏幕时播放声音,所以,SystemTrigger触发器使用的类型为UserPresent。

还有一个严重关键的地方,在注册后台任务前,不要忘了调用BackgroundExecutionManager.RequestAccessAsync方法,虽然调用后没看到提示,但必须调用了该方法并返回BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity后才能注册后台任务,否则会出错。

 

好了,就这样就行了,运行应用程序,让它注册后台任务,然后可以关掉程序。接着关闭掉手机屏幕,然后再点亮屏幕,这时候就能听到仙乐了。

示例源代码下载:http://files.cnblogs.com/tcjiaan/playAudioOnPresentSP.zip

 

转载于:https://www.cnblogs.com/tcjiaan/p/3998723.html

http://www.lbrq.cn/news/2589445.html

相关文章:

  • 国外服务器多少钱一个月windows优化大师好用吗
  • 中国十大做网站公司优化seo教程技术
  • 淄博网站建设公司哪家好南京百度推广
  • 广州 网站建设 制作雅虎日本新闻
  • 网站建设技术服务计入什么科目国内it培训机构排名
  • 全网网站建设维护上google必须翻墙吗
  • 做石油期货看什么网站seo搜索引擎优化入门
  • 企业网站建设的核心seo公司系统
  • 网站备案信息下载2024最火的十大新闻有哪些
  • 碗网站怎么快速优化网站
  • 益阳市人民政府门户网站一个平台怎么推广
  • 广州微信网站建设公司怎么优化关键词排名优化
  • 自己建私人网站做外贸不好做seo 排名 优化
  • 深圳安鸿源建设网站北京seo专业团队
  • 如何做2级网站站长工具app
  • app需要建网站吗信息服务平台有哪些
  • 自己怎样建设网站百度云网盘
  • 小吃加盟网站大全seo实战技巧100例
  • 湖南做网站 要上磐石网络百度指数的基本功能
  • 东莞模板网站好优化大师电脑版官网
  • wordpress手机底部菜单网站seo设置是什么意思
  • 唐山网站制作专业网址搜索引擎入口
  • 网站建设中网页代码怎么利用互联网推广
  • 怎样在网站上做办公家具安卓优化大师旧版本
  • 新办公司网上核名在哪个网站做天津百度分公司
  • 建设书法网站的主题是seo常用的优化工具
  • 上海私人做网站南昌seo报价
  • 廊坊网站建设-纵横网络 网站做网络推广怎么收费
  • 餐饮类网站建设达到的作用seo单页面优化
  • 电商网站建设外包关键词下载
  • 深入解析 Apache Tomcat 配置文件
  • Solidity智能合约开发全攻略
  • Java ++i 与 i++ 底层原理
  • 介绍JAVA语言、介绍greenfoot 工具
  • 基于springboot的在线考试系统/考试信息管理平台
  • 【vue】computed计算属性