Воспроизвести аудио iOS Objective-C

Если вы хотите, чтобы курсор возвращался, вы можете рассмотреть что-то вроде этого:

SQLiteDatabase db = dbHelper.getWritableDatabase();

public Cursor fetchByCountryCode(String strCountryCode)
{
    /**
     * SELECT * FROM Country
     *      WHERE code = US
     */
    return cursor = db.query(true, 
        "Country",                        /**< Table name. */
        null,                             /**< All the fields that you want the 
                                                cursor to contain; null means all.*/
        "code=?",                         /**< WHERE statement without the WHERE clause. */
        new String[] { strCountryCode },    /**< Selection arguments. */
        null, null, null, null);
}

/** Fill a cursor with the results. */
Cursor c = fetchByCountryCode("US");

/** Retrieve data from the fields. */
String strCountryCode = c.getString(cursor.getColumnIndex("code"));

/** Assuming that you have a field/column with the name "country_name" */
String strCountryName = c.getString(cursor.getColumnIndex("country_name"));

См. этот фрагмент Genscripts , если вы хотите получить более полную версию. Обратите внимание, что это параметризованный SQL-запрос, поэтому по существу это подготовленный оператор.

23
задан Lagoo87 17 July 2012 в 15:35
поделиться

7 ответов

Возможно, вам следует попробовать использовать метод NSBundle method pathForResource:ofType: для создания пути к файлу.

Следующий код должен успешно воспроизвести аудиофайл. Я использовал его только с mp3, но я думаю, что он также должен работать с m4a. Если этот код не работает, вы можете попробовать изменить формат аудиофайла. Для этого кода аудиофайл находится в главной директории проекта.

/* Use this code to play an audio file */
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test"  ofType:@"m4a"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite

[player play];

РЕДАКТИРОВАТЬ

Хорошо, попробуйте следующее:

NSString *soundFilePath = [NSString stringWithFormat:@"%@/test.m4a",[[NSBundle mainBundle] resourcePath]];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite

[player play];

Также убедитесь, что вы правильно импортировали:

#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
53
ответ дан P.J.Radadiya 17 July 2012 в 15:35
поделиться

Вам необходимо сохранить сильную ссылку на 'AVAudioPlayer'

@property (strong) AVAudioPlayer *audioPlayer;

И если вы уверены, что ваш аудиофайл находится в следующих ресурсах Bundle, он должен воспроизводиться.

Проект> Этапы сборки> Копировать

28
ответ дан Hima 17 July 2012 в 15:35
поделиться

Для воспроизведения аудиофайла в комплекте, используя приведенный ниже код, если вы генерируете системный идентификатор звука

for(int i = 0 ;i< 5;i++)
{
    SystemSoundID   soundFileObject;
    NSString *audioFileName = [NSString stringWithFormat:@"Alarm%d",i+1];

    NSURL *tapSound   = [[NSBundle mainBundle] URLForResource: audioFileName
                                            withExtension: @"caf"];

    // Store the URL as a CFURLRef instance
    CFURLRef soundFileURLRef = (__bridge CFURLRef) tapSound;

    // Create a system sound object representing the sound file.
    AudioServicesCreateSystemSoundID (

                                  soundFileURLRef,
                                  &soundFileObject
                                  );
    [alarmToneIdList addObject:[NSNumber numberWithUnsignedLong:soundFileObject]];
}

Вы можете воспроизводить звук, используя приведенный ниже код

AudioServicesPlaySystemSound([[alarmToneIdList objectAtIndex:row]unsignedLongValue]);

Для достижения этой цели ниже фреймворк нужно добавить в свой Xcode

AudioToolbox

Наконец, нижеприведенные заголовочные файлы необходимо импортировать в контроллер

#import AudioToolbox/AudioToolbox.h
#import AudioToolbox/AudioServices.h
0
ответ дан P.J.Radadiya 17 July 2012 в 15:35
поделиться

Обновлено для Swift 4 Воспроизведение из основного комплекта - только для iOS 11

import AVFoundation

var player: AVAudioPlayer?

Следующий код загружает звуковой файл и воспроизводит его, возвращая при необходимости ошибку.

guard let url = Bundle.main.url(forResource: "test", withExtension: "m4a") else { return }

    do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        try AVAudioSession.sharedInstance().setActive(true)

    guard let player = player else { return }

    player.play()

    } catch let error {
        // Prints a readable error
        print(error.localizedDescription)
    }
0
ответ дан Niall Kiddle 17 July 2012 в 15:35
поделиться

Сначала импортируйте этот фреймворк в ваш файл

#import <AVFoundation/AVFoundation.h>

Затем объявите экземпляр AVAudioPlayer.

AVAudioPlayer *audioPlayer;

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Name of your audio file" 
                                                          ofType:@"type of your audio file example: mp3"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
audioPlayer.numberOfLoops = -1;
[audioPlayer play];
3
ответ дан Jagat Dave 17 July 2012 в 15:35
поделиться

Swift 4.2

var soundFilePath = "\(Bundle.main.resourcePath ?? "")/test.m4a"
var soundFileURL = URL(fileURLWithPath: soundFilePath)

var player = try? AVAudioPlayer(contentsOf: soundFileURL)
player?.numberOfLoops = -1 //Infinite

player?.play()
0
ответ дан Tiw 17 July 2012 в 15:35
поделиться

Воспроизвести файл с расширением .caf, .m4a, .mp4, .mp3, .wav, .aif


Скачать следующие два файла из GitHub

SoundManager.h
SoundManager.m

Добавьте эти файлы в свой проект

Также добавьте аудиофайлы в папку ресурсов ( примеры файлов )

mysound.mp3, song.mp3

Импорт Заголовочный файл в нужном файле

#import "SoundManager.h"

И добавьте следующие две строки в - (void) viewDidLoad

[SoundManager sharedManager].allowsBackgroundMusic = YES;
[[SoundManager sharedManager] prepareToPlay];

Используйте следующую строку для воспроизведения звука (mysound.mp3 )

[[SoundManager sharedManager] playSound:@"mysound" looping:NO];

Используйте следующую строку для остановки звука (mysound.mp3)

[[SoundManager sharedManager] stopSound:@"mysound"];

Также вы можете воспроизводить музыку (song.mp3) как

[[SoundManager sharedManager] playMusic:@"song" looping:YES];

И можно остановить музыку как

[[SoundManager sharedManager] stopMusic];

Завершить Документация находится на GitHub

20
ответ дан Salim 17 July 2012 в 15:35
поделиться