2010-11-24

mediaplayerを作ってみる(2)

そういえば、一応目標を。と言うか、理想の完成形を。

1・・・SDカードのいくつかのディレクトリから音楽ファイルを読み込む。
2・・・ListViewに表示する。
3・・・ListViewをタッチすると音楽が聴ける。
4・・・ディレクトリ内で連続再生 。
5・・・ディレクトリをまたいで連続再生。
6・・・ランダム再生。

こんな感じ。

前回のでは、曲が終わると止まってしまう。
まず、これを何とかしようと。ここなどを参考に。(ちょっと下の方)

OnCompletionListenerとやらで、何とかなりそう。
 変更点だけ書いていきます。

フィールドの
private static int num = 0; を private int musicNum; に
なんかこの方が良さそうなので。

implementsに MediaPlayer.OnCompletionListener を追加。

//mpの生成 のとこを

mp = new MediaPlayer();
mp.setOnCompletionListener(this); //ここと
musicNum = 0; //ここを追加

で、一番下に

     public void onCompletion(MediaPlayer mp) {
        if (++musicNum < musicList.size()) playMusic();
        else {
            musicNum = 0;
            playMusic();
        } 
    }

を追加。
で、このままだと1曲終わるまで動きが確認できないのでボタンを1つ追加。

    <Button
        android:id="@+id/skip_button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/skip_button">
    </Button>

ボタンのテキストをstringに追加。

    <string name="skip_button">skip</string>

なんか英語。あってるんだろうか。英語力がないのが残念。

で、↓を追加。他のボタンの下あたりに適当に。

btnSkip = (Button)findViewById(R.id.skip_button);
btnSkip.setOnClickListener(this);

この書き方でなく、ここを参考にして書き直したほうがいいかも。
僕は、まあ、そのうち。

それと、ボタンイベントを追加。btnStopの次に。(else ifの { の閉じた後)

} else if (view == btnSkip) {
                int duration = mp.getDuration();
                mp.seekTo(duration - 3000);
}

 これで、残り3秒まで飛びます。続けて再生してるか確認しやすい。
最近気づきました。

実は一度、完成形間近まで作ったんですが、コードが読みにくいし、
ちょっと行き詰まったので、ここに書きながら作り直してます。

まあ、それはそれで動いてるんですが。あまり色々操作をしなければ。
例の8円運用 is01に 取り込んでみて、今もそれで音楽を聴いてます。

でもねー、なんかねー、と言う感じなんですわ。色々と。
なので、あせらず急がず。ちょとづつ。なるべく、読みやすく。

いつか、完成するんだろうか。しないかも。
まあ、それはそれで。

0 件のコメント:

コメントを投稿