iOS播放系統音訊的幾種方式
播放系統音訊的幾種方式
- 系統提示音的播放,有一個很方便的工具類AudioToolbox
參照這裡的系統提示音id對照表
#import <AudioToolbox/AudioToolbox.h>
//播放系統提示音,通過自動定義好的soundID就可以直接播放
SystemSoundID soundIDTest = 1007;
AudioServicesPlaySystemSound(soundIDTest);
- 這個工具類還可以播放自定義的聲音檔案,通過AudioServicesCreateSystemSoundID建立一個soundId就能播放
#import <AudioToolbox/AudioToolbox.h>
//播放test.wav檔案
static SystemSoundID soundIDTest = 0;//當soundIDTest == kSystemSoundID_Vibrate的時候為震動
NSString * path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"];
//這個path也可以是系統音訊資料夾的位置
//提示音音訊檔案位置:/System/Library/Audio/UISounds
//電話音訊檔案位置:/Library/Ringtones
//NSString * path = @"/Library/Ringtones/Waves.m4r"
if (path) {
AudioServicesCreateSystemSoundID( (__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundIDTest );
}
AudioServicesPlaySystemSound( soundIDTest );
- 用AVFoundation播放,這個有更多的控制功能,帶有delegate
NSString *filePath = [mainBundle pathForResource:@"MySong"ofType:@"mp3"];//獲取音訊檔案
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSError *error = nil;
//可以通過NSData初始化,也可以通過FileUrl
self.audioPlayer = [[AVAudioPlayer alloc] initWithData:fileDataerror:&error];
//fileUrl初始化
//NSURL *url = [NSURL fileURLWithPath:filePath];
//AVAudioPlayer *avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
if (self.audioPlayer != nil)
{
self.audioPlayer.delegate = self;
if ([self.audioPlayer prepareToPlay] &&[self.audioPlayer play])
{
//成功播放音樂
} else {
//播放失敗
}
} else {
/*
無法例項AVAudioPlayer
*/
}
#pragma mark - 播放器代理方法
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
NSLog(@"音樂播放完成...");
}
疑問
既然iOS的檔案系統是有沙盒隔離的,為什麼直接訪問系統音訊的兩個系統目錄卻有許可權?
相關推薦
iOS播放系統音訊的幾種方式
播放系統音訊的幾種方式 系統提示音的播放,有一個很方便的工具類AudioToolbox 參照這裡的系統提示音id對照表 #import <AudioToolbox/AudioToolbox.h> //播放系統提示音,通過自動定義好的s
iOS 連線外設的幾種方式
聯絡人:石虎 QQ:1224614774 暱稱: 嗡嘛呢叭咪哄 &
iOS 執行緒同步幾種方式
多執行緒同步目的有以下幾個方面:第一,對一段程式碼的執行進行保護,如果同時執行一段程式碼,中間的臨時變數可能會互相干擾造成結果不對;第二,對資源的保護,多個執行緒執行不同的程式碼,但是可能涉及同一個資源;第三,訊息傳遞,一個執行緒通知另外一個執行緒發生了一件事。
IOS 之資料庫 的幾種方式
在iOS開發過程中,不管是做什麼應用,都會碰到資料儲存的問題。將資料儲存到本地,能夠讓程式的執行更加 流暢,不會出現讓人厭惡的菊花形狀,使得使用者體驗更好。下面介紹⼀一下資料儲存的方式: 1.NSKeyedArchiver:採用歸檔的形式來儲存資料,該資料物件需要遵守NSCoding協議,並且該物件對應
iOS 資料儲存的幾種方式
在iOS開發過程中常用的本地化儲存有五種方式: 1.plist (XML屬性列表歸檔 NSArray\NSDictionary) 2.preference (偏好設定\NSUserDefaults) (本質還是通過plist來儲存資料,但是使用更加簡單,無需關注檔案、資料夾
Java播放聲音的幾種方式
課程設計用的方法 import Java.applet.AudioClip; import java.io.*; import java.applet.Applet; import java.awt.Frame; import java.NET.Malformed
應用系統之間數據傳輸的幾種方式
導致 最簡 批量 發生 插入 響應報文 開放 src www 轉載自:http://www.cnblogs.com/aigongsi/archive/2012/04/26/2413646.html 隨著近年來SOA(面向服務技術架構)的興起,越來越多的應用系統開始進行分布式
iOS代碼加密的幾種方式
red .sh 最簡 應用安全 adr 變量名 尋找 技術分享 混淆 眾所周知的是大部分iOS代碼一般不會做加密加固,因為iOS APP一般是通過AppStore發布的,而且蘋果的系統難以攻破,所以在iOS裏做代碼加固一般是一件出力不討好的事情。萬事皆有例外,不管iOS、a
Linux系統軟件安裝的幾種方式
rpm包管理 沒有 hat 步驟 xxx 安裝步驟 ger 所有 最好 Linux系統,一個文件能不能執行看的是有沒有可執行權限x,不過真正的可執行文件是二進制文件(binary file),舉例來說Linux上的c語言源碼編寫完後,通過gcc程序編譯後就可以創建一個可執
iOS關於載入圖片的幾種方式選擇
最近在開發過程中遇到一些效能優化的東西,這次來說說關於圖片載入的效能優化和選擇。 大家都知道建立UIImage常用以下幾種方式 + (nullable UIImage *)imageNamed:(NSString *)name; // load from main bundle
iOS中保證執行緒安全的幾種方式與效能對比
一、前言 前段時間看了幾個開源專案,發現他們保持執行緒同步的方式各不相同,有@synchronized、NSLock、dispatch_semaphore、NSCondition、pthread_mutex、OSSpinLock。後來網上查了一下,發現他們的實現機制各不相同,效能也各不一
Linux系統中安裝軟體的幾種方式
目錄 紅帽派: Linux有很多種發行版本,各種發行版本之間安裝軟體方式和命令不一樣,同一個版本之間安裝軟體也有不同的方法。但是,大體來說,Linux有兩大派系,一個是紅帽派系,包含Redhat、Centos、Fedora等。還有一個是Debian
iOS 實現圖片圓角的幾種方式
第一種方法:通過設定layer的屬性 最簡單的一種,但是很影響效能,一般在正常的開發中使用很少. UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 10
C語言獲取系統時間的幾種方式
C語言中如何獲取時間?精度如何? 1 使用time_t time( time_t * timer ) 精確到秒 2 使用clock_t clock() 得到的是CPU時間 精確到1/CLOCKS_PER_SEC秒 3 計算時間差使用double difftime( time_t timer1, time_
Android開發——去掉系統自帶標題欄的幾種方式
今天在練習自定義標題欄(Android初級開發(四)——補充3)的過程中遇到了隱藏系統自帶標題欄的問題,現將幾種去掉系統自帶標題欄的方式做一總結。大體上可以分為兩種方式,一種是修改xml檔案(這種方式產生的效果作用於所有Activity),一種是編碼實現(這種方式產
iOS NSthread & Thread 開啟執行緒的幾種方式
一、開啟執行緒執行指定物件的方法 /** 引數1: 執行引數2方法的物件 引數2: 開啟執行緒後執行的方法 引數3: 傳遞的物件資料(引數2的方法可以直接用) */ // OC - (
應用系統之間資料傳遞的幾種方式
隨著近年來SOA(面向服務技術架構)的興起,越來越多的應用系統開始進行分散式的設計和部署。 系統由原來單一的技術架構變成面向服務的多系統架構。 原來在一個系統之間可以完成的業務流程,通過多系統的之間多次互動來實現。 這裡不打算介紹如何進行S
C語言獲取系統時間的幾種方式 !
四.設定計時器 定義TIMER ID #define TIMERID_JISUANFANGSHI 2 在適當的地方設定時鐘,需要開始其作用的地方; SetTimer(TIMERID_JISUANFANGSHI,200,NULL); 在不需要定時器的時候的時候銷燬掉時鐘 KillTimer(TIMERID_J
【C獲取系統時間】C語言獲取系統時間的幾種方式
C 語言中如何獲取時間?精度如何? 1 使用 time_t time( time_t * timer ) 精確到秒 2 使用 clock_t clock() 得到的是 CPU 時間 精確到 1/CLOCKS_PER_SEC 秒 3 計算時間差使用 double difftime( time_t tim
iOS中ViewController載入View的幾種方式
ViewController 載入 View 的方式有: 建立 ViewController 的同時載入 View,此種方式可分別通過載入關聯1了 VC 的 xib,或純程式碼建立實現。相關的呼叫方法有: init 載入關聯了 VC 的 xib,或者純