C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

音声メディアを再生するには, メディアプレイヤー(MediaPlayer)クラスを使う.



MediaPlayerクラスは, MP3やAAC LP/LTP等のメディアデータを再生することができる.
再生可能なメディアの種類については, 以下を参照.
http://developer.android.com/intl/ja/guide/appendi...

音声メディアの再生(準備(同期))

  • MeidaPlayer01.java
    • MediaPlayerのインスタンスを生成する.
    • MediaPlayer#setDataSourceメソッドで, 再生する音声メディアを指定する.
    • MediaPlayer#prepareメソッドで, メディア再生の準備(同期)をする.
    • MediaPlayer#startメソッドで, メディア再生を開始する.
    • 再生コントロールは, 以下のメソッドが利用可能.
      • VideoView#startメソッド:再生開始
      • VideoView#stopメソッド:再生停止
      • VideoView#pauseメソッド:一時停止
      • VideoView#seekToメソッド:シーク
package com.moonlight_aska.android.mediaplayer01;

import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;

public class MediaPlayer01 extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    MediaPlayer player = new MediaPlayer();
    try {
      // 音声メディアの指定&再生
      player.setDataSource("/sdcard/MusicSample/sample.m4a");
      player.prepare();
      player.start();
    } catch (IllegalArgumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IllegalStateException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  @Override
  protected void onDestroy() {
    // TODO Auto-generated method stub
    Log.v("MediaPlayer", "onDestroy");
    super.onDestroy();
    if (player.isPlaying()) {
      player.stop();
    }
    player.release();
  }
}

音声メディアは, 以下のように指定してもよい.
// FileInputStreamのインスタンスを生成
final FileInputStream stream = new FileInputStream("/sdcard/MusicSample/sample.m4a");
// ファイルディスクリプタを設定
player.setDataSource(stream.getFD());

音声メディアの再生(準備(非同期))

  • MeidaPlayer02.java
    • 再生終了イベントを取得するために, OnCompletionListenerインタフェースを実装する.
    • MediaPlayerのインスタンスを生成する.
    • MediaPlayer#setDataSourceメソッドで, 再生する音声メディアを指定する.
    • MediaPlayer#prepareAsyncメソッドで, メディア再生の準備(非同期)をする.
    • MediaPlayer#setPreparedListenerメソッドでリスナを設定する.
    • 準備完了イベントが発生するとonPreparedメソッドが呼ばれるので, MediaPlayer#startメソッドでメディア再生を開始する.
package com.moonlight_aska.android.mediaplayer02;

import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.util.Log;

public class MeidaPlayer02 extends Activity implements OnPreparedListener {
  MediaPlayer player = null;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    player = new MediaPlayer();
    try {
      player.setDataSource("/sdcard/MusicSample/sample.m4a");
      player.prepareAsync();
      player.setOnPreparedListener(this);
    } catch (IllegalArgumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IllegalStateException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  @Override
  public void onPrepared(MediaPlayer mp) {
    // TODO Auto-generated method stub
    Log.v("MediaPlayer", "onPrepared");
    player.start();
  }

  @Override
  protected void onDestroy() {
    // TODO Auto-generated method stub
    Log.v("MediaPlayer", "onDestroy");
    super.onDestroy();
    if (player.isPlaying()) {
      player.stop();
    }
    player.release();
  }
}



コメントをかく


ユーザーIDでかく場合はこちら
「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

AD



管理人のみ編集できます