01.Android之多媒体--使用MediaPlayer播放音频02
2013-07-12 16:55
579 查看
效果图:
xml代码:
Java代码:
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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TableRow android:gravity="center_horizontal" > <Button android:id="@+id/button01" android:layout_width="match_parent" android:text="播放应用的资源文件(res/raw/)"/> </TableRow> <TableRow android:gravity="center_horizontal" > <Button android:id="@+id/button02" android:layout_width="match_parent" android:text="播放应用的原始资源文件(assets)"/> </TableRow> <TableRow android:gravity="center_horizontal" > <Button android:id="@+id/button03" android:layout_width="match_parent" android:text="播放外部存储器上的资源文件(sdcard)"/> </TableRow> <TableRow android:gravity="center_horizontal" > <Button android:id="@+id/button04" android:layout_width="match_parent" android:text="播放来自网络的音频文件"/> </TableRow> </TableLayout> </RelativeLayout>
Java代码:
package com.example.testmediaplayer; import java.io.IOException; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.annotation.SuppressLint; import android.app.Activity; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.view.Menu; import android.view.MenuItem; import android.view.MenuItem.OnMenuItemClickListener; import android.view.View; import android.widget.Button; @SuppressLint("SdCardPath") public class MainActivity extends Activity { private Button btn01, btn02, btn03, btn04; //method01 /*private MediaPlayer[] mp;*/ private MediaPlayer m; private AssetManager assetManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn01 = (Button)this.findViewById(R.id.button01); btn02 = (Button)this.findViewById(R.id.button02); btn03 = (Button)this.findViewById(R.id.button03); btn04 = (Button)this.findViewById(R.id.button04); btn01.setOnClickListener(new ClickEvent()); btn02.setOnClickListener(new ClickEvent()); btn03.setOnClickListener(new ClickEvent()); btn04.setOnClickListener(new ClickEvent()); assetManager = this.getAssets(); //method01 /*mp = new MediaPlayer[4]; mp[0] = MediaPlayer.create(getApplicationContext(), R.raw.babysong01); for(int k=1; k<4; k++) mp[k] = new MediaPlayer();*/ // m = new MediaPlayer(); //用下面个方法初始化更好 m = MediaPlayer.create(getApplicationContext(), R.raw.babysong01); } class ClickEvent implements View.OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub // only01(); only02(); if(v == btn01){ //method01 /*mp[0] = MediaPlayer.create(getApplicationContext(), R.raw.babysong01); mp[0].start();*/ System.out.println("---播放应用的资源文件----"); m = MediaPlayer.create(getApplicationContext(), R.raw.babysong01); m.start(); } if(v == btn02){ try { System.out.println("---播放assest的资源文件----"); AssetFileDescriptor fileDescriptor = assetManager.openFd("babysong02.mp3"); //method01 /*mp[1].setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getLength()); mp[1].prepare(); mp[1].start();*/ m.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getLength()); m.prepare(); m.start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(v == btn03){ try { System.out.println("---播放SDcard上的文件---"); //method01 /*mp[2].setDataSource("/mnt/sdcard/mp3/03.mp3"); mp[2].prepare();*/ m.setDataSource("/mnt/sdcard/mp3/03.mp3"); m.prepare(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } /*mp[2].start();*/ m.start(); } if(v == btn04){ System.out.println("播放网络上的音频"); Uri uri = Uri.parse("http://music.baidu.com/data/music/file?link=http://zhangmenshiting.baidu.com/data" + "2/music/7338475/733847361200128.mp3?xcode=53ba6db76a1e63da466d3cc47229d7cc29a4413e4518cd10"); try { //method01 /*mp[3].setDataSource(getApplicationContext(), uri); mp[3].prepare();*/ m.setDataSource(getApplicationContext(), uri); m.prepare(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } /*mp[3].start();*/ m.start(); } } } //method01 /* void only01(){ for(int i=0; i<4; i++) if(mp[i].isPlaying()){ mp[i].stop(); mp[i].reset(); } }*/ //保持播放歌曲的唯一性 void only02(){ m.stop(); m.reset(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); MenuItem item = menu.add(menu.NONE, menu.NONE, menu.NONE, "Exit"); item.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { // TODO Auto-generated method stub //method01 /*for(int j=0; j<4; j++) mp[j].release();*/ m.release(); System.exit(0); return false; } }); return true; } }如需转载引用请注明出处:http://blog.csdn.net/x657032732/article/details/9313199
相关文章推荐
- Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用
- Android之多媒体使用——MediaPlayer播放音频
- 对象方法Android之多媒体使用——MediaPlayer播放音频
- Android之多媒体--使用MediaPlayer播放音频
- Android多媒体应用使用MediaPlayer播放音频
- 从头学Android之多媒体--使用MediaPlayer播放音频
- 24、从头学Android之多媒体--使用MediaPlayer播放音频
- Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用
- 从头学Android之多媒体--使用MediaPlayer播放音频
- 【Android开发】多媒体应用开发-使用MediaPlayer播放音频
- 28、从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- Android多媒体---SurfaceView(播放视频)+Mediaplayer(音频)
- 【Android 多媒体应用】使用MediaCodec解码使用AudioTrack播放音频数据
- 4.10 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- 从头学Android之多媒体--使用SoundPool播放音频
- android-MediaPlayer的基本使用-播放音频视频
- Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- Android 使用MediaPlayer播放音频
- Android开发之MediaPlayer多媒体(音频,视频)播放工具类