你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 實例解析iOS開辟中體系音效和自界說音效的運用

實例解析iOS開辟中體系音效和自界說音效的運用

編輯:IOS開發綜合

1、拜訪聲響辦事

添加框架AudioToolBox和要播放的聲響文件,別的還須要在完成聲響辦事的類中導入該框架的接口文件:
#import <AudioToolbox/AudioToolbox.h>

播放體系聲響,須要兩個函數是AudIOServicesCreateSystemSoundID和AudIOServicesPlaySystemSound,還須要聲明一個類型為SystemSoundID類型的變量,它表現要應用的聲響文件。

-(IBAction) playSysSound:(id)sender {
         
        SystemSoundID sourceID;
        //挪用NSBundle類的辦法mainBundle前往一個NSBundle對象,該對象對應於以後法式可履行二進制文件所屬的目次
        NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"soundeffect" ofType:@"wav"];
        //一個指向文件地位的CFURLRef對象和一個指向要設置的SystemSoundID變量的指針
        AudIOServicesCreateSystemSoundID((CFURLRef) [NSURL fileURLWithPath:soundFile], &soundID);
        AudioServicesPlaySystemSound(soundID); 
    }


2、提示音和震撼

1、提示音

和體系聲響的差異:

假如手機處於靜音狀況,則提示音將主動觸發震撼;

播放提示音須要的函數是AudioServicesPlayAlertSound而不是AudioServicesPlaySystemSound。

2、震撼

只須要挪用AudioServicesPlaySystemSound()辦法,傳入kSystemSoundID_Vibrate常量便可。

假如裝備不支撐震撼(如iPad 2),那末也沒緊要,只是不會震撼。

3、AVFoundation framwork

關於緊縮的Audio文件,或許跨越30秒的音頻文件,可使用AVAudioPlayer類。

1、AVAudioPlayer也須要曉得音頻文件的途徑;

2、這個類對應的AVAudioPlayerDelegate有兩個拜托辦法:

1)、audioDidFinishPlaying:successfully:當音頻播放完成以後觸發;

2)、audioPlayerEndInterruption:當法式被運用內部打斷後,從新回到運用法式的時刻觸發。

4、MediaPlayer framwork

可使用MPMoviePlayerController播放片子文件(似乎只能播放H.264、MPEG-4 Part2 video格局),還可以播放互聯網上的視頻文件。

5、挪用和自界說音效實例實例
需求年夜致分為三種:
1.震撼
2.體系音效(無需供給音頻文件)
3.自界說音效(需供給音頻文件)


我的對象類的封裝:

// 
//  WQPlaySound.h 
//  WQSound 
// 
//  Created by 念茜 on 12-7-20. 
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved. 
// 
 
#import <UIKit/UIKit.h> 
#import <AudioToolbox/AudioToolbox.h> 
 
@interface WQPlaySound : NSObject 

    SystemSoundID soundID; 

 
/**
 *  @brief  為播放震撼後果初始化
 *
 *  @return self
 */ 
-(id)initForPlayingVibrate; 
 
/**
 *  @brief  為播放體系音效初始化(無需供給音頻文件)
 *
 *  @param resourceName 體系音效稱號
 *  @param type 體系音效類型
 *
 *  @return self
 */ 
-(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type; 
 
/**
 *  @brief  為播放特定的音頻文件初始化(需供給音頻文件)
 *
 *  @param filename 音頻文件名(加在工程中)
 *
 *  @return self
 */ 
-(id)initForPlayingSoundEffectWith:(NSString *)filename; 
 
/**
 *  @brief  播放音效
 */ 
-(void)play; 
 
@end 


// 
//  WQPlaySound.m 
//  WQSound 
// 
//  Created by 念茜 on 12-7-20. 
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved. 
// 
 
#import "WQPlaySound.h" 
 
@implementation WQPlaySound 
 
-(id)initForPlayingVibrate 

    self = [super init]; 
    if (self) { 
        soundID = kSystemSoundID_Vibrate; 
    } 
    return self;     

 
-(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type 

    self = [super init]; 
    if (self) { 
        NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:resourceName ofType:type]; 
        if (path) { 
            SystemSoundID theSoundID; 
            OSStatus error =  AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &theSoundID); 
            if (error == kAudioServicesNoError) { 
                soundID = theSoundID; 
            }else { 
                NSLog(@"Failed to create sound "); 
            } 
        } 
         
    } 
    return self; 

 
-(id)initForPlayingSoundEffectWith:(NSString *)filename 

    self = [super init]; 
    if (self) { 
        NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil]; 
        if (fileURL != nil) 
        { 
            SystemSoundID theSoundID; 
            OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID); 
            if (error == kAudioServicesNoError){ 
                soundID = theSoundID; 
            }else { 
                NSLog(@"Failed to create sound "); 
            } 
        } 
    } 
    return self; 

 
-(void)play 

    AudioServicesPlaySystemSound(soundID); 

 
-(void)dealloc 
{  
    AudioServicesDisposeSystemSoundID(soundID); 

@end 

挪用辦法步調:
1.參加AudioToolbox.framework到工程中
2.挪用WQPlaySound對象類
2.1震撼

WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingVibrate]; 
[sound play]; 

2.2體系音效,以Tock為例

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

2.3自界說音效,將tap.aif音頻文件參加到工程

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

【實例解析iOS開辟中體系音效和自界說音效的運用】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved