Android StudioでSoundPoolを使って音声を再生するコードを書いたのですが、エミュレータでは音が鳴るのに、実機では音が鳴らない問題に遭遇しました。
広告
Logcatを見てみると、以下のエラーメッセージが表示されていました。
E/NdkMediaExtractor: sf error code: -1010 E/SoundPool: Unable to load sample W/SoundPool: sample 1 not READY
SoundPoolの音声ファイルの読み込みに失敗しているようでした。エラーメッセージで検索しても解決策が見つからず、ソースコードを見ても問題がなく、途方に暮れていたのですが、Androidの公式ドキュメントの「サポートされているメディア形式」を見て、わかりました。
私は44.1kHz 32bitのwavファイルを使っていたのですが、サポートされているwavファイルのビットレートは8bitか16bitでした。
8 ビットと 16 ビットのリニア PCM(最大レートはハードウェアの上限値)。Raw PCM 録音のサンプリング レートは、8,000 Hz、16,000 Hz、44,100 Hz。
KotlinでのSoundPoolのコードの書き方については、以下の本に掲載されてます。