ios 设置声音和震动,单独控制

一、今天项目中涉及了设置这快的声音震动和响铃,搞的头大,以前搞过,只是简单的调用系统的方法就可以实现,但是现在的公司要求,震动是震动,响铃是响铃,我看了微信,微信也是的分开的,做的很好,但是我就纳闷了,这要怎搞,网上查阅了好多方法,都是下面的代码。但是这样满足不了我的项目需求,我就纳闷的很,我设置了声音和震动,为什么在声音响起的时候,他会调用震动,这点让我很不解,于是网上查了好多。。。。网上代码90%都是这样写的

 1         //在线单聊
 2         if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"isMessage_notf"] isEqualToString:@"0"]) {
 3
 4         }else if([[[NSUserDefaults standardUserDefaults] objectForKey:@"isMessage_notf"] isEqualToString:@"1"] && [[[NSUserDefaults standardUserDefaults] objectForKey:@"isVoice_Set"] isEqualToString:@"1"]){
 5
 6             AudioServicesPlaySystemSound (1007);//声音
 7
 8         }else if([[[NSUserDefaults standardUserDefaults] objectForKey:@"isMessage_notf"] isEqualToString:@"1"] && [[[NSUserDefaults standardUserDefaults] objectForKey:@"isVibration_Set"] isEqualToString:@"1"])
 9         {
10             AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);//震动
11         }

当然这是我项目中我的代码咯,不过我也是网上看到的,直接拉下来用的,果不其然,这样写上去了,被测试部门,给打回来了,说震动关闭了,怎么还有震动,当时我抓狂啊,我也不知道为什么啊,我以前就是这样写就好 了的,哎,所以,就开始上网查,百度,谷歌,stockoverflow,等等一些网站看,都没用找到,最后在博客园看到了,然后就按照他说的来写了,他写的是一个单例,然后再震动的时候调用震动的方法,响铃的时候调用响铃的方法,所以我就写了一个单例来调用,果然解决了我的项目需求。。。

 1 在 LxxPlaySound.h 中的代码
 2
 3 #import <UIKit/UIKit.h>
 4
 5 #import <AudioToolbox/AudioToolbox.h>
 6
 7
 8
 9 @interface LxxPlaySound : NSObject
10
11 {
12
13     SystemSoundID soundID;
14
15 }
16
17
18
19 /**
20
21  *  @brief  为播放震动效果初始化
22
23  *
24
25  *  @return self
26
27  */
28
29 -(id)initForPlayingVibrate;
30
31
32
33 /**
34
35  *  @brief  为播放系统音效初始化(无需提供音频文件)
36
37  *
38
39  *  @param resourceName 系统音效名称
40
41  *  @param type 系统音效类型
42
43  *
44
45  *  @return self
46
47  */
48
49 -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type;
50
51
52
53 /**
54
55  *  @brief  为播放特定的音频文件初始化(需提供音频文件)
56
57  *
58
59  *  @param filename 音频文件名(加在工程中)
60
61  *
62
63  *  @return self
64
65  */
66
67 -(id)initForPlayingSoundEffectWith:(NSString *)filename;
68
69
70
71 /**
72
73  *  @brief  播放音效
74
75  */
76
77 -(void)play;
78
79
80
81 @end
  1 在 LxxPlaySound.m中的代码
  2
  3 #import "LxxPlaySound.h"
  4
  5
  6
  7 @implementation LxxPlaySound
  8
  9
 10
 11 -(id)initForPlayingVibrate
 12
 13 {
 14
 15     self = [super init];
 16
 17     if (self) {
 18
 19         soundID = kSystemSoundID_Vibrate;
 20
 21     }
 22
 23     return self;
 24
 25 }
 26
 27
 28
 29 -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type
 30
 31 {
 32
 33     self = [super init];
 34
 35     if (self) {
 36
 37         NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:resourceName ofType:type];
 38
 39         if (path) {
 40
 41             SystemSoundID theSoundID;
 42
 43             OSStatus error =  AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &theSoundID);
 44
 45             if (error == kAudioServicesNoError) {
 46
 47                 soundID = theSoundID;
 48
 49             }else {
 50
 51                 NSLog(@"Failed to create sound ");
 52
 53             }
 54
 55         }
 56
 57
 58
 59     }
 60
 61     return self;
 62
 63 }
 64
 65
 66
 67 -(id)initForPlayingSoundEffectWith:(NSString *)filename
 68
 69 {
 70
 71     self = [super init];
 72
 73     if (self) {
 74
 75         NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];
 76
 77         if (fileURL != nil)
 78
 79         {
 80
 81             SystemSoundID theSoundID;
 82
 83             OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);
 84
 85             if (error == kAudioServicesNoError){
 86
 87                 soundID = theSoundID;
 88
 89             }else {
 90
 91                 NSLog(@"Failed to create sound ");
 92
 93             }
 94
 95         }
 96
 97     }
 98
 99     return self;
