资料来源于 google android官网:
This class is the primary API for playing sound and video.
https://developer.android.com/guide/topics/media/mediaplayer.html#mpandservices

If you are using MediaPlayer to stream network-based content, your application must request network access.<uses-permission android:name="android.permission.INTERNET" />If your player application needs to keep the screen from dimming or the processor from sleeping, or uses the MediaPlayer.setScreenOnWhilePlaying() or MediaPlayer.setWakeMode() methods, you must request this permission.<uses-permission android:name="android.permission.WAKE_LOCK" />

One of the most important components of the media framework is the MediaPlayer class. An object of this class can fetch, decode, and play both audio and video with minimal setup. It supports several different media sources such as:

1 Local resources
2 Internal URIs, such as one you might obtain from a Content Resolver
3 External URLs (streaming)

demo:

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);mediaPlayer.start(); // no need to call prepare(); create() does that for you

In this case, a “raw” resource is a file that the system does not try to parse in any particular way. However, the content of this resource should not be raw audio. It should be a properly encoded and formatted media file in one of the supported formats.

And here is how you might play from a URI available locally in the system (that you obtained through a Content Resolver, for instance):

Uri myUri = ....; // initialize Uri hereMediaPlayer mediaPlayer = new MediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.setDataSource(getApplicationContext(), myUri);mediaPlayer.prepare();mediaPlayer.start();

Playing from a remote URL via HTTP streaming looks like this:

String url = "http://........"; // your URL hereMediaPlayer mediaPlayer = new MediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.setDataSource(url);mediaPlayer.prepare(); // might take long! (for buffering, etc)mediaPlayer.start();

Note: If you’re passing a URL to stream an online media file, the file must be capable of progressive download.

Caution: You must either catch or pass IllegalArgumentException and IOException when using setDataSource(), because the file you are referencing might not exist

释放资源:

mediaPlayer.release();mediaPlayer = null;

=========================================

=============================================

