2011-07-02 13 views
1

有人可以確認這是否確實是一個錯誤? (如果是這樣,我會去蘋果公司提交)。iOS:這是一個音頻會話模擬器錯誤?關鍵字:kAudioSessionProperty_AudioRoute kAudioSessionUnsupportedPropertyError

嘗試抓取kAudioSessionProperty_AudioRoute在4.3之前的任何版本的模擬器(這是寫作時的最新版本)上返回錯誤代碼kAudioSessionUnsupportedPropertyError。

這一個很容易重現。

啓動一個新的項目(我使用的Xcode 4.0.2建立4A2002a,這是標準版本),基於窗口的項目「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運行一遍 - 故障

回答

1

我剛剛接到了來自蘋果以下確認:

這是一個在4.3版本中已修復的bug,我們目前還沒有計劃修復早期版本的模擬器中的錯誤。