20

AudioServicesPlayAlertSoundのドキュメントでは、サウンドの再生時に振動を無効にできると書かれています。

iPhone—指定されたサウンドを再生します。ユーザーがリングのバイブレーション用に設定アプリケーションを構成している場合、バイブレーションも呼び出されます。ただし、アプリのオーディオ セッションが AVAudioSessionCategoryPlayAndRecordまたは AVAudioSessionCategoryRecord オーディオ セッション カテゴリで構成されている場合、デバイスは振動しません。

しかし、iPhone 4S (iOS 5.1.1) で、カテゴリを「再生と録音」に設定した後でも振動を感じます。鳴ると同時に振​​動します。

#import <AudioToolbox/AudioServices.h>
#import <AVFoundation/AVAudioSession.h>

NSError* error;
[[AVAudioSession sharedInstance]
    setCategory:AVAudioSessionCategoryPlayAndRecord
    error:&error];
if (error == nil) {
    AudioServicesPlayAlertSound(1000);
}

も試しましAudioServicesPlaySystemSoundたが、結果は同じです。バイブレーションを無効にしたい理由は、ユーザーが電話を遠くに置く必要があり、振動によって電話が倒れないようにするアプリを作成しているためです。

4

2 に答える 2

8

これを iPhone 4s でテストしたところ、希望どおりに動作します。

   NSError* error;
    [[AVAudioSession sharedInstance]
     setCategory:AVAudioSessionCategoryPlayAndRecord
     error:&error];
    if (error == nil) {
        SystemSoundID myAlertSound;
        NSURL *url = [NSURL URLWithString:@"/System/Library/Audio/UISounds/new-mail.caf"];
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &myAlertSound);

        AudioServicesPlaySystemSound(myAlertSound);

    }

システム サウンドのファイル名を使用AudioServicesCreateSystemSoundIDして を作成するために使用します。SystemSoundID次にAudioServicesPlaySystemSound()、無振動で音を鳴らすために使用します。他のシステム サウンドのファイル名は、以下のリンクにあります。

http://iphonedevwiki.net/index.php/AudioServices

于 2013-03-29T06:28:33.900 に答える
3

内蔵の Apple の効果音ではなく、独自の効果音を再生してみましたか?

アプリにオーディオ ファイルをアップロードすると、AudioToolBox フレームワークで簡単に使用できるようになり、バイブレーションを気にする必要がなくなります。

#import <AudioToolbox/AudioServices.h>    

//Initialise your soundID (your app delegate is a good place for this)    
SystemSoundID soundToPlay;

NSString *path  = [[NSBundle mainBundle] pathForResource:@"<YourFileName>" ofType:@"aif"];
NSURL *pathURL = [NSURL fileURLWithPath : path];
AudioServicesCreateSystemSoundID((__bridge CFURLRef) pathURL, &soundToPlay);

//playback
AudioServicesPlaySystemSound(soundToPlay);
于 2013-03-26T10:07:24.283 に答える