再挑戦:Androidで動画再生

動画再生に再挑戦しました。
きっかけは公式開発者コミュニティをぼぅと眺めていたときのことです。

http://groups.google.com/group/android-developers

よく見たら一番下にファイルのダウンロードがあるではないですか。しかもファイル名がMediaPlayerTest。さらにその少し上にはPagesなるものがあり、Media Sample Appsなる記述。

http://groups.google.com/group/android-developers/web/media-sample-apps

読んでみたらGoogleの中の人であるMeghaさんが三月にサンプルアプリをこんなところで公開していたのですね。公式はやっぱり読まなきゃダメだなぁ、でもBlogでも紹介してほしかったなぁとか色々思いつつ早速ダウンロードしました。


アプリは全部で3つあります。MediaPlayerTest, MediaRecorder, VideoViewDemoです。
最後のを見てまたひっくり返ったのですが、VideoViewなんてあったんですね。
ドキュメントのList of views, View Galleryになかったじゃないかぁ、とかMediaPlayerのドキュメントにリンクするべきでしょうとか思ったのですがandroid.widgetのパッケージにはドキュメントがしっかりありました。くやしい。
ここらへんがまだβ版故の楽しみですね。


VideoViewDemoのコードを読むとわかりますが動画再生のコードは目茶苦茶簡単です。
もう数行です。MediaControlerが同じくandroid.widgetにあるためほんの数行で動きます。
あんまり簡単なので全部コード載っけてしまいましょう。
なお、onCompletionは動くかどうか自分が付け加えたのものです。

public class VideoViewDemo extends Activity implements OnCompletionListener {
    /** Called when the activity is first created. */
    private String path = "/tmp/smile.mp4";
    private VideoView mVideoView;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        setContentView(R.layout.videoview);
        mVideoView = (VideoView) findViewById(R.id.surface_view);
        mVideoView.setVideoPath(path);
        mVideoView.setMediaController(new MediaController(this));
        mVideoView.setOnCompletionListener(this);
        mVideoView.requestFocus();
    }

	@Override
	public void onCompletion(MediaPlayer mp) {
		mp.seekTo(0);
		mp.start();
	}
}


プログラムはご覧のように動画ファイルのパスを設定して、メディアコントローラを設定して、完了リスナーを設定してフォーカスしてるだけです。
onCompletionにて巻き戻し、及び再再生を行って無限にループさせてます。


MediaControllerは正直かなり出来が悪いです。ボタンを押しても反応が悪いし、一時停止と再生の表示が切り替わらないし、巻き戻し早送りは細かな操作ができないし、インジケータはタッチにて操作できません。でもこれらは全てβのせいでしょうから次はきっとよくなるでしょう。


動画は付属してきたのが3gpでしたがiPod第5世代向けは再生できるようです。
上の画面は某所で最近のお気に入りをダウンロードして以下のサイトのツールにてmp4に変換しました。

http://www.smallvideosoft.com/

また動画形式の変換に関しては以下のサイトを参考にさせていただきました。とても参考になりました。ありがとうございました。

http://www.vid-dl.net/wp/2007/07/flv-converter-tools/
http://www.linkclub.or.jp/~ma3ki/webutil/movies/youtube/dogahenkan-kun.html


動画は面倒くさいので/tmpにadb pushで放り込みました。/tmpはemulatorを再起動すると中身が消えますので注意してください。

Google I/Oにて新しいAndroidが紹介された件について

ダウンロードはまだか、ダウンロードは。