Note that there are some explanatory texts on larger screens.

plurals
  1. POUISlider not updating
    primarykey
    data
    text
    <p>I am trying to code a music player for an assignment and I am stuck with trying to get the slider to update as the song is playing. I have been able to make it so that if the user were to slide the slider the song will rewind/fast-forward to that part of the song. Does anyone know why the slider doesn't continuously update as the song is playing?</p> <p>Here is the .h file</p> <pre><code>#import &lt;UIKit/UIKit.h&gt; #import &lt;AVFoundation/AVFoundation.h&gt; #import &lt;MediaPlayer/MediaPlayer.h&gt; @interface AS3MPViewController : UIViewController &lt;MPMediaPickerControllerDelegate&gt;{ IBOutlet UIButton *playButton; IBOutlet UIButton *stopButton; IBOutlet UIButton *pauseButton; IBOutlet UISlider *volumeSlider; AVAudioPlayer *musicPlayer; IBOutlet UIButton *pickSongButton; IBOutlet UISlider *timeSlider; NSTimer *timer; } @property (nonatomic, retain) UIButton *playButton; @property (nonatomic, retain) UIButton *stopButton; @property (nonatomic, retain) UIButton *pauseButton; @property (nonatomic, retain) UISlider *volumeSlider; @property (nonatomic, retain) AVAudioPlayer *musicPlayer; @property (nonatomic, retain) UIButton *pickSongButton; @property (nonatomic, retain) UISlider *timeSlider; @property (nonatomic, retain) NSTimer *timer; - (IBAction) play; - (IBAction) stop; - (IBAction) pause; - (IBAction) changeVolume: (UISlider *)sender; - (IBAction) chooseSong: (UIButton *)sender; - (IBAction) changeTime: (UISlider *)sender; - (void)setTimeSliderOptions; @end </code></pre> <p>Here is the .m file</p> <pre><code>#import "AS3MPViewController.h" @interface AS3MPViewController () @end @implementation AS3MPViewController @synthesize playButton = _playButton; @synthesize stopButton = _stopButton; @synthesize pauseButton = _pauseButton; @synthesize musicPlayer = _musicPlayer; @synthesize volumeSlider = _volumeSlider; @synthesize pickSongButton = _pickSongButton; @synthesize timeSlider = _timeSlider; @synthesize timer; - (void)viewDidLoad { [super viewDidLoad]; NSString *filePath = [[NSBundle mainBundle] pathForResource:@"animals001" ofType:@"mp3"]; NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath]; self.musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil]; [self.musicPlayer prepareToPlay]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction) play { [self.musicPlayer play]; } - (IBAction) stop { [self.musicPlayer stop]; self.musicPlayer.currentTime = 0; } - (IBAction) pause { [self.musicPlayer pause]; } - (IBAction) changeVolume: (UISlider *)sender { self.musicPlayer.volume = [sender value]; } - (IBAction)chooseSong:(UIButton *)sender { MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio]; [mediaPicker setDelegate:self]; [mediaPicker setAllowsPickingMultipleItems:NO]; mediaPicker.prompt = NSLocalizedString(@"Add Some Songs To Play", "Prompt In Media Item Picker"); [self presentModalViewController: mediaPicker animated:YES]; } - (void) mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker { [self dismissModalViewControllerAnimated:YES]; } - (void) mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *)mediaItemCollection { MPMediaItem *item = [[mediaItemCollection items] objectAtIndex:0]; NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL]; //AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:url]; //AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem]; self.timeSlider.maximumValue = [self.musicPlayer duration]; self.musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; [self.musicPlayer play]; timer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(songCurrentTime) userInfo:nil repeats:YES]; [self dismissModalViewControllerAnimated:YES]; } - (IBAction)changeTime: (UISlider *)sender { self.musicPlayer.currentTime = self.musicPlayer.duration * sender.value; } - (void)songCurrentTime { timeSlider.value = (self.musicPlayer.currentTime / self.musicPlayer.duration); } @end </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload