2016-08-15 11 views
5

私は、オーディオ出力と入力の両方を使用し、他のアプリからのオーディオミキシングをサポートするSnapchatに似たアプリで振動を実行しようとしていますが、これは最初はもっと難しい作業ですそれがそうであると思った。重要なのは、再生や録音中に振動しようとしていないことです。私は、件名に見つけることができるすべてのドキュメントを読んでから、これは私が理解するようになったものです:録音アプリケーションで振動を実行

、私は AVAudioSessionCategoryPlayAndRecord
  • メイキングを使用する必要が再生と録音(出力および入力)の両方をサポートするために
    • 電話番号AudioServicesPlaySystemSound (kSystemSoundID_Vibrate)は、AVAudioSessionCategoryPlayAndRecordなどの記録カテゴリではサポートされていません。
    • 他のアプリの音声再生を有効にするには、AVAudioSessionCategoryOptionMixWithOthersというオプションを追加します。

    したがって、私は私のアプリデリゲートに次の操作を行います。私は試みたが、時に失敗した振動を行うことに

    NSError *error = nil; 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers error:&error]; 
    

    可能な解決策は以下のとおりです。

    • は、共有AVAudioSessionの無効化振動させてから直ちに作動させてください。

      [[AVAudioSession sharedInstance] setActive:NO error:nil];   
      AudioServicesPlaySystemSound (kSystemSoundID_Vibrate); 
      [[AVAudioSession sharedInstance] setActive:YES error:nil]; 
      

      これが成功した振動を実行しますが、その後、私は映画を録画しようとすると、オーディオをすくめている(または何か他のものは、それは非常に静かであることを引き起こしています)。また、I/Oデバイスを最初に削除せずにセッションを非アクティブ化することは許可されていないというエラーが表示されます。

    • 振動する前にカテゴリを変更してから戻します。

      [[AVAudioSession sharedInstance] setActive:NO error:nil]; 
      [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil]; 
      [[AVAudioSession sharedInstance] setActive:YES error:nil]; 
      
      AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 
      
      [[AVAudioSession sharedInstance] setActive:NO error:nil]; 
      [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers error:nil]; 
      [[AVAudioSession sharedInstance] setActive:YES error:nil]; 
      

      このソリューションは、今すぐに登場しますが、私にとってはうまくいかないようです。カテゴリは設定されているように見えますが、振動は発生しません。 AVCaptureSessionにusesApplicationAudioSession = YESを設定しても、これはまだ有効な解決策ですが、まだ動作させていません。

    源:

  • +0

    振動しようとしたときに記録を任意の 'AVAudioRecorder'のインスタンスがあります:

    はIncaseのあなたはここで彼らが追加されたもののiOSのバージョンすべての再生可能なサウンドとへのリンクがあり、より音に興味を持っていますか? – spassas

    答えて

    1

    UIImpactFeedbackGenerator

    UISelectionFeedbackGenerator

    UINotificationFeedbackGenerator

    https://developer.apple.com/reference/uikit/uifeedbackgenerator#2555399:あなたはサポートされているデバイスの要件がありますが、新しいデバイスのために、次のような新しいtapticエンジンのAPIを使用することができますどのような言いませんでした

    +0

    ありがとうございますが、古いデバイスもサポートする必要があります –

    +0

    が編集されました。ありがとう! – atomkirk

    +2

    私はこの解決策を試しましたが、アプリの録画中に問題があるようです。 FeedbackGeneratorsはうまく動作しません。 – vaberer

    1

    私は最近、私のアプリでシンプルなビープ音を再生しようとしているので、私はつまずいたので、方法の一つは:

    AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID); 
    

    これは、すべてのiOSバージョンでサポートされている/System/Library/Audio/UISounds/のシステムサウンドを再生する機能です。

    音1350は、RingerVibeChanged(振動)に等しくなります。だから..

    AudioServicesPlaySystemSound(1350); 
    

    ...約0.5秒間振動する。 http://iphonedevwiki.net/index.php/AudioServices

    +0

    AudioServicesPlaySystemSoundを使用して振動を実行することは、私が抱えている問題です。 kSystemSoundID_Vibrateの代わりに1350を使用すると(4095のエイリアス)、違いはありません。 –

    関連する問題