Novocaine を使用して高パフォーマンスでオーディオを再生しようとしていますが、見つけたサンプル コードはイヤホンでのみオーディオを再生しますが、スピーカーで再生したいのですが、それは可能ですか?
ありがとう
Novocaine を使用して高パフォーマンスでオーディオを再生しようとしていますが、見つけたサンプル コードはイヤホンでのみオーディオを再生しますが、スピーカーで再生したいのですが、それは可能ですか?
ありがとう
このようなルート変更を実装しましたが、うまくいくようです。以下のコードに置き換えsessionPropertyListener
て、 を追加するだけupdateAudioRoute
です。
void sessionPropertyListener(void * inClientData,
AudioSessionPropertyID inID,
UInt32 inDataSize,
const void * inData){
if (inID == kAudioSessionProperty_AudioRouteChange)
{
Novocaine *sm = (Novocaine *)inClientData;
[sm checkSessionProperties];
[sm updateAudioRoute];
}
}
//Quick and dirty way to override the audioRoute whenever the audioRoute is changed.
- (void)updateAudioRoute {
CFStringRef newRoute;
UInt32 size = sizeof(CFStringRef);
CheckError(AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &size, &newRoute),
"couldn't get new audio route");
if (newRoute)
{
CFShow(newRoute);
if (CFStringCompare(newRoute, CFSTR("ReceiverAndMicrophone"), (UInt32)NULL)== kCFCompareEqualTo)
{
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
}
else if (CFStringCompare(newRoute, CFSTR("HeadsetInOut"), (UInt32)NULL) == kCFCompareEqualTo)
{
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
}
}
}
ほぼ同じ問題がありました。迅速で汚い修正、これを追加します:
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
- (void)setupAudio の Novocaine.m の iOS セクションの最後まで
ヘッドフォンが接続されていても、スピーカーからオーディオが再生されることに注意してください。
-(void)selectAudioDevice が空であるため、ルートの変更はまだ実装されていないようです。