最終更新日:2024年4月30日
Android プラットフォームは、オーディオやビデオ、画像を簡単にアプリケーションに組み込めるよう、一般的なメディアタイプのエンコーディング/デコーディングの仕組みを提供している。Android はいろんな種類のデータソースからオーディオやビデオを再生できる。本実験では MP3 フォーマットのメディアを操作するがその他に Android がサポートするメディアタイプの詳細なリストについては、Android Media Formats を参照して下さい。
Android のメディア操作は、「android.media」パッケージで実現する。このパッケージには、オーディオやビデオをアプリケーション内で再生には MediaPlayer クラス、記録するためには MediaRecorder クラスが用意されている。それぞれのクラスが提供している主なメソッドを下記表1にまとめている。
クラス名 | メソッド名 | 概要 |
---|---|---|
MediaPlayer | ||
create() | MediaPlayer のインスタンス生成 | |
start() | MediaPlayer のインスタンス再生 | |
stop() | インスタンスの再生停止 | |
pause() | インスタンスの再生一時停止 | |
MediaRecorder | ||
prepare() | MediaRecorder のインスタンス生成 | |
start() | オーディオのキャプチャを開始 | |
stop() | キャプチャを一時停止 | |
release() | キャプチャを完了 |
Android では、アプリケーションのリソースに保存されているファイルから再生することもできるし、ファイルシステムに保存されているファイルからでも、ネットワークを介したストリーミング再生をすることもできる。本実験では、まずリソースに保存されているファイルからメディアを再生する方法を実施する。
再生するサウンドファイルをプロジェクトへ追加するため、下記の操作を行なう。尚、サウンドファイルは canvas 内 [ファイル > data] に格納されている。
MediaPlayer のクラスメソッド create() にて MediaPlayer のインスタンスを生成し、そのインスタンスの start() メソッドでメディアを再生する(下記サンプルコード)。
MediaPlayer mp;
mp = MediaPlayer.create(this, R.raw.media_resouce_name); // media_resouce_name には res フォルダに追加したメディアファイルの名前(拡張子なし)
mp.start();
再生するメディアファイルはファイルシステムもしくはWebのURLで指定可能です。
MediaPlayer のインスタンスを new で生成します。
続いて再生したいメディアが置かれているファイルシステムもしくは URL のパスを引数にして setDataSource() を呼びます。
最初に prepare() メソッドを実行し、その後 start() メソッドを呼びます。
停止する際は、インスタンスの stop() メソッドを呼ぶ。
後でメディアを最初からリプレイしたい場合は、インスタンスの prepare() メソッドを MediaPlayer オブジェクトの
start() メソッドを再度呼ぶ前に実行する必要がある。(インスタンス生成時の create() メソッドが実行された際に、prepare()
メソッドが内部的に呼ばれている)。
一時停止する場合は、インスタンスの pause() メソッドを呼ぶ。一時停止したところから再開する場合は再度直接インスタンスの start() メソッドを呼ぶ。
MediaPlayer mp_stream = new MediaPlayer();
mp_stream.setDataSource(this, Uri.parse("http://sc21vlweb01.cc.ag.aoyama.ac.jp/user/t23428/sleep_away.mp3"));
mp_stream.prepare();
mp_stream.start();
上記に加えて、アプリのネットワーク設定を用意する必要がある。
まず AndroidManifest.xml の application タグに以下を追記する。
<application
…
android:networkSecurityConfig="@xml/network_security_config"
…>
そして、res フォルダに xml フォルダーを作成し、その中以下の中身の "network_security_config.xml" という名の新規リソースファイルを作成する。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
上記説明を参考に、以下の内容を実施せよ
上記説明を参考に、以下の内容を実施せよ
下記「音を記録しファイルに保存する」の説明を参考に録音に必要な手順を参考ウェブサイトなどから完成させ、下記のように実装する。
デバイスからのオーディオのキャプチャは、オーディオ/ビデオの再生より少し複雑なる。下記、主な手順をまとめた。
録音できたファイルの書式は「○○.3gp」になります。EmulatorのDevice Exlplorerの「storage/emulated/0/Android/data/jp.aoyama.a123456.xxfirstandroidgui/」内にで確認できるアプリケーションのデータファイル。