`
jsntghf
  • 浏览: 2542868 次
  • 性别: 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

 

效果图:


分享到:
评论

相关推荐

    IOS 播放自定义音效 系统音效 背景音乐 震动

    在iOS开发中,播放自定义音效、系统音效、背景音乐以及实现设备震动是常见的功能需求,尤其在游戏和互动应用中更为重要。本文将详细介绍如何在iOS平台上实现这些功能,以提升用户体验。 首先,播放自定义音效通常...

    仿Iphone震动

    首先,我们需要了解的是,iOS设备中的震动功能是由内置的Taptic Engine或早期设备的Accelerometer驱动的。在编程层面,我们可以调用Core Motion框架中的API来实现这一功能。具体来说,我们需要使用`...

    Android实现闹钟的所有功能(Android studio)

    这包括时间选择器(DatePicker和TimePicker)、开关按钮(Switch)以及添加、删除和编辑闹钟的功能按钮。使用RecyclerView或ListView可以展示已设置的闹钟列表。 6. **数据存储**: 为了保存用户的闹钟设置,通常...

    html5为网页按钮增加触发式音效.rar

    在本示例中,"html5为网页按钮增加触发式音效.rar" 文件展示了一个使用HTML5来实现网页按钮点击时播放音频的效果。这个功能对于增强用户交互性、提升用户体验具有重要作用,尤其是在游戏、教育或者任何需要反馈提示...

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

    在Android中,手机的震动功能可以通过`Vibrator`类来控制。首先,你需要获取到系统的Vibrator服务,通过`Context.getSystemService(Context.VIBRATOR_SERVICE)`。然后,可以调用`vibrate(long[] pattern, int ...

    IOS开发实现手机震动的提示实例代码

    首先,我们需要了解iOS设备的震动功能是通过`UIEvent`类中的`motion`事件来触发的。`UIEventSubtype`枚举定义了不同的运动类型,包括`UIEventSubtypeMotionShake`,表示设备被摇晃。我们可以监听这些事件,当检测到...

    实例解析iOS开发中系统音效以及自定义音效的应用

    本文将深入探讨如何在应用程序中实现系统音效和自定义音效,特别关注Objective-C语言的实现方式。 首先,我们需要引入必要的框架,即AudioToolbox框架,它包含了播放各种音效所需的功能。在你的类中,通过`#import ...

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

    在iOS开发中,实现类似微信的...通过以上步骤,你可以实现一个基本的仿微信摇一摇功能,包括摇动检测、震动和音效播放以及动画效果。这个功能可以应用于各种场景,比如游戏、抽奖、签到等,为用户带来新颖的交互体验。

    讲解iOS开发中对音效和音乐播放的简单实现

    本篇文章将深入探讨如何在Objective-C环境下简单实现音效和音乐播放功能,主要涉及的技术框架为AVFoundation.framework。 首先,我们要区分音效与音乐的差异。音效,也称为“短音频”,通常持续1到2秒,用于点缀...

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

    在Android平台上,微信摇一摇功能的实现是一个有趣且实用的特性,它通过结合硬件传感器、动画效果和声音反馈来模拟真实的物理交互。下面我们将详细探讨实现这一功能所需的关键知识点。 1. **加速度传感器...

    iOS中震动反馈(UIFeedbackGenerator)与系统震动详解

    本文将详细探讨Taptic Engine以及iOS中的UIFeedbackGenerator,这两种技术如何为用户带来更加真实的触觉体验。 首先,Taptic Engine是苹果公司在其硬件设备上引入的一种创新性震动模块。它首次在Apple Watch中亮相...

    安卓消息推送通知栏相关-Android中的通知到来时有震动音乐盒LED的提示.zip

    在Android中,我们可以使用`Vibrator`类来实现设备的震动功能。例如,通过调用`vibrator.vibrate(long milliseconds)`方法,传入一个毫秒值来控制震动的持续时间。在创建通知时,将`Vibrator`实例化并设置震动模式,...

    Android中通知的提示音、震动和LED灯demo

    震动功能可以通过`setVibrate()`方法实现。传递一个long类型的数组,数组元素表示震动的模式(毫秒为单位): ```java long[] vibratePattern = {0, 100, 200, 300}; builder.setVibrate(vibratePattern); ``` ...

    android俄罗斯方块

    本文将围绕“android俄罗斯方块”这一主题,深入探讨其设计与实现,包括游戏逻辑、界面设计、特殊功能以及用户体验优化等方面。 1. **游戏逻辑** 俄罗斯方块的核心是其游戏逻辑,它基于7种基础形状(T、S、Z、I、O...

    iOS实现微信摇一摇功能

    要实现震动功能,需要使用 AudioToolbox 框架中的 AudioServicesPlaySystemSound 函数。该函数可以播放系统声音,包括震动。下面是相关代码: ``` #import #pragma mark 点击 - (void)touchesBegan:(nonnull ...

    weixin-demo.zip

    本篇将深入探讨如何在Android平台上实现类似的功能,包括动画效果、震动反馈以及音乐播放。 一、动画效果 "摇一摇"的核心之一就是动画效果。在Android中,我们可以利用`Animation`类或者`Animator`类来创建动画。...

    android开发之蜂鸣提示音和震动提示的实现原理与参考代码

    1. **声明权限**:在`AndroidManifest.xml`中添加`&lt;uses-permission android:name="android.permission.VIBRATE" /&gt;`,以允许应用使用震动功能。 2. **获取震动服务**:通过`Context.getSystemService(Context....

    WPF 倒计时+震动

    在Windows Presentation Foundation (WPF)中,倒计时和振动效果是两个常见但不那么基础的功能,它们可以增强用户界面的交互性和体验感。本文将深入探讨如何在WPF应用中实现这两个特性。 首先,让我们从倒计时功能...

Global site tag (gtag.js) - Google Analytics