Android Play mp3 เล่น Music media ไฟล์ mp3 และไฟล์อื่น ๆ ด้วย MediaPlayer |
Android Play mp3 เล่น Music media ไฟล์ mp3 และไฟล์อื่น ๆ ด้วย MediaPlayer ใน Android API Library จะมี Class ที่มีชื่อว่า MediaPlayer ไว้สำหรับเล่นไฟล์ Music ที่เป็น Media ต่าง ๆ เช่น mp3 หรือไฟล์เสียงที่อยู่ในรูปแบบหรือนามสกุลอื่น ๆ ในการใช้ MediaPlayer เล่นไฟล์ Media สามารถเรียก Resource ได้จาหลายแหล่ง เช่น โฟเดอร์ Resource ของ App หรือใน SD Card หรือจาก URL ของเว็บไซต์ ก็เรียกได้ง่าย ๆ เช่นเดียวกัน
การเรียก Resource จากแหล่งต่าง ๆ เช่น
App Resource
MediaPlayer mMedia = MediaPlayer.create(this, R.raw.music);
mMedia.start();
SD Card Resource
MediaPlayer mMedia = MediaPlayer();
mMedia.setDataSource("/mnt/sdcard/mymusic/music.mp3");
mMedia.prepare();
mMedia.start();
URL Resource
MediaPlayer mMedia = new MediaPlayer();
mMedia.setDataSource("https://www.thaicreate.com/music/mymusic.mp3");
mMedia.start();
โดยการทำงานของไฟล์เหล่านี้สามารถทำงานเป็น Background เพื่อเล่นเพลงและจะไม่มีสถานะแจ้งให้ทราบ
Example 1 เล่นไฟล์ mp3 ที่อยู่ในโฟเดอร์ Resource App ของ Android แบบง่าย ๆ
ไฟล์ music.mp3 จัดเก็บไว้ใน /res/raw/music.mp3
โครงสร้างของไฟล์ประกอบด้วย 2 ไฟล์คือ MainActivity.java, activity_main.xml
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="62dp"
android:layout_marginTop="89dp"
android:text="Play" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="34dp"
android:text="TextView" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/button1"
android:text="Pause" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:text="Stop" />
</RelativeLayout>
ออกแบบ Layout โดยมีปุ่ม Play, Pause และ Stop โดยแต่ล่ะปุ่มจะมีสถานะควบคุมเช่น เมื่อกด Play แล้วปุ่ม Play จะไม่สามารถกดได้อีก เพราะกำลังเล่นเพลงอยู่ และจะใช้ได้อีกครั้งเมื่อกด Pause หรือ Stop
MainActivity.java
package com.myapp;
import java.io.IOException;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
MediaPlayer mMedia;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(mMedia != null){
mMedia.release();
}
final TextView txtView = (TextView)findViewById(R.id.textView1);
txtView.setText("Source : music.mp3");
/* Resource in R.
* mMedia = MediaPlayer.create(this, R.raw.music);
* mMedia.start();
*/
/*
* from DataSource
* mMedia = new MediaPlayer();
* mp.setDataSource("https://www.thaicreate.com/music/mymusic.mp3");
* mMedia.start();
*
*/
mMedia = MediaPlayer.create(this, R.raw.music);
final Button btn1 = (Button) findViewById(R.id.button1); // Start
final Button btn2 = (Button) findViewById(R.id.button2); // Pause
final Button btn3 = (Button) findViewById(R.id.button3); // Stop
// Start
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Playing : music.mp3....");
mMedia.start();
btn1.setEnabled(false);
btn2.setEnabled(true);
btn3.setEnabled(true);
}
});
// Pause
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Pause : music.mp3");
mMedia.pause();
btn1.setEnabled(true);
btn2.setEnabled(false);
btn3.setEnabled(false);
}
});
// Stop
btn3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Stop Play : music.mp3");
mMedia.stop();
btn1.setEnabled(true);
btn2.setEnabled(false);
btn3.setEnabled(false);
try {
mMedia.prepare();
mMedia.seekTo(0);
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(mMedia != null){
mMedia.release();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Screenshot
กดปุ่ม Play
ลองกดปุ่ม Stop หรือ Pause
ปุ่ม Play จะทำงานอีกครั้ง
Example 2 ใช้ปุ่ม SeekBar มาควบคุมตำแหน่งของไฟล์ที่เล่นอยู่ในขณะนั้น
ในตัวอย่างนี้จะมี SeekBar เข้ามาควบคุมและแสดงสถานะตำแหน่งของไฟล์ที่เล่นอยู่ในขณะนั้น และสามารถทำการเลื่อน SeekBar เพื่อไปยังตำแหน่งต่าง ๆ ของไฟล์ที่เล่นอยู่ได้
โครงสร้างของไฟล์ประกอบด้วย 2 ไฟล์คือ MainActivity.java, activity_main.xml
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="62dp"
android:layout_marginTop="89dp"
android:text="Play" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="34dp"
android:text="TextView" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/button1"
android:text="Pause" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:text="Stop" />
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/button2"
android:layout_alignParentLeft="true" />
</RelativeLayout>
ออกแบบตามรูปภาพ โดยใช้ Widgets ของ SeekBar เข้ามาจัดการตำแหน่งของไฟล์ Media ที่เล่นอยู่ในขณะนั้น
MainActivity.java
package com.myapp;
import java.io.IOException;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.view.MotionEvent;
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends Activity {
private MediaPlayer mMedia;
private Handler handler = new Handler();
private SeekBar seekBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(mMedia != null){
mMedia.release();
}
final TextView txtView = (TextView)findViewById(R.id.textView1);
txtView.setText("Source : music.mp3");
/* Resource in R.
* mMedia = MediaPlayer.create(this, R.raw.music);
* mMedia.start();
*/
/*
* from DataSource
* mMedia = new MediaPlayer();
* mMedia.setDataSource("https://www.thaicreate.com/music/mymusic.mp3");
* mMedia.start();
*
*/
mMedia = MediaPlayer.create(this, R.raw.music);
seekBar = (SeekBar)findViewById(R.id.seekBar1);
seekBar.setMax(mMedia.getDuration());
seekBar.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
UpdateseekChange(v);
return false;
}
});
final Button btn1 = (Button) findViewById(R.id.button1); // Start
final Button btn2 = (Button) findViewById(R.id.button2); // Pause
final Button btn3 = (Button) findViewById(R.id.button3); // Stop
// Start
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Playing : music.mp3....");
mMedia.start();
startPlayProgressUpdater();
btn1.setEnabled(false);
btn2.setEnabled(true);
btn3.setEnabled(true);
}
});
// Pause
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Pause : music.mp3");
mMedia.pause();
btn1.setEnabled(true);
btn2.setEnabled(false);
btn3.setEnabled(false);
}
});
// Stop
btn3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Stop Play : music.mp3");
mMedia.stop();
btn1.setEnabled(true);
btn2.setEnabled(false);
btn3.setEnabled(false);
try {
mMedia.prepare();
mMedia.seekTo(0);
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
private void UpdateseekChange(View v){
if(mMedia.isPlaying()){
SeekBar sb = (SeekBar)v;
mMedia.seekTo(sb.getProgress());
}
}
public void startPlayProgressUpdater() {
seekBar.setProgress(mMedia.getCurrentPosition());
if (mMedia.isPlaying()) {
Runnable notification = new Runnable() {
public void run() {
startPlayProgressUpdater();
}
};
handler.postDelayed(notification,1000);
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(mMedia != null){
mMedia.release();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Screenshot
กำลังเล่นไฟล์ ซึ่งจะมี SeekBar บอกตำแหน่ง
สามารถเลื่อน SeekBar ไปยังตำแหน่งต่าง ๆ ของไฟล์ Media ที่เล่นอยู่ในขณะนั้นได้
Example 3 เล่นไฟล์ mp3 ที่อยู่ใน SD Card และมีอยู่หลายไฟล์
วิธีการก็คือดึงรายการไฟล์เหล่านั้นมาแสดงบน ListView และให้ให้ User คลิกเลิอกว่าจะเล่นไฟล์ไหน โดยสร้างชุด ArrayList ของ String ที่มีอยู่หลาย Key ประกอบด้วย MusicID, MusicName , MusicName จัดเก็บข้อมูลดังนี้
MyArrList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
/*** Rows 1 ***/
map = new HashMap<String, String>();
map.put("MusicID", "1");
map.put("MusicName", "Usher Feat Pitbull Ludacris");
map.put("MusicPath", "music1.mp3");
MyArrList.add(map);
/*** Rows 2 ***/
map = new HashMap<String, String>();
map.put("MusicID", "2");
map.put("MusicName", "Jeremih Featuring Chris Brown");
map.put("MusicPath", "music2.mp3");
MyArrList.add(map);
/*** Rows 3 ***/
map = new HashMap<String, String>();
map.put("MusicID", "3");
map.put("MusicName", "Pleasure P Feat Omarion & Drake");
map.put("MusicPath", "music3.mp3");
MyArrList.add(map);
/*** Rows 3 ***/
map = new HashMap<String, String>();
map.put("MusicID", "4");
map.put("MusicName", "R.Kelly Feat Keri Hilson");
map.put("MusicPath", "music4.mp3");
MyArrList.add(map);
โดย Path ของไฟล์ mp3 แต่ล่ะตัวจะอยู่ใน SD Card และข้อมูลเหล่านี้จะถูกแสดงบน ListView และหลังจากที่คลิกเลือกแต่ล่ะรายการก็จะทำการ Intent ไปยัง Activity ที่มีหน้าที่สำหรับเล่นไฟล์ mp3
โครงสร้างของไฟล์ประกอบด้วย 5 ไฟล์คือ MainActivity.java, activity_main.xml, activity_column.xml, activity_play.xml และ PlayActivity.java
ออกแบบ layout ดังนี้
activity_main.xml
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="My Music Play List : "
android:layout_span="1"
android:textAppearance="?android:attr/textAppearanceLarge" />
</TableRow>
<View
android:layout_height="1dip"
android:background="#CCCCCC" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.1">
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
<View
android:layout_height="1dip"
android:background="#CCCCCC" />
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dip" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="By.. ThaiCreate.Com" />
</LinearLayout>
</TableLayout>
activity_column.xml
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageButton
android:id="@+id/imgCmdPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_media_play" />
<TextView
android:id="@+id/ColID"
android:text="Column 1"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/ColMusic"
android:text="Column 2"
android:textAppearance="?android:attr/textAppearanceSmall" />
</TableRow>
</TableLayout>
activity_play.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="62dp"
android:layout_marginTop="89dp"
android:text="Play" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="34dp"
android:text="TextView" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/button1"
android:text="Pause" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:text="Stop" />
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/button2"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_centerVertical="true"
android:text="Back" />
</RelativeLayout>
MainActivity.java
package com.myapp;
import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
public class MainActivity extends Activity {
ArrayList<HashMap<String, String>> MyArrList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyArrList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
/*** Rows 1 ***/
map = new HashMap<String, String>();
map.put("MusicID", "1");
map.put("MusicName", "Usher Feat Pitbull Ludacris");
map.put("MusicPath", "music1.mp3");
MyArrList.add(map);
/*** Rows 2 ***/
map = new HashMap<String, String>();
map.put("MusicID", "2");
map.put("MusicName", "Jeremih Featuring Chris Brown");
map.put("MusicPath", "music2.mp3");
MyArrList.add(map);
/*** Rows 3 ***/
map = new HashMap<String, String>();
map.put("MusicID", "3");
map.put("MusicName", "Pleasure P Feat Omarion & Drake");
map.put("MusicPath", "music3.mp3");
MyArrList.add(map);
/*** Rows 3 ***/
map = new HashMap<String, String>();
map.put("MusicID", "4");
map.put("MusicName", "R.Kelly Feat Keri Hilson");
map.put("MusicPath", "music4.mp3");
MyArrList.add(map);
// listView1
final ListView lstView1 = (ListView)findViewById(R.id.listView1);
lstView1.setAdapter(new ImageAdapter(this));
}
public class ImageAdapter extends BaseAdapter
{
private Context context;
public ImageAdapter(Context c)
{
// TODO Auto-generated method stub
context = c;
}
public int getCount() {
// TODO Auto-generated method stub
return MyArrList.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.activity_column, null);
}
//imgCmdPlay
ImageButton cmdPlay = (ImageButton) convertView.findViewById(R.id.imgCmdPlay);
cmdPlay.setBackgroundColor(Color.TRANSPARENT);
cmdPlay.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent newActivity = new Intent(MainActivity.this,PlayActivity.class);
newActivity.putExtra("vMusicID", MyArrList.get(position).get("MusicID"));
newActivity.putExtra("vMusicName", MyArrList.get(position).get("MusicName"));
newActivity.putExtra("vMusicPath", MyArrList.get(position).get("MusicPath"));
startActivity(newActivity);
}
});
// ColID
TextView txtID = (TextView) convertView.findViewById(R.id.ColID);
txtID.setPadding(10, 0, 0, 0);
txtID.setText(MyArrList.get(position).get("MusicID") +".");
// ColMusic
TextView txtMusic = (TextView) convertView.findViewById(R.id.ColMusic);
txtMusic.setPadding(5, 0, 0, 0);
txtMusic.setText(MyArrList.get(position).get("MusicName"));
return convertView;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
PlayActivity.java
package com.myapp;
import java.io.IOException;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.view.MotionEvent;
import android.widget.SeekBar;
import android.widget.TextView;
public class PlayActivity extends Activity {
private MediaPlayer mMedia;
private Handler handler = new Handler();
private SeekBar seekBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
if(mMedia != null){
mMedia.release();
}
Intent intent= getIntent();
final String MusicID = intent.getStringExtra("vMusicID");
final String MusicName = intent.getStringExtra("vMusicName");
final String MusicPath = intent.getStringExtra("vMusicPath");
final TextView txtView = (TextView)findViewById(R.id.textView1);
txtView.setText("(" + MusicID + ")" + MusicName);
/* Resource in R.
* mMedia = MediaPlayer.create(this, R.raw.music);
* mMedia.start();
*/
/*
* from DataSource
* mMedia = new MediaPlayer();
* mMedia.setDataSource("https://www.thaicreate.com/music/mymusic.mp3");
* mMedia.start();
*
*/
mMedia = new MediaPlayer();
try {
Log.d("Path","/mnt/sdcard/mymusic/" + MusicPath);
mMedia.setDataSource("/mnt/sdcard/mymusic/" + MusicPath);
mMedia.prepare();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
seekBar = (SeekBar)findViewById(R.id.seekBar1);
seekBar.setMax(mMedia.getDuration());
seekBar.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
UpdateseekChange(v);
return false;
}
});
final Button btn1 = (Button) findViewById(R.id.button1); // Start
final Button btn2 = (Button) findViewById(R.id.button2); // Pause
final Button btn3 = (Button) findViewById(R.id.button3); // Stop
final Button btn4 = (Button) findViewById(R.id.button4); // Back
// Start
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Playing music...");
mMedia.start();
startPlayProgressUpdater();
btn1.setEnabled(false);
btn2.setEnabled(true);
btn3.setEnabled(true);
}
});
// Pause
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Pause!");
mMedia.pause();
btn1.setEnabled(true);
btn2.setEnabled(false);
btn3.setEnabled(false);
}
});
// Stop
btn3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txtView.setText("Stop!");
mMedia.stop();
btn1.setEnabled(true);
btn2.setEnabled(false);
btn3.setEnabled(false);
try {
mMedia.prepare();
mMedia.seekTo(0);
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// Back
btn4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(mMedia.isPlaying()){
mMedia.stop();
}
Intent newActivity = new Intent(PlayActivity.this,MainActivity.class);
startActivity(newActivity);
}
});
}
private void UpdateseekChange(View v){
if(mMedia.isPlaying()){
SeekBar sb = (SeekBar)v;
mMedia.seekTo(sb.getProgress());
}
}
public void startPlayProgressUpdater() {
seekBar.setProgress(mMedia.getCurrentPosition());
if (mMedia.isPlaying()) {
Runnable notification = new Runnable() {
public void run() {
startPlayProgressUpdater();
}
};
handler.postDelayed(notification,1000);
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(mMedia != null){
mMedia.release();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
อย่าลืมเพิ่ม
<activity
android:name="PlayActivity"
android:theme="@style/AppTheme"
android:screenOrientation="portrait"
android:label="@string/title_activity_main" />
ในไฟล์ AndroidManifest.xml ด้วย
Screenshot
แสดงรายการเพลงใน ListView
เล่นไฟล์เมื่อคลิกที่ Item แต่ล่ะรายการของ ListView
เพิ่มเติม
กรณีที่ทดสอบผ่าน Emulator สามารถเปิดเสียงลำโพง เพื่อฟังเพลงได้ตามปกติ
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2012-07-28 17:00:18 /
2017-03-26 21:41:06 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|