2011-07-02 5 views
1

これが本当にバグかどうかを誰かが確認できますか? (もしそうなら、私はアップルに提出する)。iOS:これはオーディオセッションシミュレータのバグですか?キーワード:kAudioSessionProperty_AudioRoute kAudioSessionUnsupportedPropertyError

kAudioSessionProperty_AudioRouteをフェッチしようとすると、4.3より前のシミュレータのすべてのバージョン(この時点では最新のバージョン)でエラーコードkAudioSessionUnsupportedPropertyErrorが返されます。

この1つは、再現が容易ではありません。

新しいプロジェクト(私は4A2002aを構築するXcodeの4.0.2を使用しています、それは、標準的なビルドです)、ウィンドウベースのプロジェクト「AudioSessionBug」

が含まAudioToolboxフレームワーク

アプリケーションデリゲートの.Mを交換を開始しますファイルは次のとおりです。

// 
// AudioSessionBugAppDelegate.m 
// AudioSessionBug 
// 
// Created by Pi on 02/07/2011. 
// Copyright 2011 Pi. All rights reserved. 
// 

#import "AudioSessionBugAppDelegate.h" 

#import <AudioToolbox/AudioToolbox.h> 

#define SET_PROPERTY(prop, type, val) \ 
{ \ 
OSStatus ret = AudioSessionSetProperty(prop, sizeof(type), &(type){ val }); \ 
if (ret != kAudioSessionNoError) \ 
{ \ 
NSLog(@"AudioSessionSETProperty failed for: %s!", #prop); \ 
return; \ 
} \ 
} 

enum { 
    kNo = 0, 
    kYes = 1 
}; 

// - - - 

@interface AudioSessionBugAppDelegate () 

- (void) setupSession; 

@end 

// - - - 

@implementation AudioSessionBugAppDelegate 


@synthesize window=_window; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    [self.window makeKeyAndVisible]; 


    [self setupSession]; 


    return YES; 
} 

- (void) setupSession 
{ 
    OSStatus result = AudioSessionInitialize(NULL, NULL, NULL, NULL); 
    assert(result == kAudioSessionNoError); 

    SET_PROPERTY(kAudioSessionProperty_AudioCategory, UInt32, kAudioSessionCategory_PlayAndRecord); 

    // make sure headphones are plugged in! 
    { 
     // http://stackoverflow.com/questions/2753562/what-kind-of-routes-could-i-get-back-from-kaudiosessionproperty-audioroute-proper 
     CFStringRef state = nil;   
     UInt32 propertySize = sizeof(CFStringRef); 
     OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state); 

     if (status == kAudioSessionUnsupportedPropertyError) 
     { 
      NSLog(@" WTF? GETTING kAudioSessionProperty_AudioRoute GIVES kAudioSessionUnsupportedPropertyError ?!?!? "); 
     } 

     NSLog(@" OK - done! "); 

     exit(1); 
    } 
} 

- (void)dealloc 
{ 
    [_window release]; 
    [super dealloc]; 
} 

@end 

は、展開ターゲットを4.3より前のものに変更しました。 4.2と言う。

iPadのシミュレータ4.3の再実行を - OK
それが再びiPadのシミュレータ4.2上で実行 - FAIL

答えて

1

私はアップルから次の確認を受けた:

これでしたバグは4.3で修正されました。現在のところ、以前のビルドのバグを修正する予定はありません。

関連する問題