package com.itheima.musicplayer;import java.io.File;import java.io.IOException;import android.app.Activity;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {    private EditText et_path;    private MediaPlayer mediaPlayer;    private Button bt_play,bt_pause,bt_stop,bt_replay;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        et_path = (EditText) findViewById(R.id.et_path);        bt_play = (Button) findViewById(R.id.bt_play);        bt_pause = (Button) findViewById(R.id.bt_pause);        bt_stop = (Button) findViewById(R.id.bt_stop);        bt_replay = (Button) findViewById(R.id.bt_replay);    }    /** * 播放 * @param view */    public void play(View view) {        String filepath = et_path.getText().toString().trim();        File file = new File(filepath);        if(file.exists()){            try {                mediaPlayer = new MediaPlayer();                mediaPlayer.setDataSource(filepath);//设置播放的数据源。                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);                mediaPlayer.prepare();//准备开始播放 播放的逻辑是c代码在新的线程里面执行。//                //上面的这句在c中执行,所以当activity结束的时候,影月播放还在继续,为一个空的activity..                mediaPlayer.start();                bt_play.setEnabled(false);                mediaPlayer.setOnCompletionListener(new OnCompletionListener() {//播放完了的监听器                    @Override                    public void onCompletion(MediaPlayer mp) {                        bt_play.setEnabled(true);               //代表按钮是否可用                    }                });            } catch (Exception e) {                e.printStackTrace();                Toast.makeText(this, "播放失败", 0).show();            }        }else{            Toast.makeText(this, "文件不存在,请检查文件的路径", 0).show();        }    }    /** * 暂停 * @param view */    public void pause(View view) {        if("继续".equals(bt_pause.getText().toString())){            mediaPlayer.start();            bt_pause.setText("暂停");            return;        }        if(mediaPlayer!=null&&mediaPlayer.isPlaying()){            mediaPlayer.pause();            bt_pause.setText("继续");        }    }    /** * 停止 * @param view */    public void stop(View view) {        if(mediaPlayer!=null&&mediaPlayer.isPlaying()){            mediaPlayer.stop();            mediaPlayer.release();//释放资源            mediaPlayer = null;        }        bt_pause.setText("暂停");        bt_play.setEnabled(true);   //代表按钮是否可用    }    /** * 重播 * @param view */    public void replay(View view) {        if(mediaPlayer!=null&&mediaPlayer.isPlaying()){            mediaPlayer.seekTo(0);        }else{            play(view);        }        bt_pause.setText("暂停");    }}

网络:

package com.itheima.musicplayer;import java.io.File;import java.io.IOException;import android.app.Activity;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.media.MediaPlayer.OnPreparedListener;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {    private EditText et_path;    private MediaPlayer mediaPlayer;    private Button bt_play,bt_pause,bt_stop,bt_replay;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        et_path = (EditText) findViewById(R.id.et_path);        bt_play = (Button) findViewById(R.id.bt_play);        bt_pause = (Button) findViewById(R.id.bt_pause);        bt_stop = (Button) findViewById(R.id.bt_stop);        bt_replay = (Button) findViewById(R.id.bt_replay);    }    /** * 播放 * @param view */    public void play(View view) {        String filepath = et_path.getText().toString().trim();        //http://        if(filepath.startsWith("http://")){            try {                mediaPlayer = new MediaPlayer();                mediaPlayer.setDataSource(filepath);//设置播放的数据源。                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);                //mediaPlayer.prepare();//同步的准备方法。                mediaPlayer.prepareAsync();//异步的准备                mediaPlayer.setOnPreparedListener(new OnPreparedListener() {                    @Override                    public void onPrepared(MediaPlayer mp) {                        mediaPlayer.start();                        bt_play.setEnabled(false);                    }                });                mediaPlayer.setOnCompletionListener(new OnCompletionListener() {                    @Override                    public void onCompletion(MediaPlayer mp) {                        bt_play.setEnabled(true);                    }                });            } catch (Exception e) {                e.printStackTrace();                Toast.makeText(this, "播放失败", 0).show();            }        }else{            Toast.makeText(this, "请检查文件的路径", 0).show();        }    }    /** * 暂停 * @param view */    public void pause(View view) {        if("继续".equals(bt_pause.getText().toString())){            mediaPlayer.start();            bt_pause.setText("暂停");            return;        }        if(mediaPlayer!=null&&mediaPlayer.isPlaying()){            mediaPlayer.pause();            bt_pause.setText("继续");        }    }    /** * 停止 * @param view */    public void stop(View view) {        if(mediaPlayer!=null&&mediaPlayer.isPlaying()){            mediaPlayer.stop();            mediaPlayer.release();            mediaPlayer = null;        }        bt_pause.setText("暂停");        bt_play.setEnabled(true);    }    /** * 重播 * @param view */    public void replay(View view) {        if(mediaPlayer!=null&&mediaPlayer.isPlaying()){            mediaPlayer.seekTo(0);        }else{            play(view);        }        bt_pause.setText("暂停");    }}

xml:

<LinearLayout 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:orientation="vertical"    tools:context=".MainActivity" >    <EditText        android:text="http://192.168.1.100:8080/hd.mp3"        android:id="@+id/et_path"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:hint="请输入要播放文件的路径" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <Button            android:id="@+id/bt_play"            android:onClick="play"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="播放" />        <Button              android:id="@+id/bt_pause"            android:onClick="pause"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="暂停" />        <Button              android:id="@+id/bt_stop"            android:onClick="stop"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="停止" />        <Button              android:id="@+id/bt_replay"            android:onClick="replay"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="重播" />    </LinearLayout></LinearLayout>

更多相关文章

  1. android 监听视频播放完毕
  2. Android(安卓)Studio音乐播放器and视频播放器
  3. Android(安卓)播放音乐文件与视频文件
  4. Android(安卓)使用MediaPlayer 播放 视频
  5. 类微信播放音频帧动画实现
  6. android-----简单的音乐播放器
  7. android 音乐播放器v1.0
  8. android 播放音效 小例子
  9. Android(安卓)4.3实现类似iOS在音乐播放过程中如果有来电则音乐

随机推荐

  1. Android Layout XML属性研究--android:la
  2. 【转载】【Android】Android Camera 使用
  3. Android实现使用流媒体播放远程mp3文件的
  4. android 中 焦点控制
  5. Android中文 API (31) ―― TimePicker
  6. Android 四大核心组件之Activity[生命周
  7. android api Demo之自定义Animation,实现3
  8. 《Android 智能穿戴设备开发-从入门精通
  9. Android(安卓)BroadCast
  10. Android SDK目录结构介绍