日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android播放mp3方法,Android之MediaPlayer播放音频与视频

發(fā)布時(shí)間:2024/10/8 Android 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android播放mp3方法,Android之MediaPlayer播放音频与视频 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本節(jié)帶來(lái)的是Android多媒體中的——MediaPlayer,我們可以通過(guò)這個(gè)API來(lái)播放音頻和視頻 該類是Androd多媒體框架中的一個(gè)重要組件,通過(guò)該類,我們可以以最小的步驟來(lái)獲取,解碼 和播放音視頻。它支持三種不同的媒體來(lái)源:

本地資源

內(nèi)部的URI,比如你可以通過(guò)ContentResolver來(lái)獲取

外部URL(流) 對(duì)于Android所支持的的媒體格式列表

使用MediaPlayer播放音頻:

1)獲得MediaPlayer實(shí)例:

MediaPlayer mp = new MediaPlayer();

MediaPlayer mp = MediaPlayer.create(this, R.raw.test); //無(wú)需再調(diào)用setDataSource

另外create還有這樣的形式: create(Context context, Uri uri, SurfaceHolder holder) 通過(guò)Uri和指定 SurfaceHolder 【抽象類】 創(chuàng)建一個(gè)多媒體播放器

2)設(shè)置播放文件:

//①raw下的資源:

MediaPlayer.create(this, R.raw.test);

//②本地文件路徑:

mp.setDataSource("/sdcard/test.mp3");

//③網(wǎng)絡(luò)URL文件:

mp.setDataSource("http://www.xxx.com/music/test.mp3");

另外setDataSource()方法有多個(gè),里面有這樣一個(gè)類型的參數(shù):FileDescriptor,在使用這個(gè) API的時(shí)候,需要把文件放到res文件夾平級(jí)的assets文件夾里,然后使用下述代碼設(shè)置DataSource:

AssetFileDescriptor fileDescriptor = getAssets().openFd("rain.mp3");

m_mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(), fileDescriptor.getLength());

3)其他方法

Paste_Image.png

實(shí)例

//[1]初始化mediaplayer

MediaPlayer mediaPlayer = new MediaPlayer();

//[2]設(shè)置要播放的資源位置 path 可以是網(wǎng)絡(luò) 路徑 也可是本地路徑

try {

mediaPlayer.setDataSource("/mnt/sdcard/xpg.mp3");

//[3]準(zhǔn)備播放

mediaPlayer.prepare();

//[4]開(kāi)始播放

mediaPlayer.start();

} catch (Exception e) {

e.printStackTrace();

}

本地Uri:

Uri myUri = ....; // initialize Uri here

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

mediaPlayer.setDataSource(getApplicationContext(), myUri);

mediaPlayer.prepare();

mediaPlayer.start();

網(wǎng)絡(luò)音頻

String url = "http://........"; // your URL here

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

mediaPlayer.setDataSource(url);

mediaPlayer.prepare(); // might take long! (for buffering, etc)

mediaPlayer.start();

使用MediaPlayer播放視頻:

MediaPlayer主要用于播放音頻,沒(méi)有提供圖像輸出界面,所以我們需要借助其他的 組件來(lái)顯示MediaPlayer播放的圖像輸出,我們可以使用用SurfaceView 來(lái)顯示,下面我們使用SurfaceView來(lái)寫(xiě)個(gè)視頻播放的例子:

//[0]找到控件用來(lái)顯示播放視頻的內(nèi)容

final SurfaceView sfv = (SurfaceView) findViewById(R.id.sfv);

//獲取holder 對(duì)象 用來(lái)維護(hù)視頻播放的內(nèi)容

SurfaceHolder holder = sfv.getHolder();

//[0.1]添加holder 生命周期 方法

holder.addCallback(new Callback() {

//當(dāng)surface view 銷毀

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

System.out.println("surfaceDestroyed");

//停止播放視頻

if (mediaPlayer!=null && mediaPlayer.isPlaying()) {

//獲取到當(dāng)前播放視頻的位置

currentPosition = mediaPlayer.getCurrentPosition();

mediaPlayer.stop();

}

}

//這個(gè)方法執(zhí)行了 說(shuō)明sufaceView準(zhǔn)備好了

@Override

public void surfaceCreated(SurfaceHolder holder) {

//[1]初始化mediaplayer

System.out.println("surfaceCreated");

mediaPlayer = new MediaPlayer();

//[2]設(shè)置要播放的資源位置 path 可以是網(wǎng)絡(luò) 路徑 也可是本地路徑

try {

mediaPlayer.setDataSource("http://192.168.11.86:8080/cc.MP4");

//[3]準(zhǔn)備播放

mediaPlayer.prepareAsync();

//[3.0]設(shè)置顯示給sfv sufraceholder 是用來(lái)維護(hù)視頻播放的內(nèi)容

mediaPlayer.setDisplay(holder);

//[3.1]設(shè)置一個(gè)準(zhǔn)備完成的監(jiān)聽(tīng)

mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mp) {

//[4]開(kāi)始播放

mediaPlayer.start();

//[5]繼續(xù)上次的位置繼續(xù)播放

mediaPlayer.seekTo(currentPosition);

}

});

} catch (Exception e) {

e.printStackTrace();}}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

}

});

使用VideoView播放視頻

// 插件vitamio框架檢查是否可用

if (!LibsChecker.checkVitamioLibs(this)) {

return;

}

final VideoView vv = (VideoView) findViewById(R.id.vv);

vv.setVideoPath("http://192.168.11.86:8080/aa.avi");

vv.setOnPreparedListener(new OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mp) {

vv.start();

}

});

//設(shè)置video的控制器

vv.setMediaController(new MediaController(this));

總結(jié)

以上是生活随笔為你收集整理的android播放mp3方法,Android之MediaPlayer播放音频与视频的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。