SDカードのファイルを再生する
作っています。少しづつ。まあ、どこまでいけるか分かりませんが。
とりあえず、貼っときます。
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">
<Button
android:id="@+id/start_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/start_button">
</Button>
<Button
android:id="@+id/stop_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/stop_button">
</Button>
</LinearLayout>
ボタンが二つだけ。一応string.xmlも使ってみました。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, SDMediaPlayerActivity!</string>
<string name="app_name">SDMP</string>
<string name="start_button">再生 / 次へ</string>
<string name="stop_button">停止</string>
</resources>
HelloWorld消すの忘れてました。
で、Activity。
package net.asasvata.sdmediaplayer;
import java.util.ArrayList;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
public class SDMediaPlayerActivity extends Activity
implements View.OnClickListener {
//フィールド
private static int num = 0;//次の曲に進む用
private MediaPlayer mp;
private ArrayList<String> musicList;
private Button btnStart;
private Button btnStop;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//mpの生成
mp = new MediaPlayer();
//musicListの生成と曲の追加
musicList = new ArrayList<String>();
musicList.add("leavetheworldbehind.mp3");
musicList.add("onlygirl.mp3");
musicList.add("richgirl.mp3");
musicList.add("rudeboy.mp3");
musicList.add("yeahyeah.mp3");
//ボタンの取得
btnStart = (Button)findViewById(R.id.start_button);
btnStop = (Button)findViewById(R.id.stop_button);
//OnClickListenerのセット
btnStart.setOnClickListener(this);
btnStop.setOnClickListener(this);
}
//ボタンが押されたときの処理
public void onClick(View view) {
if (mp.isPlaying()) {
if (view == btnStart) {
if (++num < musicList.size()) {
playMusic();
} else {
num = 0;
playMusic();
}
} else if (view == btnStop) {
mp.stop();
try {
mp.prepare();
} catch (Exception e){
}
}
} else {
if (view == btnStart) {
playMusic();
}
}
}
public void playMusic() {
mp.reset();
try{
mp.setDataSource(Environment.getExternalStorageDirectory().getPath()
+ "/" + musicList.get(num));
mp.prepare();
mp.seekTo(0);
mp.start();
} catch (Exception e) {
}
}
}
Environment.getExternalStorageDirectory().getPath()
↑で、SDのパスが得られるようです。"/sdcard"でもいける様ですが。
こっちの方が確実みたいなので。
ボタンを押したときの動きは見たままです。
とりあえず、sdの音楽は再生できます。
エミュレーターのsdにファイルを入れるやり方はここを参考に。
sdのパスの取りかたも。
なんか疲れました。
0 件のコメント:
コメントを投稿