日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 高性能音频】Oboe 开发流程 ( 创建并设置 AudioStreamCallback 对象 | 打开 Oboe 音频流 | 日志封装 logging_macros.h )

發布時間:2025/6/17 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 高性能音频】Oboe 开发流程 ( 创建并设置 AudioStreamCallback 对象 | 打开 Oboe 音频流 | 日志封装 logging_macros.h ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、創建并設置 AudioStreamCallback 對象
  • 二、打開 Oboe 音頻流
  • 三、日志封裝



Oboe GitHub 主頁 : GitHub/Oboe

  • ① 簡單使用 : Getting Started

  • ② Oboe 全指南 : Full Guide To Oboe

  • ③ Oboe API 參考 : API reference

  • ④ Android 音頻框架發展 : Android audio history


在 【Android 高性能音頻】Oboe 開發流程 ( 導入 Oboe 庫 | 使用預構建的二進制庫和頭文件 | 編譯 Oboe 源碼 ) 博客中介紹了 如何導入 Oboe 函數庫到項目中 , 本博客中在導入 Oboe 函數庫的基礎上 , 進行 Oboe 播放器功能開發 ;

在 【Android 高性能音頻】Oboe 開發流程 ( 包含頭 Oboe 頭文件 | 創建音頻流 | 設置音頻流 | 音頻流回調類 AudioStreamCallback ) 介紹了如何創建 AudioStreamBuilder , 以及 創建 AudioStreamCallback 回調 ;





一、創建并設置 AudioStreamCallback 對象



在上一篇博客 【Android 高性能音頻】Oboe 開發流程 ( 包含頭 Oboe 頭文件 | 創建音頻流 | 設置音頻流 | 音頻流回調類 AudioStreamCallback ) 中定義了 AudioStreamCallback 回調類 ;

此處 創建該 自定義 AudioStreamCallback 對象 , 并將其設置給 AudioStreamBuilder 對象 ;

注意要在堆內存中創建 AudioStreamCallback 對象 , 不能在棧內存中創建 , 否則方法執行完畢后 , 該對象會被自動回收 , 因此在使用完畢后 , 要及時釋放該對象 ;

調用 AudioStreamBuilder 的 setCallback 方法設置 AudioStreamCallback 對象時 , 需要設置的類型是 AudioStreamCallback * 指針類型 ;

代碼示例 :

// 創建 MyCallback 對象 MyCallback myCallback = MyCallback();// 設置回調對象 , 注意要設置 AudioStreamCallback * 指針類型 builder.setCallback(&myCallback);// 在未來某個時間 , 釋放該 堆內存中的 對象 delete myCallback;



二、打開 Oboe 音頻流



首先 聲明并創建 Oboe 音頻流 , 這里在棧內存中創建 ;

// 聲明 Oboe 音頻流oboe::ManagedStream managedStream = oboe::ManagedStream();

打開音頻流 , 調用 AudioStreamBuilder 創建器的 openManagedStream 方法 , 傳入的參數是 oboe::ManagedStream 類型參數 , 直接將 managedStream 傳入即可

// 通過 AudioStreamBuilder 打開 Oboe 音頻流oboe::Result result = builder.openManagedStream(managedStream);

另外一種方式 : 如果使用 new 在堆內存中創建 ManagedStream , 可以進行如下操作 :

注意 打開音頻流 , 調用 AudioStreamBuilder 創建器的 openManagedStream 方法 , 傳入的參數是 oboe::ManagedStream 類型參數 , 目前的 managedStream 是指針類型 , 因此需要使用 * 符號 , 取出地址中的 ManagedStream 對象數據 ;

// 聲明 Oboe 音頻流oboe::ManagedStream *managedStream = new oboe::ManagedStream;// 通過 AudioStreamBuilder 打開 Oboe 音頻流oboe::Result result = builder.openManagedStream(*managedStream);

部分代碼示例 :

// 聲明 Oboe 音頻流oboe::ManagedStream managedStream;// 通過 AudioStreamBuilder 打開 Oboe 音頻流oboe::Result result = builder.openManagedStream(managedStream);// 打印 Oboe 音頻流創建結果if (result != oboe::Result::OK) {LOGE("Failed to create stream. Error: %s", oboe::convertToText(result));}else{LOGE("Success to create stream. Result: %s", oboe::convertToText(result));}

執行結果 :

2020-10-14 16:43:29.149 12156-12156/kim.hsl.oboedemo I/octopus: AudioStreamBuilder 創建完畢 2020-10-14 16:43:29.162 12156-12156/kim.hsl.oboedemo E/octopus: Success to create stream. Result: OK



三、日志封裝



Google 中提供了一個很好的 log 封裝頭文件 , logging_macros.h , 很多官方示例中都使用這個頭文件 ;

#ifndef __SAMPLE_ANDROID_DEBUG_H__ #define __SAMPLE_ANDROID_DEBUG_H__ #include <android/log.h>#if 1 #ifndef MODULE_NAME #define MODULE_NAME "octopus" #endif#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, MODULE_NAME, __VA_ARGS__) #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, MODULE_NAME, __VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, MODULE_NAME, __VA_ARGS__) #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,MODULE_NAME, __VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,MODULE_NAME, __VA_ARGS__) #define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,MODULE_NAME, __VA_ARGS__)#define ASSERT(cond, ...) if (!(cond)) {__android_log_assert(#cond, MODULE_NAME, __VA_ARGS__);} #else#define LOGV(...) #define LOGD(...) #define LOGI(...) #define LOGW(...) #define LOGE(...) #define LOGF(...) #define ASSERT(cond, ...)#endif#endif // __SAMPLE_ANDROID_DEBUG_H__

總結

以上是生活随笔為你收集整理的【Android 高性能音频】Oboe 开发流程 ( 创建并设置 AudioStreamCallback 对象 | 打开 Oboe 音频流 | 日志封装 logging_macros.h )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩人妻无码一区二区三区 | 白白色视频在线 | 91精品国产aⅴ一区二区 | 国产视频久久久久久久 | av在线三区 | 国产一区二区三区91 | 2023毛片| 亚洲欧洲日韩在线 | 日韩欧美在线视频播放 | 日本人做爰全过程 | 裸体男女树林做爰 | 黄色网占 | 欧美韩日国产 | 日韩欧美综合一区 | 丝袜老师办公室里做好紧好爽 | 国产第一精品 | 手机在线毛片 | 亚洲一区二区小说 | 亚洲欧美日韩激情 | 一本色道久久综合狠狠躁 | 日韩亚洲一区二区三区 | 五月婷婷综合久久 | 小泽玛利亚一区二区三区在线观看 | 男男成人高潮片免费网站 | 欧美色吊丝 | 综合视频一区 | 欧美综合图片 | 人人艹在线 | 久久网址 | 色女生影院 | 少妇激情一区二区三区视频 | 精品国产18久久久久久 | 国产一区二区三区视频在线 | 国产精品美女久久久 | 激情六月综合 | 国产成人在线精品 | 青青青免费在线视频 | 色很久 | 亚洲久久一区二区 | 中文字幕一区二区三区久久久 | 久久久久精彩视频 | 亚洲精品一区二区18漫画 | 在线中文字幕日韩 | 亚洲国产一区视频 | 肉色丝袜脚交一区二区 | av在线入口| 成人精品在线 | 成人高潮片免费视频 | 中国少妇毛片 | 天天干妹子| 欧美美女一区二区 | 国内久久| 欧美色综合天天久久综合精品 | 亚洲国产欧美日韩在线 | 日韩欧| 日日麻批免费视频播放 | 国产一区二区色 | 操到喷水 | www.欧美| 好爽…又高潮了毛片免费看 | 精品影视 | 少妇一晚三次一区二区三区 | 亚洲AV无码精品黑人黑人 | www.四虎精品 | 日本黄色xxx| 日本人与黑人做爰视频 | 天天干b | 午夜不卡久久精品无码免费 | 久久天天躁狠狠躁夜夜av | 成人开心激情 | 欧美激情综合色综合啪啪五月 | 欧美性生交xxxxx久久久 | 国产精品乱 | 在线网站黄 | 亚洲毛片在线免费观看 | 国产又大又长又粗 | 不卡免费视频 | 少妇的被肉日常np | 免费观看理伦片在线播放视频软件 | 欧美一区二区国产 | 日本h视频在线观看 | 国产jizz18女人高潮 | 欧美福利在线观看 | 波多野结衣av一区二区全免费观看 | 老熟女重囗味hdxx69 | 91福利一区 | 色综合成人 | 亚洲欧美va天堂人熟伦 | 一二三四视频社区在线 | 美女网站免费黄 | 年代下乡啪啪h文 | 黄在线观看免费 | 伊人网久久久 | 国产成人av一区二区三区 | 女人18片毛片60分钟 | 亚洲综合一区二区 | 草草影院国产第一页 | 51国产偷自视频区视频 | 日本一区二区三区四区五区 |