头文件:
#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
效果图:
分享到:
相关推荐
在iOS开发中,播放自定义音效、系统音效、背景音乐以及实现设备震动是常见的功能需求,尤其在游戏和互动应用中更为重要。本文将详细介绍如何在iOS平台上实现这些功能,以提升用户体验。 首先,播放自定义音效通常...
首先,我们需要了解的是,iOS设备中的震动功能是由内置的Taptic Engine或早期设备的Accelerometer驱动的。在编程层面,我们可以调用Core Motion框架中的API来实现这一功能。具体来说,我们需要使用`...
这包括时间选择器(DatePicker和TimePicker)、开关按钮(Switch)以及添加、删除和编辑闹钟的功能按钮。使用RecyclerView或ListView可以展示已设置的闹钟列表。 6. **数据存储**: 为了保存用户的闹钟设置,通常...
在本示例中,"html5为网页按钮增加触发式音效.rar" 文件展示了一个使用HTML5来实现网页按钮点击时播放音频的效果。这个功能对于增强用户交互性、提升用户体验具有重要作用,尤其是在游戏、教育或者任何需要反馈提示...
在Android中,手机的震动功能可以通过`Vibrator`类来控制。首先,你需要获取到系统的Vibrator服务,通过`Context.getSystemService(Context.VIBRATOR_SERVICE)`。然后,可以调用`vibrate(long[] pattern, int ...
首先,我们需要了解iOS设备的震动功能是通过`UIEvent`类中的`motion`事件来触发的。`UIEventSubtype`枚举定义了不同的运动类型,包括`UIEventSubtypeMotionShake`,表示设备被摇晃。我们可以监听这些事件,当检测到...
本文将深入探讨如何在应用程序中实现系统音效和自定义音效,特别关注Objective-C语言的实现方式。 首先,我们需要引入必要的框架,即AudioToolbox框架,它包含了播放各种音效所需的功能。在你的类中,通过`#import ...
在iOS开发中,实现类似微信的...通过以上步骤,你可以实现一个基本的仿微信摇一摇功能,包括摇动检测、震动和音效播放以及动画效果。这个功能可以应用于各种场景,比如游戏、抽奖、签到等,为用户带来新颖的交互体验。
本篇文章将深入探讨如何在Objective-C环境下简单实现音效和音乐播放功能,主要涉及的技术框架为AVFoundation.framework。 首先,我们要区分音效与音乐的差异。音效,也称为“短音频”,通常持续1到2秒,用于点缀...
在Android平台上,微信摇一摇功能的实现是一个有趣且实用的特性,它通过结合硬件传感器、动画效果和声音反馈来模拟真实的物理交互。下面我们将详细探讨实现这一功能所需的关键知识点。 1. **加速度传感器...
本文将详细探讨Taptic Engine以及iOS中的UIFeedbackGenerator,这两种技术如何为用户带来更加真实的触觉体验。 首先,Taptic Engine是苹果公司在其硬件设备上引入的一种创新性震动模块。它首次在Apple Watch中亮相...
在Android中,我们可以使用`Vibrator`类来实现设备的震动功能。例如,通过调用`vibrator.vibrate(long milliseconds)`方法,传入一个毫秒值来控制震动的持续时间。在创建通知时,将`Vibrator`实例化并设置震动模式,...
震动功能可以通过`setVibrate()`方法实现。传递一个long类型的数组,数组元素表示震动的模式(毫秒为单位): ```java long[] vibratePattern = {0, 100, 200, 300}; builder.setVibrate(vibratePattern); ``` ...
本文将围绕“android俄罗斯方块”这一主题,深入探讨其设计与实现,包括游戏逻辑、界面设计、特殊功能以及用户体验优化等方面。 1. **游戏逻辑** 俄罗斯方块的核心是其游戏逻辑,它基于7种基础形状(T、S、Z、I、O...
要实现震动功能,需要使用 AudioToolbox 框架中的 AudioServicesPlaySystemSound 函数。该函数可以播放系统声音,包括震动。下面是相关代码: ``` #import #pragma mark 点击 - (void)touchesBegan:(nonnull ...
本篇将深入探讨如何在Android平台上实现类似的功能,包括动画效果、震动反馈以及音乐播放。 一、动画效果 "摇一摇"的核心之一就是动画效果。在Android中,我们可以利用`Animation`类或者`Animator`类来创建动画。...
1. **声明权限**:在`AndroidManifest.xml`中添加`<uses-permission android:name="android.permission.VIBRATE" />`,以允许应用使用震动功能。 2. **获取震动服务**:通过`Context.getSystemService(Context....
在Windows Presentation Foundation (WPF)中,倒计时和振动效果是两个常见但不那么基础的功能,它们可以增强用户界面的交互性和体验感。本文将深入探讨如何在WPF应用中实现这两个特性。 首先,让我们从倒计时功能...