简体   繁体   中英

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];

}

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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM