头文件:
#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简介如果对于实现微信摇一摇的功能或者手机震动有兴趣的话, 可以参考看看取材自以下资源WeiChatShake 预览
主要介绍了iOS仿微信摇一摇动画效果加震动音效实例,详细介绍了微信摇一摇功能的实现原理,非常具有实用价值,需要的朋友可以参考下。
Android 微信摇一摇功能实现,最近学习传感器,就想实现摇一摇的功能,上网查了些资料,就整理下。如有错误,还请指正。 开发环境 Android Studio 2.2.1 JDK1.7 API 24 Gradle 2.2.1 相关知识点 加速度传感器 ...
需要做一个界面,仿照微信摇一摇,获取接口进行签到功能。 首先明确以下几点: 1、需要震动。 2、需要声音。(准备好mp3音效) 二、这边直接贴代码 / Created by 石雄伟 on 16/7/29. // Copyright :copyright...
iOS仿照微信摇一摇功能实现 一、描述 需要做一个界面,仿照微信摇一摇,获取接口进行签到功能。 首先明确以下几点: 1、需要震动。 2、需要声音。(准备好mp3音效) 二、直接贴代码 / Created by 石雄伟 on ...
锁闭手机锁模式需要利用按键、距离感应或者双敲击解锁方式解锁,该功能模拟了系统侧滑键的功能,有震动反馈效果。静默锁不同于锁闭手机锁模式的地方时无振动反馈,该功能主要是对前两种模式的补充。以上三种模式可...
第三行是画布,实现游戏的主要功能,地鼠在草地上随机出现,打中地鼠加一分,同时出现震动反馈,没打中会出现音效提示。最后一行是开始按钮,点击按钮后开始游戏,游戏进行中按钮变为重新开始,可以随时点击按钮开始...
完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...
完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...
完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...
完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...