- 2008-05-31 23:12
- android
Androidでmp3を再生する方法。
MediaPlayer
とっても簡単です。
MediaPlayer _mp; _mp = MediaPlayer.create(this, R.raw.music); try { _mp.prepare(); // 準備 _mp.start(); // 再生 } catch (IOException e) { //例外処理 }
たったこれだけです。
唯一の注意点はmusic.mp3ファイルをres/raw/ディレクトリに配置する必要があります。
MediaPlayerは上の例の他にもsetDataSource(…)でファイルを指定する事も出来ます。
この方法を使うと、読み取り権限を持つディレクトリであればファイルをどこに設置してもOKです。
本当に簡単ですね。
prepare()は再生準備のためのメソッドだそうです。
メディアファイルを設定したら呼出すのがルールだそうです。
と、API仕様書に書いています。
これはどういうことでしょう?
具体的に何をやっているのか分かりません。
ということで、具体的に見るためにandroid.jarを展開してMediaPlayer.classを逆コンパイルしてみました。
% jar vxf android.jar
% cd android/media
% jad MediaPlayer
% cd android/media
% jad MediaPlayer
そしてMediaPlayer.prepare()は…
public native void prepare() throws IOException;
いきなりnative…
何も分かりませんでした…orz
おわりに
不明点(prepare)が未だ残ったままですが、とても簡単に音楽ファイルを再生出来る事が分かりました。
Source Code
とりあえず、コピペで実行出来るよう、ソースコードを公開しておきます。
My3Test.java
package com.adamrocker.android.mp3; import java.io.IOException; import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Mp3Test extends Activity implements OnClickListener, OnCompletionListener { /* コンストラクタ作るのが面倒なので、フィールドで初期化 */ private final float FONT_SIZE = 35; private MediaPlayer _mp = null; private Button _btn = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); _btn = (Button) findViewById(R.id.btn); _btn.setTextSize(FONT_SIZE); _btn.setOnClickListener(this); } /** * メディアをセットする */ public void onStart() { super.onStart(); _mp = MediaPlayer.create(this, R.raw.music);//ファイルは res/raw/music.mp3 try { _mp.prepare(); } catch (IOException e) { e.printStackTrace(); } _mp.setOnCompletionListener(this); } /** * 音楽再生 */ public void onClick(View arg0) { if (_mp.isPlaying()) { _mp.pause(); _btn.setText("再生"); } else { _mp.seekTo(0); _mp.start(); _btn.setText("停止"); } } /** * 終了処理 */ public void onStop() { super.onStop(); if (_mp != null) { if (_mp.isPlaying()) { _mp.stop(); } _mp = null; } } /** * メディアファイルの再生が終わった時のイベント */ public void onCompletion(MediaPlayer arg0) { // 再生ボタン表示に切り替える _btn.setText("再生"); } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="再生" /> </LinearLayout>
関連のありそうなエントリ
- Newer: 第4回Android勉強会に参加してきました
- Older: はてコ - はてなブックマーク コメント -
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.adamrocker.com/blog/213/android_play_music.html/trackback/
- Listed below are links to weblogs that reference
- Androidでmp3を再生する from throw Life
