BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Oboe、低レイテンシAndroidオーディオアプリのためのライブラリ

Oboe、低レイテンシAndroidオーディオアプリのためのライブラリ

原文(投稿日:2018/10/22)へのリンク

GoogleがOboeの最初のプロダクションレディ・バージョンをリリースした。OboeはAndroidで高性能オーディオアプリを構築するためのC++ライブラリで、99%のAndroidデバイスで最低のレイテンシを実現する。

音楽ゲームやオーディオアプリを作る開発者は、通常、レイテンシの問題に対処する必要がある。Oboeは、API 16+ (Jelly Bean)互換のシンプルなAPIを提供することで、レイテンシの問題を解決することを目指している。内部的に、API 27+ (Oreo MR1)ではAAudioの性能と機能を活用し、API 16+ではOpenSL ESを使用する。

AAudioは低レイテンシを必要とする高性能オーディオアプリケーション用に設計されたAndroid C APIで、Android Oで導入された。アプリはストリームにデータを読み書きすることでAAudioとやりとりする。

AndroidのOpenSL ESは、Khronos GroupによるOpenSL ES API仕様の実装だ。AAudioと同様に、このライブラリも低レイテンシを必要とする高性能オーディオアプリケーション用に設計された。加えて、MediaPlayerおよびMediaRecorder APIに似たオーディオ機能も提供する。

Oboeを使うには、Android NDK r17以上が必要になる。Android Studio SDK Manager経由もしくは直接ダウンロードすることでインストールできる。

Android NDK r17以上をインストールしたら、GitHubリポジトリをクローンして、CMakeLists.txtファイル(このファイルがない場合は、プロジェクトにC++サポートを追加する必要がある)の末尾に以下のコマンドを追加する。

cmake_minimum_required(VERSION 3.4.1)

# 自分のネイティブライブラリのビルド
add_library (native-lib SHARED src/main/cpp/native-lib.cpp )

# ネイティブライブラリが依存するライブラリを指定、Obeoを含む
target_link_libraries (native-lib log oboe)

# Oboeライブラリのビルド
set (OBOE_DIR ../../../oboe)
add_subdirectory (${OBOE_DIR} ./oboe)

# アプリがOboeのパブリックヘッダーを使えるようにする
include_directories (${OBOE_DIR}/include)

数行でオーディオストリームを作成できる。

AudioStreamBuilder builder;
AudioStream *stream = nullptr;
Result result = builder.openStream(&stream);

詳しくは、ドキュメント, APIリファレンスサンプルコードを参照してほしい。加えて、Oboeを使ったシンプルな音楽ゲームを構築できるcodelabもある。このゲームの目標は、耳にした拍手のパターンをまねて画面をタップすることだ。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT