今更ですが、target は Android1.6です。
かなり変更してしまいました。2回に分けて載せときます。
とりあえず、string.xmlから。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">SDMP</string>
<string name="back_button">戻る</string>
<string name="next_button">進む</string>
<string name="start_button">再生</string>
<string name="pause_button">一時停止</string>
<string name="stop_button">停止</string>
<string name="skip_button">skip</string>
<color name="violet">#400a40</color>
<color name="black">#010101</color>
<color name="green">#40e91f</color>
<color name="red">#b00a0a</color>
</resources>
ボタンが増えて、色も変えてます。
次は、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"
android:background="@color/violet">
<TextView
android:id="@+id/titleView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="16sp"
android:background="@color/black"
android:textColor="@color/red">
</TextView>
<ListView
android:id="@+id/listView"
android:layout_width="fill_parent"
android:layout_height="240dp">
</ListView>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:background="@color/red">
<Button
android:id="@+id/backButton"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_weight="1"
android:gravity="center"
android:background="@color/black"
android:textColor="@color/red"
android:text="@string/back_button"
android:onClick="onClickBack">
</Button>
<Button
android:id="@+id/nextButton"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_weight="1"
android:gravity="center"
android:background="@color/black"
android:textColor="@color/red"
android:text="@string/next_button"
android:onClick="onClickNext">
</Button>
<Button
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_weight="2"
android:background="@color/black"
android:textColor="@color/red"
android:text="@string/start_button"
android:onClick="onClickStart">
</Button>
<Button
android:id="@+id/pauseButton"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_weight="1"
android:background="@color/black"
android:textColor="@color/red"
android:text="@string/pause_button"
android:onClick="onClickPause">
</Button>
<Button
android:id="@+id/stopButton"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_weight="1"
android:gravity="center"
android:background="@color/black"
android:textColor="@color/red"
android:text="@string/stop_button"
android:onClick="onClickStop">
</Button>
</LinearLayout>
<Button
android:id="@+id/skipButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/skip_button"
android:onClick="onClickSkip">
</Button>
</LinearLayout>
色と文字の配置が増えてます。前作ってたのより増えてる。色々。
次は、ListViewのレイアウト rowdata.xml。 res/layoutの下に配置。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/green">
</TextView>
ほぼ、javadrive。
次は、MusicPlayer classを載せときます。
package net.asasvata.sdmediaplayer;
import java.io.File;
import java.util.ArrayList;
import android.media.MediaPlayer;
import android.os.Environment;
import android.util.Log;
import android.widget.TextView;
public class MusicPlayer extends MediaPlayer
implements MediaPlayer.OnCompletionListener {
private static final String SD_PATH = //SDのパス
Environment.getExternalStorageDirectory().getPath();
private static final String FILE_SEP = File.separator;//pathの区切り文字
private ArrayList<String> musicList;
private int musicNum;
private TextView titleView;//タイトル表示用
//引数にTextView追加。
public MusicPlayer(ArrayList<String> list, TextView tv) {
super();
this.musicList = list;
titleView = tv;
musicNum = 0;
super.setOnCompletionListener(this);
}
public int getMusicNum() {
return musicNum;
}
public void setMusicNum(int num) {
musicNum = num;
}
//音楽ファイルのパスを取得してスタート。
public void playMusic() {
super.stop();
super.reset();//これが要る様だ。
setTitle();
try{
super.setDataSource(SD_PATH + FILE_SEP + "deepfm"
+ FILE_SEP + musicList.get(musicNum));
super.prepare();
super.seekTo(0);
super.start();
} catch (Exception e) {
Log.v("playMusic", "" + e);//なんとなく変更。
}
}
//残り3秒まで飛びます。
public void skipMusic() {
int duration = super.getDuration();
super.seekTo(duration - 3000);
}
//曲が終わったときの処理
public void onCompletion(MediaPlayer mp) {
if (++musicNum < musicList.size()) {
playMusic();
} else {
musicNum = 0;
playMusic();
}
}
//タイトルをセット。
public void setTitle() {
titleView.setText((musicNum + 1) + ": " + musicList.get(musicNum));
}
}
次の回へ。
0 件のコメント:
コメントを投稿