`
jsntghf
  • 浏览: 2479143 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

音效服务以及震动功能的实现

    博客分类:
  • iOS
阅读更多

头文件:

 

#import <UIKit/UIKit.h>
#include <AudioToolbox/AudioToolbox.h>

@interface SoundViewController : UIViewController {
	IBOutlet UISwitch *swcallback;
    IBOutlet UIPickerView *soundPicker;
    NSArray *soundData;
	SystemSoundID soundFileObject;   
}

@property (nonatomic, retain) UISwitch *swcallback;
@property (nonatomic, retain) UIPickerView *soundPicker;
@property (nonatomic, retain) NSArray *soundData;
@property (readonly) SystemSoundID soundFileObject;

static void completionCallback (SystemSoundID mySSID, void *myself);
- (IBAction) playSystemSound;
- (IBAction) playAlertSound;
- (IBAction) vibrate;
- (IBAction) StopPlaySound;
- (void) GetPlaysound;

@end

 

实现文件: 

 

#import "SoundViewController.h"

@implementation SoundViewController

@synthesize swcallback, soundPicker, soundData, soundFileObject;

-(IBAction) StopPlaySound{    
    AudioServicesRemoveSystemSoundCompletion(self.soundFileObject);
}

-(void) GetPlaysound{
    [self StopPlaySound];
	NSInteger row = [soundPicker selectedRowInComponent:0];
    NSString *soundfilename;
    switch (row) {
        case 0:
			soundfilename = @"1.wav"; 
            break;
        case 1:
			soundfilename = @"2.wav"; 
            break;
        case 2:
			soundfilename = @"3.wav"; 
            break;            
        default:
            break;
    }
    NSString *Path = [[NSBundle mainBundle] bundlePath];
    NSURL *soundfileURL = [NSURL fileURLWithPath:[Path stringByAppendingPathComponent:soundfilename]]; 
    AudioServicesCreateSystemSoundID((CFURLRef)soundfileURL, &soundFileObject);
    if ([swcallback isOn]){
        AudioServicesAddSystemSoundCompletion(soundFileObject, NULL, NULL, completionCallback, (void *) self);    
    }    
}

static void completionCallback(SystemSoundID mySSID, void *myself){
    AudioServicesPlaySystemSound(mySSID);    
} 

- (IBAction) playSystemSound{     
	[self GetPlaysound];
	AudioServicesPlaySystemSound(self.soundFileObject);    
}

-(IBAction) playAlertSound{   
	[self GetPlaysound];
    AudioServicesPlayAlertSound(self.soundFileObject);    
}

- (IBAction) vibrate{
	AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}

- (void)viewDidLoad{
    [super viewDidLoad];
    NSArray *array = [[NSArray alloc] initWithObjects:@"音效1", @"音效2", @"音效3", nil];
    self.soundData = array;
    [array release];
}

- (void)dealloc{
    [super dealloc];
    AudioServicesDisposeSystemSoundID(self.soundFileObject);
}

#pragma mark -
#pragma mark soundPicker Data Soure 

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return [soundData count];
}

#pragma mark -
#pragma mark soundPicker Delegate 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return [soundData objectAtIndex:row];
}

@end

 

效果图:


分享到:
评论

相关推荐

    WeiChatShakeDemo:如果对于实现微信摇一摇的功能或者手机震动有兴趣的话, 可以参考看看

    WeiChatShakeDemo简介如果对于实现微信摇一摇的功能或者手机震动有兴趣的话, 可以参考看看取材自以下资源WeiChatShake 预览

    iOS仿微信摇一摇动画效果加震动音效实例

    主要介绍了iOS仿微信摇一摇动画效果加震动音效实例,详细介绍了微信摇一摇功能的实现原理,非常具有实用价值,需要的朋友可以参考下。

    Android 微信摇一摇功能实现详细介绍

    Android 微信摇一摇功能实现,最近学习传感器,就想实现摇一摇的功能,上网查了些资料,就整理下。如有错误,还请指正。 开发环境 Android Studio 2.2.1 JDK1.7 API 24 Gradle 2.2.1 相关知识点 加速度传感器 ...

    iOS实现微信摇一摇功能

    需要做一个界面,仿照微信摇一摇,获取接口进行签到功能。 首先明确以下几点: 1、需要震动。 2、需要声音。(准备好mp3音效) 二、这边直接贴代码 / Created by 石雄伟 on 16/7/29. // Copyright :copyright...

    iOS仿微信摇一摇功能

    iOS仿照微信摇一摇功能实现 一、描述 需要做一个界面,仿照微信摇一摇,获取接口进行签到功能。 首先明确以下几点: 1、需要震动。 2、需要声音。(准备好mp3音效) 二、直接贴代码 / Created by 石雄伟 on ...

    滑动解锁 SlideUnlock 1.13

    锁闭手机锁模式需要利用按键、距离感应或者双敲击解锁方式解锁,该功能模拟了系统侧滑键的功能,有震动反馈效果。静默锁不同于锁闭手机锁模式的地方时无振动反馈,该功能主要是对前两种模式的补充。以上三种模式可...

    APP inventor 打地鼠游戏开发 aia文件

    第三行是画布,实现游戏的主要功能,地鼠在草地上随机出现,打中地鼠加一分,同时出现震动反馈,没打中会出现音效提示。最后一行是开始按钮,点击按钮后开始游戏,游戏进行中按钮变为重新开始,可以随时点击按钮开始...

    Google Android SDK开发范例大全(第3版) 1/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 4/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 3/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 5/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

Global site tag (gtag.js) - Google Analytics