zoukankan      html  css  js  c++  java
  • 在MonoTouch中播放音频

    在IOS设备上,经常会碰到多媒体的播放。本文介绍音频播放。

    播放声音有两种选择:

      1.SystemSound

      2.AVAudioPlayer

    SystemSound

    如果音频时间短(30秒以内),且未压缩,SystemSound是个好选择。

    引入命名空间

    using MonoTouch.AudioToolbox;
    

    具体代码 

    SystemSound sound=null;
    

      

    var audioFile=NSUrl.FromFilename("Sound/splash.wav");
    sound= SystemSound.FromFile(audioFile);
    sound.PlaySystemSound();
    

    用SystemSound播放的一个优势是反映速度快。如果在启动画面时,想加入声音播放,用这个很合适。

    注意

    一个要注意的地方是,最好声明成类级变量。MonoTouch会自动销毁对象,如果声明为方法级变量,极有可能过程执行完了,但声音还没有播放完就忽然停止。

    AVAudioPlayer

    30秒以上的音频文件,使用AVAudioPlayer。AVAudioPlayer还可以播放压缩的音频,比如mp3。

    命名空间

    MonoTouch.AVFoundation;
    

    具体代码

    private MonoTouch.AVFoundation.AVAudioPlayer audioplayer;
    

      

                    private void playBackgroundMusic()
    		{
    			
    			stopBackgroundMusic();
    			
    			NSUrl audioFile=NSUrl.FromFilename("Sound/splash.mp3");
    			audioplayer= MonoTouch.AVFoundation.AVAudioPlayer.FromUrl(audioFile);
    			if (audioplayer!=null)
    			{
    				//audioplayer.NumberOfLoops=int.MaxValue;
    				audioplayer.Play();							
    			}
    		}
    		
    		private void stopBackgroundMusic()
    		{
    			if (audioplayer!=null)
    			{
    				audioplayer.Stop();
    				audioplayer.Dispose();
    				audioplayer=null;
    			}
    		}
    
    注意
    AVAudioPlayer第一次初始化是,需要一些时间。所以最好是在引导画面和主画面中间,启动加载这个类。
    AVAudioPlayer功能比较强大,有一些属性和方法,我会在另一篇文章中专门介绍。

    写到这还有一个要注意的地方,就是文件路径的大小写。在模拟器上运行时,大小写关系不大,但在真机上运行,大小写就有区别了。一定要注意这个。

      

    欢迎到我的网站看看
  • 相关阅读:
    ASP.NET MVC 3:缓存功能的设计问题
    Java开发和运行环境的搭建
    有关TSQL的10个好习惯
    j2me开发J2ME常用的手机厂商SDK和下载地址
    j2me开发Eclipse开发J2ME程序之Hello World
    winform需要缓存吗?webform的缓存的作用?
    学习J2ME编程需要掌握的七种技术
    下一代工作流大曝光:将支持C#表达式
    j2me 出色的开源项目
    eclipse和Myeclipse什么关系
  • 原文地址:https://www.cnblogs.com/Caiyinsoft/p/2121029.html
Copyright © 2011-2022 走看看