張慧的博客

          張慧的博客

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            45 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks

          需求大致分為三種:
          1.震動
          2.系統音效(無需提供音頻文件)
          3.自定義音效(需提供音頻文件)
          我的工具類的封裝:

          1. //  
          2. //  WQPlaySound.h  
          3. //  WQSound  
          4. //  
          5. //  Created by 念茜 on 12-7-20.  
          6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.  
          7. //  
          8.   
          9. #import <UIKit/UIKit.h>  
          10. #import <AudioToolbox/AudioToolbox.h>  
          11.   
          12. @interface WQPlaySound : NSObject  
          13. {  
          14.     SystemSoundID soundID;  
          15. }  
          16.   
          17. /** 
          18.  *  @brief  為播放震動效果初始化 
          19.  * 
          20.  *  @return self 
          21.  */  
          22. -(id)initForPlayingVibrate;  
          23.   
          24. /** 
          25.  *  @brief  為播放系統音效初始化(無需提供音頻文件) 
          26.  * 
          27.  *  @param resourceName 系統音效名稱 
          28.  *  @param type 系統音效類型 
          29.  * 
          30.  *  @return self 
          31.  */  
          32. -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type;  
          33.   
          34. /** 
          35.  *  @brief  為播放特定的音頻文件初始化(需提供音頻文件) 
          36.  * 
          37.  *  @param filename 音頻文件名(加在工程中) 
          38.  * 
          39.  *  @return self 
          40.  */  
          41. -(id)initForPlayingSoundEffectWith:(NSString *)filename;  
          42.   
          43. /** 
          44.  *  @brief  播放音效 
          45.  */  
          46. -(void)play;  
          47.   
          48. @end  


          1. //  
          2. //  WQPlaySound.m  
          3. //  WQSound  
          4. //  
          5. //  Created by 念茜 on 12-7-20.  
          6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.  
          7. //  
          8.   
          9. #import "WQPlaySound.h"  
          10.   
          11. @implementation WQPlaySound  
          12.   
          13. -(id)initForPlayingVibrate  
          14. {  
          15.     self = [super init];  
          16.     if (self) {  
          17.         soundID = kSystemSoundID_Vibrate;  
          18.     }  
          19.     return self;      
          20. }  
          21.   
          22. -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type  
          23. {  
          24.     self = [super init];  
          25.     if (self) {  
          26.         NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:resourceName ofType:type];  
          27.         if (path) {  
          28.             SystemSoundID theSoundID;  
          29.             OSStatus error =  AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &theSoundID);  
          30.             if (error == kAudioServicesNoError) {  
          31.                 soundID = theSoundID;  
          32.             }else {  
          33.                 NSLog(@"Failed to create sound ");  
          34.             }  
          35.         }  
          36.           
          37.     }  
          38.     return self;  
          39. }  
          40.   
          41. -(id)initForPlayingSoundEffectWith:(NSString *)filename  
          42. {  
          43.     self = [super init];  
          44.     if (self) {  
          45.         NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];  
          46.         if (fileURL != nil)  
          47.         {  
          48.             SystemSoundID theSoundID;  
          49.             OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);  
          50.             if (error == kAudioServicesNoError){  
          51.                 soundID = theSoundID;  
          52.             }else {  
          53.                 NSLog(@"Failed to create sound ");  
          54.             }  
          55.         }  
          56.     }  
          57.     return self;  
          58. }  
          59.   
          60. -(void)play  
          61. {  
          62.     AudioServicesPlaySystemSound(soundID);  
          63. }  
          64.   
          65. -(void)dealloc  
          66. {   
          67.     AudioServicesDisposeSystemSoundID(soundID);  
          68. }  
          69. @end  


          調用方法步驟:
          1.加入AudioToolbox.framework到工程中
          2.調用WQPlaySound工具類

          2.1震動

          1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingVibrate];  
          2. [sound play];  

          2.2系統音效,以Tock為例

          1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingSystemSoundEffectWith:@"Tock" ofType:@"aiff"];  
          2. [sound play];  

          2.3自定義音效,將tap.aif音頻文件加入到工程

          1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingSoundEffectWith:@"tap.aif"];  
          2. [sound play];  

          tap.aif音頻文件樣例下載點擊

          posted on 2012-08-16 22:26 張慧 閱讀(7774) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鄂伦春自治旗| 镶黄旗| 东丰县| 肇庆市| 保靖县| 东台市| 龙山县| 富蕴县| 高要市| 巩义市| 类乌齐县| 徐水县| 土默特右旗| 璧山县| 安宁市| 宁陕县| 普宁市| 邛崃市| 惠安县| 吕梁市| 佛坪县| 聂拉木县| 邵阳县| 辽阳县| 台北县| 桂东县| 应用必备| 文山县| 德安县| 雅江县| 灯塔市| 宁津县| 定边县| 凉城县| 邵武市| 舞钢市| 耒阳市| 武穴市| 苍溪县| 嘉禾县| 荔浦县|