如何一个接一个地播放放在iphone资源文件夹中的音频歌曲

时间:2012-05-23 06:57:14

标签: iphone

我是iphone的新手。我在这里工作音频播放器我在中间被击中因为我面临的一些问题在我的项目中我在资源文件夹中有2个目录。在每个目录中我有6mp3音频文件那么我的问题是当用户在资源文件夹的第一个目录中提供第三首mp3歌曲的路径时,我们必须连续播放所有歌曲,如第4,第5,第6个mp3文件,它们也放在资源文件夹中的那个目录中。是我的代码

    NSString *chapterString =@"3";
    NSString *string = [[NSBundle mainBundle]pathForResource:chapterString ofType:@"mp3" inDirectory:@"raj"];
    NSLog(@"string is %@",string);
    url = [NSURL fileURLWithPath:string isDirectory:YES];
    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];

如果有人知道这个,请帮助我..

2 个答案:

答案 0 :(得分:0)

你可以通过NSFileManager通过{{1}}获取目录的内容,完成歌曲x..play播放数组中的下一首歌曲,歌曲y。

答案 1 :(得分:0)

  1. 将所有歌曲放入数组
  2. 初始化全局变量假设x
  3. 编写以下AVAudioPlayer代理

    - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
        if (x<([_downloadedSongArray count]-1)) 
        {
            x=x+1;
            [self loadSong];
        }
    }
    - (void)loadSong 
    {
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        _audioDocumentsDirectory = [paths objectAtIndex:0];
        _audioDocumentsDirectory = [_audioDocumentsDirectory stringByAppendingPathComponent:@"Songs"];
        NSString *selectedSong = [_downloadedSongArray objectAtIndex:x];
        _sharerDownloadedString=selectedSong;
        selectedSong = [selectedSong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        _audioDocumentsDirectory = [_audioDocumentsDirectory stringByAppendingPathComponent:selectedSong];
    
        url = [NSURL fileURLWithPath:_audioDocumentsDirectory];
        [_audio stop];
        _audio = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
        [_audio prepareToPlay];
        [_audio play];
        [Utility setPlaying:YES];
        [_audio setDelegate:self];
    }
    
  4. _downloadedSongArray是一个所有歌曲都在的数组。 loadSong是一种基于索引从数组加载next / prev歌曲并分配给AVAudioPlayer的方法。