как воспроизводить аудио в фоновом режиме при нажатии на ячейки таблицы - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть таблица, где я отображаю мои .wav файлы папки ресурсов в таблице. Песни отображаются должным образом в виде таблицы. Когда я выбираю конкретную песню в ячейке просмотра таблицы для этой конкретной песни, отображается галочка, и в то же время песня должна воспроизводиться в фоновом режиме. Я сделал этот код для воспроизведения определенной выбранной песни на фон, но он не работает должным образом. В чем может быть проблема. Спасибо.

- (void)viewDidLoad {
    [super viewDidLoad];

    app = (StopSnoozeAppDelegate*)[[UIApplication sharedApplication]delegate];

    app.newcheckarray = [[[NSBundle mainBundle]pathsForResourcesOfType:@".wav" inDirectory:nil]retain];
    tblView.delegate = self;
    tblView.dataSource = self;


}



- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                                       reuseIdentifier:CellIdentifier] autorelease];
    }



    switch (indexPath.row) {
        case 0:
            soundstring = [app.newcheckarray objectAtIndex:0];
            cell.textLabel.text = [soundstring lastPathComponent];

            break;
        case 1:
            soundstring  =[app.newcheckarray objectAtIndex:1];
            cell.textLabel.text = [soundstring  lastPathComponent];
            break;


        default:
            break;
    }
    cell.accessoryType = ([indexPath isEqual:rowselection]) ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;

    return cell;
}



- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.rowselection = indexPath;

    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    [tableView reloadData];

    for (int i= 0;i <[[self.navigationController viewControllers] count];++i)
    {
        UIViewController *aController = [[self.navigationController viewControllers]objectAtIndex:i];
        if ([aController isKindOfClass:[TAddAlarmController class]])
        {
            NSString *newsong1 = [app.newcheckarray objectAtIndex:indexPath.row];
            app.newsong = [newsong1 lastPathComponent];
            NSURL *pewPewURL1 = [NSURL fileURLWithPath:app.newsong];
            AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:pewPewURL1 error:nil];

            [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
            [[AVAudioSession sharedInstance] setActive: YES error: nil];
            [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

            [audioPlayer play];         
            [delegate selectsoundControllerReturnedsound:app.newsong forIndexPath:self.indexPathToChange];

        }


    }


}

в didselect я инициализирую свой аудиоплеер, но он не воспроизводит звук.

1 Ответ

0 голосов
/ 13 декабря 2011

Я использовал приведенный ниже код для UIAlertView.Вы можете попробовать это в

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

методе

, вам нужно добавить AudioToolbox.framework и

#import <AudioToolbox/AudioServices.h>

Код:

    NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"Voicemail" ofType:@"wav"];       
    SystemSoundID soundID;      
    AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);       
    AudioServicesPlaySystemSound (soundID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...