iOS:NSFileHandle和NSFileManger的使用
//建立控制代碼 - (void)configFileHandler:(NSString *)fileName { self.fileHandler = [self createFileHandleWithName:fileName isAppend:NO]; } - (NSFileHandle *)createFileHandleWithName:(NSString *)aFileName isAppend:(BOOL)isAppend {
NSFileHandle *fileHandle = nil; NSString *fileName = [self getFilePath:aFileName];int fd = -1; if (fileName) { if ([[NSFileManager defaultManager] fileExistsAtPath:fileName]&& !isAppend) { [[NSFileManager defaultManager] removeItemAtPath:fileName error:nil]; } int flags = O_WRONLY | O_APPEND | O_CREAT; fd = open([fileName fileSystemRepresentation], flags, 0644); } if (fd != -1) { fileHandle = [[NSFileHandle alloc] initWithFileDescriptor:fd closeOnDealloc:YES]; } return fileHandle; } //儲存音訊 #pragma mark - MVoiceRecognitionClientDelegate - (void)VoiceRecognitionClientWorkStatus:(int)workStatus obj:(id)aObj { switch (workStatus) {case EVoiceRecognitionClientWorkStatusNewRecordData: { /// 錄音資料回撥、NSData-原始音訊資料,此處可以用來儲存錄音 NSData *originData = (NSData *)aObj; [self.mutabelData appendData:originData]; break; } case EVoiceRecognitionClientWorkStatusStartWorkIng: { /// 識別工作開始,開始採集及處理資料 break; } case EVoiceRecognitionClientWorkStatusStart: { /// 檢測到使用者開始說話 break; } case EVoiceRecognitionClientWorkStatusFlushData: { /// 連續上屏、NSDictionary-中間結果 break; } case EVoiceRecognitionClientWorkStatusFinish: { /// 語音識別功能完成,伺服器返回正確結果、最終識別結果 break; } case EVoiceRecognitionClientWorkStatusError: { /// 發生錯誤 NSError-錯誤資訊 break; } case EVoiceRecognitionClientWorkStatusLongSpeechEnd: { /// 長語音結束狀態 [self endLongSpeechRecognition]; break; } default: break; } } //寫入音訊 - (void)endLongSpeechRecognition{ //關閉識別服務 [self.asrEventManager sendCommand:BDS_ASR_CMD_STOP]; [self.fileHandler writeData:self.mutabelData]; self.mutabelData = nil; } //懶載入 -(NSMutableData *)mutabelData{ if (!_mutabelData) { _mutabelData = [NSMutableData data]; } return _mutabelData; }
相關推薦
iOS:NSFileHandle和NSFileManger的使用
//建立控制代碼 - (void)configFileHandler:(NSString *)fileName { self.fileHandler = [self createFileHandleWithName:fileName isAppend:NO]; } - (NSFileHandle
iOS Swift4.0 Codable協議:JSON和模型的轉換
簡單說明 在OC中,以及Swift4.0之前,系統一直沒有一套資料解析的方法。在Swift4.0後,終於推出了Codable協議,可實現json資料和資料模型的相互轉換。 首先來下 Codable ,它其實是一個組合協議,有 Decodable 和 Enco
CCNA實驗:實驗二:交換機和路由器的IOS備份與恢復
實驗二:交換機和路由器的IOS備份與恢復 一、實驗目標 1.學會通過TFTP伺服器備份IOS; 2.學會通過TFTP伺服器還原IOS; 二、實驗步驟: 1.使用TFTP伺服器備份交換機IOS; 2.使用TFTP伺服器還原交換機IOS; 3.使用TFTP服務區備份
Bodymovin:Bodymovin和Lottie:把AE動畫轉換成HTML5/Android/iOS原生動畫 大殺器Bodymovin和Lottie:把AE動畫轉換成HTML5/Android/iOS原生動畫
轉自:https://www.cnblogs.com/zamhown/p/6688369.html 大殺器Bodymovin和Lottie:把AE動畫轉換成HTML5/Android/iOS原生動畫 前段時間聽部門老大說,Airbnb出了個移動端的動畫庫Lottie,可
iOS 5.0 後UIViewController新增:willMoveToParentViewController和didMoveToParentViewCon
在iOS 5.0以前,我們在一個UIViewController中這樣組織相關的UIView 在以前,一個UIViewController的View可能有很多小的子view。這些子view很多時候被蓋在最後,我們在最外層ViewController的viewDidLoad方法中,用addSubvie
IOS開發:尺寸和適配
iPhone裝置物理解析度是硬體所支援的,邏輯解析度是軟體可以達到的。代數裝置作業系統邏輯解析度(point)物理解析度(pixel)螢幕尺寸(對角線長度)縮放因子iPhone第一代iPhone 2GiOS 1320 x 480480 x 3203.5寸1x第二代iPh
iOS:使用NSRegularExpression正則去掉一串字串中所有的特殊字元和標點
/* 遍歷的模式,正則表示式匹配在指定options和range模式下匹配指定string,傳入block中可以獲取結果資訊 */ - (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options
iOS:FFmpeg視訊播放和直播框架
視訊直播和播放轉碼器框架 介紹: FFmpeg是一套可以用來記錄、轉換數字音訊、視訊,並能將其轉化為流的開源計算機程式。採用LGPL或GPL許可證。 它提供了錄製、轉換以及流化音視訊的完整解決方案。它包含了非常先進的音訊/視訊編解碼庫libavcodec,為了保證高可移植性和編解碼質量,l
iOS開發之opencv學習筆記一:下載和安裝
1. opencv是什麼? opencv是一個基於BSD開源協議的影象處理開源庫,截止本人編輯時間:2017年6月1日,最新版本為3.2.0。 2.哪裡可以得到opencv的原始碼以及不同平臺的動態庫? opencv的官方地址為http://opencv.org/,可以在這
ios菜鳥之路:uiscrollview和pagecontrol的使用方法
一、UIScrollview以及pagecontrol的宣告 @interface rootViewController : UIViewController<UIScrollViewDelegate>//加上scrollviewdelegate的協議 @pro
【iOS開發】 iOS如何選擇圖片載入方式:imageNamed和imageWithContentsOfFile的區別
iOS記憶體稀缺,而圖片資源通常又是最佔記憶體的部分之一,因此,選擇如何載入圖片,對於優化應用記憶體佔用量,能起到立竿見影的效果。通常載入圖片的方式有兩種: 一、imageNamed 為什麼有兩種方法完成同樣的事情呢?imageNamed的優點在於可以快
ios:畫直線和虛線
實線 //獲得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); //畫直線,設定路徑顏色 CGContextSet
C++筆記(5):繼承和多態代碼實現
c++筆記 esp 變量 main style cnblogs radius 區分 fine Shape.h 1 #ifndef SHAPE_H 2 #define SHAPE_H 3 #include<string> 4 using std::str
函數內部屬性:arguments和 this
使用 指向 調用函數 class code 問題 log 實現 作用 在函數內部,有兩個特殊的對象: arguments和 this。 arguments是一個類數組對象,包含著傳入函數中的所有參數, 主要用途是保存函數參數。 但這個對象還有一個名叫 callee的屬性,該
兩款 Mac 上知名的防休眠工具:Caffeine 和 Amphetamine
標簽頁 enter 程序 屏幕 retina nes 設計 系統 tac 本文標簽: Mac效率工具 Mac小工具 Caffeine Amphetamine Mac 在停止操作一段時間之後會進入休眠狀態。倘若在演示 Keynote 時突遭黑屏,或者在播放電影中忽然罷工,都
JavaScript運算符:遞增和遞減(++i,--i 和 i++,i-- 的區別)
nbsp key mic comment 包含 -- 效應 1+n com 遞增和遞減操作符直接借鑒自C,而且各有兩個版本:前置型 (遞增 ++i ,遞減 --i )和 後置型 (遞增 i++ ,遞減 i-- )。書本上對兩者的定義是:前置型應該位於要操作的變量之前,而後置
ios學習8_KVC和字典轉模型
strong format des source -a ldr orm resource undle Key Value Coding是cocoa的一個標準組成部分,它能讓我們能夠通過name(key)的方式訪問屬性,某些情況下極大地簡化了代碼。可稱之為cocoa的大招
《C#圖解教程》讀書筆記之四:類和繼承
intern html pan 類中訪問 ted obj 小寫 his new 本篇已收錄至《C#圖解教程》讀書筆記目錄貼,點擊訪問該目錄可獲取更多內容。 一、萬物之宗:Object (1)除了特殊的Object類,其他所有類都是派生類,即使他們沒有顯示基類定義。
【2017-05-22】WebForm內置對象:Application和ViewState、Repeater的Command用法
操作數 傳值 rep 服務器 創建 bject bsp strong () 一、內置對象 1、Application 存貯在服務器端,占用服務器內存生命周期:永久 所有人訪問的都是這一個對象 傳值:傳的是object類型可以傳對象。 string s =TextBox1.T
關於協程:nodejs和golang協程的不同
eight fun 插入 ber ise 最大 機制 引用 data nodejs和golang都是支持協程的,從表現上來看,nodejs對於協程的支持在於async/await,golang對協程的支持在於goroutine。關於協程的話題,簡單來說,可以看作是非搶占式的