【问题标题】:Objective C: Audio works on simulator but not in device目标 C:音频在模拟器上有效,但在设备上无效
【发布时间】:2012-09-28 05:27:15
【问题描述】:

我的应用程序中可能有一个原因,当我尝试在 iPhone 设备中构建它时,我听不到声音,我也无法使用设备的音量按钮.. 而当我在模拟器中构建它时它可以工作完美..我尝试使用下面的代码,但它也不起作用..有人可以在这里帮助我..谢谢..

 UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);


  NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"sounds" ofType:@"wav"];
AVAudioPlayer *soundPlay = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:soundPath] error:NULL];
soundPlay.volume = 1.0;
self->puzzSFX = soundPlay;
soundPlay.numberOfLoops = 0;
if ([soundPlay currentTime] != 0) [soundPlay setCurrentTime:0];
[soundPlay play];
soundPlay.delegate = self;

PS: 我试图通过耳机调节音量,然后它会开始工作..

【问题讨论】:

  • 您确定问题出在您的代码上,而不是您的 iPhone 上吗?尝试下载一个简单的免费应用程序,它会发出声音并用它来玩。它有同样的问题吗?或者在另一部 iPhone 上测试您的代码。理想情况下,两者兼而有之。
  • 我尝试使用其他应用程序,音频和音量按钮工作正常..
  • 我遇到了同样的问题;模拟器运行良好,设备没有任何录制的音频......希望这个问题在多年前就得到了回答。

标签: objective-c ios core-audio avaudioplayer audio-recording


【解决方案1】:

问题可能与从 NSString 路径到 NSURL 的转换有关,您需要检查特殊 URL 字符是否被转义(在模拟器中可能没有的字符,但仅在设备上)。尝试这样做:

NSURL *fileURL = [NSURL URLWithString:[soundPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

然后用这个 NSURL 初始化你的 AVAudioPlayer。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    相关资源
    最近更新 更多