2012-02-25 85 views
0

IOS開發新手,我正在測試AVAudioplayer在iPad2上播放聲音(Xcode 4.2項目,ARC/storyboard啓用)。聲音可以在模擬器中播放,沒有錯誤。設備上沒有錯誤,但沒有聲音。AVAudioPlayer不玩iPad2

我一直在瀏覽這個精美的資源寺廟,但沒有試過根據這裏的反饋產生的東西,除了震耳欲聾的iPad沉默。有人可以幫忙嗎?我.H:

#import <UIKit/UIKit.h> 
#import <AVFoundation/AVFoundation.h> 

@interface ViewController : UIViewController 
<AVAudioPlayerDelegate> 
{ 
    AVAudioPlayer *audioPlayer; 
    UISlider *volumeControl; 
    UILabel *timerLabel; 
    NSTimer *playbackTimer; 
} 
@property (nonatomic, retain) IBOutlet UISlider *volumeControl; 
@property (nonatomic, retain) IBOutlet UILabel *timerLabel; 
@property (nonatomic, retain) NSTimer *playbackTimer; 
@property (nonatomic, strong) AVAudioPlayer *audioPlayer; 
-(IBAction) playAudio; 
-(IBAction) stopAudio; 
-(IBAction) adjustVolume; 
@end 

我的.m:

#import "ViewController.h" 

@implementation ViewController 
@synthesize volumeControl, timerLabel, playbackTimer, audioPlayer; 

-(void)playAudio 
{ 
    playbackTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 
                target:self 
                selector:@selector(updateTime) 
                userInfo:nil 
                repeats:YES]; 
    [audioPlayer play]; 
} 

-(void)stopAudio 
{ 
    [playbackTimer invalidate]; 
    [audioPlayer stop]; 
} 
-(void)adjustVolume 
{ 
    if (audioPlayer != nil) 
    { 
     audioPlayer.volume = volumeControl.value; 
    } 
} 

-(void)updateTime 
{ 
    float minutes = floor(audioPlayer.currentTime/60); 
    float seconds = audioPlayer.currentTime - (minutes * 60); 

    float duration_minutes = floor(audioPlayer.duration/60); 
    float duration_seconds = 
    audioPlayer.duration - (duration_minutes * 60); 

    NSString *timeInfoString = [[NSString alloc] 
           initWithFormat:@"%0.0f.%0.0f/%0.0f.%0.0f", 
           minutes, seconds, 
           duration_minutes, duration_seconds]; 

    timerLabel.text = timeInfoString; 
} 


-(void)audioPlayerDidFinishPlaying: 
(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
} 
-(void)audioPlayerDecodeErrorDidOccur: 
(AVAudioPlayer *)player error:(NSError *)error 
{ 
} 
-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player 
{ 
} 
-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player 
{ 
} 

我viewDidLoad中:

- (void)viewDidLoad { 
     [super viewDidLoad]; 

     NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
              pathForResource:@"song" 
              ofType:@"mp3"]]; 

     NSError *error; 
     audioPlayer = [[AVAudioPlayer alloc] 
         initWithContentsOfURL:url 
         error:&error]; 
     if (error) 
     { 
      NSLog(@"Error in audioPlayer: %@", 
        [error localizedDescription]); 
     } else { 
      audioPlayer.delegate = self; 
      [audioPlayer prepareToPlay]; 
     } 

    [super viewDidLoad]; 
} 

回答

0

確保文件確實是一個MP3格式。確保您將文件複製到軟件包中,而不是從桌面上的本地路徑中彈出。檢查設備音量。檢查播放呼叫中的返回BOOL。所有這些都是可能的解釋。

+0

是的,文件是絕對的MP3,文件捆綁,設備音量最大,但儘管啓動按鈕正確鏈接在IB不能得到日誌返回didstartplaying或didfinishplaying? – prk 2012-02-25 11:24:37

+0

嘗試重新啓動模擬器/設備。有時當音頻發生變化時,例如使用像Boom這樣的應用時,可能會發生這種情況。 – user1046037 2012-06-07 18:50:27

+0

那麼上面的東西是什麼呢? – Toad 2012-07-22 21:25:23

0

它是不是在播放聲音?即使插入耳機也沒有聲音?如果通過內置揚聲器沒有聲音,但通過耳機發出聲音,請確保您的設備響鈴/音量沒有靜音。檢查側面的切換開關(如果您已將其設置爲靜音vs方向鎖定)。鐘不應該被劃掉。僅僅因爲你按了音量提高按鈕並不意味着它從揚聲器中解除了靜音。您是否測試過YouTube視頻或音樂文件以確保您的iPad沒有硬件問題?