100
101 }
102
103
104
105 -(void)play
106
107 {
108
109     AudioServicesPlaySystemSound(soundID);
110
111 }
112
113
114
115 -(void)dealloc
116
117 {
118
119     AudioServicesDisposeSystemSoundID(soundID);
120
121 }
122
123 @end

然后在你的震动和声音那里开始来调用他。。只需引入他的头文件,就万事俱备,开始你的设置吧。。。你的设置就可以任你调用,想震动震动,想开铃声开铃声。。。。

如下代码演示调用震动

// 震动 首先要引入头文件

  LxxPlaySound *playSound =[[LxxPlaySound alloc]initForPlayingVibrate];  [playSound play];

这是我苦逼了二天才解决的问题,只因我太菜,我大哥一直在帮我,谢谢他 @平淡的我 。。。

希望可以帮到一些像我这样的苦逼的码农,如有不清楚的尽情来找我,互相学习,共同努力!!day day up!!!

时间: 2024-10-12 17:12:20

ios 设置声音和震动,单独控制的相关文章

Android Notification 的声音和震动

我们在Android系统发送一条Notification的时候,经常需要通过震动或声音来提醒用户.如何为Notification设置声音和震动了.大致思路有: - AndroidNotification系统默认的声音和震动 - 为AndroidNotification设置自定义的声音和震动 - 自己使用Vibrator和SoundPool来产生声音和震动 使用震动需要注意添加权限: <uses-permission android:name="android.permission.VIBR

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

ios 设置亮度、声音;调用发短信、邮件、打电话

一,设置亮度 [[UIScreen mainScreen] setBrightness:0.5];//0.0~1.0 二,设置声音 1,添加 MediaPlayer.framework 框架 2,在需要的文件中导入头文件,#import <MediaPlayer/MediaPlayer.h> 3,[[MPMusicPlayerController applicationMusicPlayer] setVolume: 0.5];//0.0~1.0 三,调用发短信.邮件.打电话 1.调用 自带ma

IOS 新消息通知提示-声音、震动

一.APNS 1.注册 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];复制代码2.服务器推送(JAVA) PushNotificationPayload payLoad =  PushNotificationPayl

iOS调用系统声音和震动

调取系统声音和震动 首先应当引入系统库:AudioToolbox.framework 引用: #import <AudioToolbox/AudioToolbox.h> 1.调用震动: AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 2,调用系统声音 a.直接调用 AudioServicesPlaySystemSound(1007);//这个声音是是类似于QQ声音的 b.调用更多的系统声音 SystemSoundID sound; N

iOS中声音采集与播放的实现(使用AudioQueue)

都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用AVAudioRecorder和AVAudioPlayer.度娘大多数也是如此.但是这种方法有很大的局限性.单说说这种做法:录音,首先得设置录音文件路径,然后录音数据直接写入了文件.播放也是首先给出文件路径,等到音频整个加载完成了,才能开始播放.这相当不灵活. 我的做法是利用音频队列AudioQue

在树莓派上使用火焰,声音,震动,光敏传感器

作为一个软件工程专业的学生,对传感器等硬件的使用一直不太顺手,而在树莓派使用Python的RPi.GPIO,进行传感器等硬件的使用却是非常方便.而且使用树莓派这个网络功能强大的控制中心,其在物联网方面的使用也将更加广泛. 这次我主要使用了火焰,声音,震动,光敏这四个传感器进行了简单的测试,对其进行扩展组合使用就靠大家的想法了.话不多说,下面开始. 传感器 火焰传感器 用途: 各种火焰,火源探测 模块特色: 1. 可以检测火焰或者波长在760纳米-1100纳米范围内的光源,打火机测试火焰距离为80

iOS设置拍照retake和use按钮为中文简体

iOS设置拍照retake和use按钮为中文简体,设置有两种方式一个是代码直接控制,第二就是xcode配置本机国际化为“china”(简体中文). 本文重点要说的是第二种,这样配置有两个好处,一是操作比较简单,二是灵活度较高. 具体操作: 配置xcode项目配置 => Info => Custom iOS Target Properties => 配置Localization native development region设置为China.如图: 效果如图:

iOS设置app应用程序文件共享

1.iOSapp应用程序文件共享 当我们用itnues连接到设备时,在应用程序栏目下面,文件共享下,点击 对应的程序,即可以在程序右边栏目里面看到应用程序共享的数据, 此时,我们可以通过右下角的 添加 和存储为 导入数据或是导出数据,如图 2. iOS设置app应用程序文件共享 设置流程 xcode 打开项目----在 info.plist 文件,添加 UIFileSharingEnabled 并设置属性为 YES 在app内部,将您希望共享的文件放在应用程序的Documents目录下