動画を再生する方法 VideoView
VideoViewはSurfaceViewを継承したwidgetクラスで、実体はopenVideo()メソッドでMediaPlayerを呼び出しています。
MediaPlayerの呼び出しの際に、Uri型でURIを渡しています。String型のファイルバスの場合はUri型に変換して送っています。
つまりこの2つの形式の指定しかできません。
サンプルコード
VideoViewの実体コード
簡単に動画を再生したい場合はVideoView、詳細な指定をしたい場合や速度を重視した場合はMediaPlayerを選択するといいと思います。
MediaPlayerを継承しているため、MediaPlayerでの実装を行うときに動画が再生できる形式か確認する方法としてVideoViewを使用するのもいいかもしれません。
正確にはVideoView → MediaPlayer → pvPlayerまたはstagefright playerです。
[参考記事] 動画を再生する方法 MediaPlayer
[参考記事] 2.0/2.1以前で再生できる動画が2.2以降で再生できない
[参考記事] アプリからネットワーク通信を行う場合
動画ファイルは組み込みの動画であれば/res/rawフォルダ以下に置くようにします。
[参考記事] SDやdata、downloadなど各種ディレクトリパスの取得方法
サンプルコード
TestApp.java
package com.example.test; import android.app.Activity; import android.os.Bundle; import android.widget.VideoView; public class TestApp extends Activity{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String filePath = "/sdcard/test.3gp"; VideoView videoView = (VideoView) findViewById(R.id.video); videoView.setVideoPath(filePath); videoView.start(); } }
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" > <VideoView android:id="@+id/video" android:layout_width="300px" android:layout_height="100px" /> </LinearLayout>
VideoViewの実体コード
/frameworks/base/core/java/android/widget/VideoView.java
[参考記事] Androidのソースファイルを入手する方法
public class VideoView extends SurfaceView implements MediaPlayerControl { private void openVideo() { if (mUri == null || mSurfaceHolder == null) { // not ready for playback just yet, will try again later return; } // Tell the music playback service to pause // TODO: these constants need to be published somewhere in the framework. Intent i = new Intent("com.android.music.musicservicecommand"); i.putExtra("command", "pause"); mContext.sendBroadcast(i); // we shouldn't clear the target state, because somebody might have // called start() previously release(false); try { mMediaPlayer = new MediaPlayer(); mMediaPlayer.setOnPreparedListener(mPreparedListener); mMediaPlayer.setOnVideoSizeChangedListener(mSizeChangedListener); mDuration = -1; mMediaPlayer.setOnCompletionListener(mCompletionListener); mMediaPlayer.setOnErrorListener(mErrorListener); mMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener); mCurrentBufferPercentage = 0; mMediaPlayer.setDataSource(mContext, mUri, mHeaders); mMediaPlayer.setDisplay(mSurfaceHolder); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.setScreenOnWhilePlaying(true); mMediaPlayer.prepareAsync(); // we don't set the target state here either, but preserve the // target state that was there before. mCurrentState = STATE_PREPARING; attachMediaController(); } catch (IOException ex) { Log.w(TAG, "Unable to open content: " + mUri, ex); mCurrentState = STATE_ERROR; mTargetState = STATE_ERROR; mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0); return; } catch (IllegalArgumentException ex) { Log.w(TAG, "Unable to open content: " + mUri, ex); mCurrentState = STATE_ERROR; mTargetState = STATE_ERROR; mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0); return; } } }
関連記事
- ListViewにArrayAdapterを渡すサンプルコード(一覧項目から選択する場合のUI)
- assetsフォルダのファイルを扱う方法 AssetManager
- SDカードが接続されているかどうか知る方法 書き込み可能かどうか 読み込み可能かどうか
- SDカードの空き容量を調べる方法
- SDカードからサムネイル画像を取り出す getThumbnailメソッド
- 文字列の置き換えを行う方法 (replaceAllで気をつけること)
- 文字列の部分一致検索を行う方法
- 処理中を表すプログレスダイアログを表示する
- Java メモリー使用量を取得する方法
- SDカードに保存したファイルをギャラリーなどに反映させる方法
- 実行中のメソッド名やクラス名を取得する方法
- Singletonパターンを使ってクラスのインスタンスを1つにする(共有クラスのリソースを削減する方法)
- AndroidアプリでTextViewに使用できるフォントの一覧
- TextViewに独自フォントを使用する方法
- assetsフォルダには1MB以上の非圧縮ファイルを設置できない
- EditTextのソフトキーボードの『完了』を虫メガネアイコンなどに変更する方法
- Viewの表示・非表示を切り替える方法
- ファイルのテキストデータを読み込む
- テキストデータをファイルに書き込む BufferedWriterの使用例
- Webからダウンロードして保存する DefaultHttpClientの使用例
- ファイルをコピーする InputStream,OutputStreamの使用例
- 画像を拡大縮小する方法
- LinearLayout をスクロールさせる方法(ScrollViewの使用方法)
- アプリ起動時にスプラッシュ画面を表示させる方法
- WebViewの設定一覧
- WebViewを使ってWebサイトを表示する方法 WebKitからアプリ、アプリからWebKitへの連携処理
- 暗号化・複合化を行う ブロック暗号
- base64変換の一覧とその詳細サンプルコード
- 型変換の一覧(キャスト)
- 動画を再生する方法 MediaPlayer
- Androidでマルチスレッド処理をする方法
- 処理を一定時間停止させる方法
- SDやdata、downloadなど各種ディレクトリパスの取得方法
- ファイルの拡張子を取得する
- 実機内やエミュレータ内のファイルを操作する DDMS、adbとサンプルコード
スポンサーリンク