2013-10-28 6 views
7

xCodeでiOSアプリケーションをコーディングし始めたばかりで、どのように動作するのかわかりにくい、直感的ではありません。私はこれに非常に新しいですし、私のアプリは非常にゆっくりと進みます^^。とにかく、私は今iOS7で何かを試しています。iOS 7:AVAudioPlayerを使用した簡単なオーディオコントロールですか?

税関セルとダイナミックな高さでダイナミックなテーブルを作成することができましたが、今は問題に解決策が見つかりません...とにかく私は正しい場所で検索しませんでした。 、それは素晴らしいことだ、今私のオーディオの再生を

NSString *path = [[NSBundle mainBundle] pathForResource:@"song" ofType:@"mp3"]; 
AVAudioPlayer *audio = [[AVAudioPlayer alloc] 
initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; 

[audio play]; 
[audio updateMeters]; 

私は、これらの行のおかげでオーディオ再生を持っています。しかし、私はコントロールを持っていません。私は正常に再生/一時停止ボタンを追加しましたが、どのようにオーディオの中をナビゲートするのですか?私はすべてのインターフェイスをコーディングする必要がありますか?ボタンと反応的なプログレスバーとの単純なインターフェースはありませんか?

私はそれをコード化しなければならない場合は、まあ、ハム...どこから始めるのですか?

ありがとうございます!

+0

を追加します。スクラブスライダも作成したい場合は、おそらく 'NSTimer'を見たいでしょう。 – sooper

答えて

17

AVAudioPlayerのplayAtTime:メソッドでUISliderを使用すると、AVAudioPlayerのシークバーが組み込まれていません。メソッドのseekTimeへ:中

チェックアウト、このサンプルコードでは、それはあなたがのvalueChangedをインターフェイスとリンクにUISLiderを追加

https://developer.apple.com/library/ios/samplecode/avTouch/Introduction/Intro.html

avTouchController

クラスに欲しいものを実装しています。 H AVAudioPlayerをロードした後のviewDidLoadで.Mで

@property (nonatomic, weak) IBOutlet UISlider *seekbar; 

@property (nonatomic, strong) AVAudioPlayer *audioPlayer; 

@property (nonatomic, strong) NSTimer *updateTimer; 

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"There's A Long, Long Trail A-Winding" ofType:@"mp3"]]; 

AVAudioPlayer *audio = [[AVAudioPlayer alloc] 
         initWithContentsOfURL:fileURL error:nil]; 

self.audioPlayer = audio; 

self.seekbar.minimumValue = 0; 

self.seekbar.maximumValue = self.audioPlayer.duration; 

[[self audioPlayer] play]; 

self.updateTimer =  [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateSeekBar) userInfo:nil repeats:YES] 

、あなたはボタンが音楽、スクラブスライダー、ボリュームコントロールなどを制御したい場合は、それらを自分とそれに対応するメソッドを作成する必要があります以下の方法

- (void)updateSeekBar{ 
float progress = self.audioPlayer.currentTime; 
[self.seekbar setValue:progress]; 
} 

- (IBAction)seekTime:(id)sender { 

self.audioPlayer.currentTime = self.seekbar.value; 

} 
+0

あなたの答えにはリンクがありません... – sergio

+0

おっと、追加されました。 (AVAudioSession) – ManicMonkOnMac

+0

うわー、ええ、それは少し難しいようです:P ...しかし、レベルメーター、ループ、これらは必要ありません物事の並べ替え。再生/一時停止と応答のあるタイムラインのみ。私はこれを実装しようとします。私はすぐに何かが来ることを願っています!感謝 – rekam

2
Play audio and update UISlider with it. 

-(void)viewWillAppear:(BOOL)animated 
{  
    NSString *soundFile=[[NSBundle mainBundle] pathForResource:@"name of your audio file." ofType:@".mp3"]; 

    NSURL *soundFileUrl=[NSURL fileURLWithPath:soundFile]; 
    soundPlayer=[[AVAudioPlayer alloc] initWithContentsOfURL:soundFileUrl error:nil]; 

    [soundPlayer prepareToPlay]; 
    soundPlayer.delegate=self; 


    slider.maximumValue=[soundPlayer duration]; 
    slider.minimumValue=0.0; 
    soundPlayer.currentTime=slider.value; 

    [soundPlayer play]; 

    [self startTimer]; 
} 

#pragma mark Timer Methods 

- (void)startTimer 
{ 

    timerForPlaying= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES]; 
} 

- (void)stopTimer 
{ 
    [timerForPlaying invalidate]; 
    timerForPlaying = nil; 
} 

// This method for updating UISlider when sound start to play. 
- (void)updateSlider 
{ 
    [slider setValue:soundPlayer.currentTime animated:NO]; 
    startTime=slider.value; 
} 

// When we adjust sound according to slider value connect this method to your slider value change event. 

-(void)valueChange:(id)sender 
{ 
    soundPlayer.currentTime=slider.value; 

} 
+0

オーディオを一時停止するとどうなりますか? –

関連する問題