これが本当にバグかどうかを誰かが確認できますか? (もしそうなら、私はアップルに提出する)。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