user3222991
user3222991

Reputation: 341

how to handle volume slider position in AVAudioplayer in ios

I am creating little app that uses AVAudioplayer to play on audio list. I am trying to save the current volume position of the player so when he return back to audio view the volume slider will be on same position when he left off. I am trying to write some code but I don't know how to handle this functionality. Here's what I tried:

-(void)viewDidLoad

{

UISlider *aslider=[[UISlider alloc]initWithFrame:CGRectMake(40, 370, 220, 20)];

volumeSlider=aslider;

[volumeSlider addTarget:self action:@selector(volumeSliderMoved:) forControlEvents:UIControlEventValueChanged];

[self.view addSubview:volumeSlider];

}

-(void)volumeSliderMoved:(UISlider *)sender

{

self.audioPlayer.volume=[sender value];

}

Upvotes: 0

Views: 782

Answers (1)

Kapil Choubisa
Kapil Choubisa

Reputation: 5232

You can save the slider value in NSUserDefaults

Try:

-(void)viewDidLoad

{

     UISlider *aslider=[[UISlider alloc]initWithFrame:CGRectMake(40, 370, 220, 20)];
     // fetch previous saved volume from NSUserDefaults. If this is first time it will be 0.
     float volume = [[NSUserDefaults standardUserDefaults] floatForKey:@"volume"];
     self.audioPlayer.volume = volume;
     volumeSlider.value = volume;
     volumeSlider=aslider;

     [volumeSlider addTarget:self action:@selector(volumeSliderMoved:) forControlEvents:UIControlEventValueChanged];

     [self.view addSubview:volumeSlider];

}

-(void)volumeSliderMoved:(UISlider *)sender

{
     // Save the slider value to NSUserDefaults so it can be used next time.
     [[NSUserDefaults standardUserDefaults] setFloat:[sender value] forKey:@"volume"];
     self.audioPlayer.volume=[sender value];

}

UPDATE

- (void)playNextSong {
      // Do your stuff
      float volume = [[NSUserDefaults standardUserDefaults] floatForKey:@"volume"];
     self.audioPlayer.volume = volume;
}

Upvotes: 1

Related Questions