Javaの層はandroid_media_AudioTrack_get_min_buff_sizeネイティブ層()最小サイズオーディオトラックバッファを呼び出し決定し、この大きさに基づいているAudioTrackを作成
// ------------------------------------------------ ---------------------------- //ストリーミングAudioTrackを正しく作成するために最低限必要なサイズを返します // -1を返しあった場合ハードウェアを照会エラーでした。 静的JINT android_media_AudioTrack_get_min_buff_size(JNIEnvの* ENV、jオブジェクトthiz、 JINT sampleRateInHertz、JINT channelCount、JINTのAudioFormat){ size_tのframeCount。 constのstatus_t状態= AudioTrack :: getMinFrameCount(&frameCount、AUDIO_STREAM_DEFAULT、 sampleRateInHertz)。 (!ステータス= NO_ERROR){場合 ALOGE( "サンプルレート%dのAudioTrack :: getMinFrameCount()は、ステータス%dで失敗しました"、 sampleRateInHertz、ステータス) 戻り-1; } CONST audio_format_t形式= audioFormatToNative(のAudioFormat)。 IF(audio_has_proportional_frames(形式)){ CONST size_tのbytesPerSample = audio_bytes_per_sample(フォーマット)。 frameCount * channelCount * bytesPerSampleを返します。 }他{ frameCountを返します。 } }