Ⅰ 安卓android手機上最好音質的音樂播放器是什麼
這個要看手機,推薦幾個方便漂亮的播放器:天天動聽、酷我音樂盒
Ⅱ android開發音樂播放器MediaPlayer.prepare()
MediaPlayer類可用於控制音頻/視頻文件或流的播放,我曾在《Android開發之基於Service的音樂播放器》一文中介紹過它的使用。下面讓我們看一下MediaPlayer類的詳細介紹。
一、類結構:
java.lang.Object
↳
android.media.MediaPlayer
二、構造方法和公有方法
構造方法:
Public Constructors
MediaPlayer()
默認構造方法。
公有方法:
Public Methods
static MediaPlayer
create(Context context, Uri uri, SurfaceHolder holder)
指定從資源ID對應的資源文件中來裝載音樂文件,同時指定了SurfaceHolder對象並返回MediaPlyaer對象。
static MediaPlayer
create(Context context, int resid)
指定從資源ID對應的資源文件中來裝載音樂文件,並返回新創建的MediaPlyaer對象。
static MediaPlayer
create(Context context, Uri uri)
從指定Uri裝在音頻文件,並返回新創建的MediaPlayer對象。
int
getCurrentPosition()
獲取當前播放的位置。
int
getDuration()
獲取音頻的時長。
int
getVideoHeight()
獲取視頻的高度。
int
getVideoWidth()
獲取視頻的寬度。
boolean
isLooping()
判斷MediaPlayer是否正在循環播放。
boolean
isPlaying()
判斷MediaPlayer是否正在播放。
void
pause()
暫停播放。
void
prepare()
准備播放(裝載音頻),調用此方法會使MediaPlayer進入Prepared狀態。
void
prepareAsync()
准備播放非同步音頻。
void
release()
釋放媒體資源。
void
reset()
重置MediaPlayer進入未初始化狀態。
void
seekTo(int msec)
尋找指定的時間位置。
void
setAudioStreamType(int streamtype)
設置音頻流的類型。
void
setDataSource(String path)
指定裝載path路徑所代表的文件。
void
setDataSource(Context context, Uri uri, Map<String, String headers)
指定裝載uri所代表的文件。
void
setDataSource(Context context, Uri uri)
指定裝載uri所代表的文件。
void
setDataSource(FileDescriptor fd, long offset, long length)
指定裝載fd所代表的文件中從offset開始長度為length的文件內容。
void
setDataSource(FileDescriptor fd)
指定裝載fd所代表的文件。
void
setDisplay(SurfaceHolder sh)
設置顯示方式。
void
setLooping(boolean looping)
設置是否循環播放。
void
setNextMediaPlayer(MediaPlayer next)
設置當前流媒體播放完畢,下一個播放的MediaPlayer。
void
setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener)
注冊一個回調函數,在網路視頻流緩沖變化時調用。
void
setOnCompletionListener(MediaPlayer.OnCompletionListener listener)
為Media Player的播放完成事件綁定事件監聽器。
void
setOnErrorListener(MediaPlayer.OnErrorListener listener)
為MediaPlayer的播放錯誤事件綁定事件監聽器。
void
setOnPreparedListener(MediaPlayer.OnPreparedListener listener)
當MediaPlayer調用prepare()方法時觸發該監聽器。
void
setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener)
當MediaPlayer調用seek()方法時觸發該監聽器。
void
setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener)
注冊一個用於監聽視頻大小改變的監聽器。
void
setScreenOnWhilePlaying(boolean screenOn)
置是否使用SurfaceHolder來顯示。
void
setSurface(Surface surface)
設置Surface。
void
setVideoScalingMode(int mode)
設置視頻縮放的模式。
void
setVolume(float leftVolume, float rightVolume)
設置播放器的音量。
void
setWakeMode(Context context, int mode)
為MediaPlayer設置低級電源管理行為。.
void
start()
開始或恢復播放。
void
stop()
停止播放。
三、常用方法分析:
1.使用進度條:
進度條SeekBar可以用來顯示播放進度,用戶也可以利用SeekBar的滑塊來控制音樂的播放。
SeekBar需要使用的一些方法:
setProgress(int value):設置滑塊的位置方法為。
setMax(int value):設置進度條的最大長度。
setOnSeekBarChangeListener(OnSeekBarChangeListener l):設置SeekBar的進度改變事件。
MusicPlayer需要使用的一些方法:
getDuration():獲得音樂長度為。
getCurrentPosition():獲得現在播放的位置。
seekTo(int msec):調用seekTo()方法可以調整播放的位置。
seekTo(int)方法是非同步執行的,所以它可以馬上返回,但是實際的定位播放操作可能需要一段時間才能完成,尤其是播放流形式的音頻/視頻。當實際的定位播放操作完成之後,內部的播放引擎會調用客戶端程序員提供的OnSeekComplete.onSeekComplete()回調方法。可以通過setOnSeekCompleteListener(OnSeekCompleteListener)方法注冊。
seekTo(int)方法也可以在其它狀態下調用,比如Prepared,Paused和PlaybackCompleted狀態。此外,目前的播放位置,實際可以調用getCurrentPosition()方法得到,它可以幫助如音樂播放器的應用程序不斷更新播放進度。
創建並使用進度條的步驟:
第一步:創建一個進度條
//進度條
static SeekBarskbMusic;
skbMusic=(SeekBar)findViewById(R.id.skbMusic);
第二步:為進度條的改變事件注冊並添加監聽器
skbMusic.setOnSeekBarChangeListener(sChangeListener);
/**
* SeekBar進度改變事件
*/
=new OnSeekBarChangeListener() {
@Override
publicvoid onStopTrackingTouch(SeekBar seekBar) {
//TODO Auto-generated method stub
//當拖動停止後,控制mediaPlayer播放指定位置的音樂
MusicService.mediaPlayer.seekTo(seekBar.getProgress());
MusicService.isChanging=false;
}
@Override
publicvoid onStartTrackingTouch(SeekBar seekBar) {
//TODO Auto-generated method stub
MusicService.isChanging=true;
}
@Override
publicvoid onProgressChanged(SeekBar seekBar,int progress,
boolean fromUser) {
//TODO Auto-generated method stub
}
};
第三步:設置進度條的最大長度:
//getDuration()方法要在prepare()方法之後,否則會出現Attempt to call getDuration without a valid mediaplayer異常
MusicBox.skbMusic.setMax(mediaPlayer.getDuration());//設置SeekBar的長度
第四步:更新進度條
//----------定時器記錄播放進度---------//
mTimer =new Timer();
mTimerTask =new TimerTask() {
@Override
publicvoid run() {
isTimerRunning=true;
if(isChanging==true)//當用戶正在拖動進度進度條時不處理進度條的的進度
return;
MusicBox.skbMusic.setProgress(mediaPlayer.getCurrentPosition());
}
};
//每隔10毫秒檢測一下播放進度
mTimer.schele(mTimerTask, 0, 10);
2.裝載音頻文件:
為了讓MediaPlayer來裝載指定音頻文件,MediaPlayer提供了如下簡單的靜態方法。
static MediaPlayer create(Context context, Uri uri):從指定Uri來裝載音頻文件,並返回新創建的MediaPlayer對象。
static MediaPlayer create(Context context, int resid):從 resid資源 ID對應的資源文件中裝載音頻文件,並返回新創建的MediaPlayer對象。
提示:上而這兩個方法用起來非常方便,但這兩個方法每次都會返回新創建的MediaPlayer對象,如來程序需要使用MediaPlayer循環播放多個音頻文件,使用MediaPlayer的靜態create方法就不太合適了,此時可通過MediaPlayer的setDataSource()方法來裝載指定的音頻文件。MediaPlayer提供了如下方法來指定裝載相應的音頻文件。
setDataSource(String path):指定裝載path路徑所代表的文件。
setDataSource(FileDescriptor fd, long offset,long length):指定裝載fd所代表的文件中從offset開始長度為length的文件內容。
setDataSource(FileDescriptor fd):指定裝載fd所代表的文件。
setDataSource(Context context, Uri uri):指定裝載uri所代表的文件。
提示:執行上面所示的setDataSource()方法之後,MediaPlayer並未真正去裝載那些音頻文件,還需要調用MediaPlayer的prepare()方法去准備音頻,所謂「准備」,就是讓MediaPlayer真正去裝載音頻文件。
使用已有的MediaPlayer對象裝載「一首」歌曲的代碼模板為:
mPlayer.reset();
//裝戰下一竹歌曲
mPlayer.setDataSource(M/mnt/sdcard/next.mp3);
//准備聲音 mPlayer.prepare();
"播放
mPlayer.start();
}
catch (IOException e)
e.printStackTrace();
}
3.與MediaPlayer有關的事件監聽器:
MediaPlayer提供了一些綁定事件監聽器的方法,用於監聽MediaPlayer播放過程中所發生的特定事件,綁定事件監聽器的方法如下。
setOnCompletionListener(MediaPlayer.OnCompletionListener listener):為 Media Player的播放完成事件綁定事件監聽器。
setOnErrorListener(MediaPlayer.OnErrorListener listener):為MediaPlayer的播放錯誤事件綁定事件監聽器。
setOnPreparedListener(MediaPlayer.OnPreparedListener listener):當 MediaPlayer調用prepare()方法時觸發該監聽器。
setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener):當MediaPlayer調用seek()方法時觸發該監聽器。
因此可以在創建一個MediaPlayer對象之後,通過為該MediaPlayer綁定監聽器來監聽相應的事件,例如如下代碼:
//為MediaPlayer的播放完成事件綁定事件監聽器
mPlayer.setOnErrorListener(new OnErrorListener() {
@Override
publicboolean onError(MediaPlayer mp,int what,int extra) {
//TODO Auto-generated method stub
//針對錯誤進行相應的處理
// ... ...
}
});
//為MediaPlayer的播放完成講件綁定市件監聽器
mPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
publicvoid onCompletion(MediaPlayer mp) {
//TODO Auto-generated method stub
current++;
prepareAndPlay(current);
}
});
四、MediaPlayer播放不同來源的音頻文件:
1.播放應用的資源文件
播放應用的資源文件需要兩步即:
1) 調用MediaPlayer的create(Context context,int resid)方法加指定資源文件。
2) 調用 MediaPlayer的 start()、pause()、stop()等方法控制播放即可。
例如如下代碼:
MediaPlayer mPlayer=new MediaPlayer();
mPlayer.create(this, R.raw.music);
2. 播放應用的原始資源文件
播放應用的資源文件按如下步驟執行。
1) 調用 Context的 getAssets()方法獲取應用的 AssetManager。
2) 調用AssetManager對象的openFd(String name)方法打開指定的原生資源,該方法返回一個AssetFileDescriptor對象。
3) 調用 AssetFileDescriptor的 getFileDescriptor()、getStartOffset()和 getLength()方法來獲取音頻文件的FileDescriptor、開始位置、長度等。
4) 創建MediaPlayer對象(或利用已有的MediaPlayer對象),並調用MediaPlayer對象的setDataSource(FileDescriptor fd,long offset, long length)方法來裝載音頻資源。
5) 調用MediaPlayer對象的prepare()方法准備音頻。
6) 調用MediaPlayer的start()、pause()、stop()等方法控制播放即可。
例如如下代碼片段:
//獲取assets目錄下指定文件的AssetFileDescriptor對象
AssetFileDescriptor assetFileDescriptor=assetManager.openFd(musics[current]);
mediaPlayer.reset();//初始化mediaPlayer對象
mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
//准備播放音樂
mediaPlayer.prepare();
//播放音樂
mediaPlayer.start();
3. 播放外部存儲器上音頻文件
播放外部存儲器上音頻文件按如下步驟執行。
1) 創建MediaPlayer對象(或利用已有的MediaPlayer對象),並調用MediaPlayer對象的setDateSource(String path)方法裝載指定的音頻文件。
2) 調用MediaPlayer對象的prepare()方法准備音頻。
3) 調用MediaPlayer的start()、pause()、stop()等方法控制播放即可。
例如如下代碼:
//載入SD卡上的指定資源音頻文件
mPlayer.setDataSource("/mnt/You Are The One.mp3");
mPlayer.prepare();//准備因音頻
mPlayer.start();//播放音頻
4.播放來自網路的音頻文件
播放來自網路的音頻文件冇兩種方式:1.直接使用MediaPlayer的靜態create(Context context, Uri uri)方法;2.調用 MediaPlayer的setDataSource(Context context,Uri uri)裝載指定Uri對應的音頻文件。
以第二種方式播放來自網路的音頻文件的步驟如下。
1. 根據網路上的音頻文件所在的位置創建Uri對象。
2. 創建MediaPlayer對象(或利用己有的MediaPlayer對象),並調用MediaPlayer對象的 setDateSource(Context context,Uri uri)方法裝載Uri對應的音頻文件。
3. 調用MediaPlayer對象的prepare()方法准備音頻。
4. 調用MediaPlayer的start()、pause()、stop()等方法控制播放即可。
Ⅲ 求幾款能播放wma格式音樂的android音樂播放軟體,先謝!
喜歡音樂,格式的播放器很多,例舉幾個給樓主參考,可以去【安卓樂園520APK】下載。
【全能播放器】
全能播放器支持多種格式,包括aac,ac3,amv,ape,rm,rmvb,wma,wmv,flac,flv,mp1,mp2,mp3,mp4等等。 1、全新的UI設計,更加人性化,例如,增加全屏時的工具欄,除了進度條,快進,快退,暫停按鈕之外,還能顯示當前電池電量,當前時間等。 2、更高的解碼效率 3、更穩定的播放效果,解決了長期存在的BUG 4、能夠自動播放同一個目錄下的所有影音文件,省去你每次都要手動選擇文件的麻煩。 5、支持android 2.2版,不支持1.5 rmvb格式對機器性能的要求很高,請大家看看自己機子的CPU速度,低於500MHz的,效果肯定不好。
【AStroPlayer媒體播放器】
支持常見音樂格式MP3,Ogg,WMA等音樂播放;同時也支m4a|mid|wma|xmf|mxmf|rtttl|rtx|ota|wav|m4b|m4a|amr的格式文件播放; 視頻方面只支持MP4,3GP視頻文件播放; 這款android媒體播放器擁有先進的書簽,文件夾的自動播放,快速播放,均衡器,皮膚,歌曲記錄,獲取專輯封面,自動恢復,歌詞,電台,播客等,非常不錯,最新英文版本。
Ⅳ 安卓上音質最好的音樂播放器,視頻播放器,推薦下!
poweramp不是每個手機都可以裝的,我手機就不能裝,rockbox的那個界面就不說了難看的。。。哎。。。我個人覺得多米,天天,酷狗都不錯,酷狗下載歌曲和電台非常好用,而多米簡潔的外觀不錯的音質,天天的eq和很多的自定義皮膚耳機控制上下曲等,都相當的好。。。至於QQ音樂我個人感覺太一般了。。。這只是我個人的見解。。。
視頻播放器:如果你的手機CPU是v7及更高的構架我推薦moboplayer,格式通吃,而且那個手勢操作也是相當的人性化!如果你的CPU是600m或者800,我建議用mx視頻播放器,或者開訓視頻,開訊視頻雖然是在線觀看的軟體,但是本地播放也是相當的好,我以前的華為8650就是裝mx和開訊的。。。其他的暴風影音QQ一般般了。。。
總之沒有最好只有更好。。。手機的不同對軟體的運行也是不同的。。。希望樓主能找到好的播放器。。。
Ⅳ 推薦一下安卓系統的音樂播放器和視頻播放器
有這么幾款,都是高端機,樓主看看哪個好看就買哪個吧,配置都很好,我都給你寫好了
索愛X10,這個機子不直接多點觸控,但是用起來還蠻舒服的,我就在用,810萬像素,walkman音樂播放器,娛樂功能強大,1GHZ處理器,安卓2.1操作系統,總體來說也不錯,價位也合適,水貨才2400
HTC DesireHD,水貨價格3300元左右,目前性能最強的手機,安卓2.2系統,4.3寸Super AMOLED屏幕,支持多點觸控,1G的處理器,726M運行內存,800萬像素拍照支持720P高清拍攝。HTC安卓手機的優點是ROM更新快,軟體升級方便,做工也都比較好。
三星i9000,1G的處理器,512M內存,安卓2.1系統,500萬像素拍照,4.0寸480*800解析度Super AMOLED屏幕,支持多點觸控和720P視頻錄放,3D晶元為目前最強的SGX540,游戲很好,娛樂性能是現在最強的手機,價格現在3200左右
摩托里程碑2,側滑蓋全鍵盤,Android 2.2系統,500萬像素拍照,支持720P高清視頻錄放,3.7寸480*800解析度屏幕,支持多點觸控1GHZ處理器,512M內存,游戲能力很強,現在水貨價格3000左右
摩托羅拉Defy,Android系統智能手機,而且是一款充滿陽剛氣質的三防手機,特別適合愛野外活動的人,而且性能也不弱,800MHZ處理器,512M內存,3.7寸480×854像素屏幕,支持多點觸控,500萬像素拍照能力不錯。目前價格2100多(要12月後出的,不然聽筒可能有問題)
三星i897,就是北美定製的i9000,外型比i9000更具時尚感,除了沒有前置攝像頭外,其他硬體配置和i9000一模一樣,1G的處理器,512M內存,安卓2.1系統,500萬像素拍照,4.0寸480*800解析度Super AMOLED屏幕,支持多點觸控和720P視頻錄放,3D晶元是目前手機里最強的,游戲很好,娛樂性能是現在最強的手機,價格比i9000便宜一些,現在2600左右。
3GS沒意思的,3000塊錢能買1GHZ處理器的高端機了,3GS那550HZ的處理器,嚴重不足了已經,反應速度跟不上。而且那300萬像素的攝像頭,不夠用……以上這些手機,個個都是和IPHONE4相媲美而且不輸的!
呵呵,希望能幫助你
Ⅵ 用Android studio1.5.1做一個最簡單的音樂播放器,求大神能從第一步到最後一步演示,
音樂播放器的視頻在網上不是挺容易找的嘛。。。
我找找我網盤還有沒有,有的話再告訴你
Ⅶ android 音樂播放器推薦
子午播放器(版本0.22)
天天動聽(版本1.20)
酷狗叮咚(版本1.0)
酷我聽聽(0.8.2)
摸手音樂(2.0)
開心聽(1.0.3)
Android手機自帶音樂播放器
Ⅷ android 音樂播放器哪個好用
安卓 音樂發燒友必備:
poweramp音樂播放器,支持安卓musicfx音效插件進入軟體音頻專設置開啟musicfx。立體聲效屬果附帶自定義設置,立體聲效果長按按鈕旁字體進入自定義界面。支持音調,可進一步放大低音和高音。附帶專業的音頻壓限器。支持自定義EQ設置。(ROOT許可權下用幸運破解器可完美破解)
Rockbox音樂播放器,擁有最為強大而復雜的EQ自定義設置,專業級音樂播放器,普通人慎用,由於其用法設置過於復雜,不適合新手使用。
以上兩款是音質最強的安卓音樂播放器。建議使用:poweramp音樂播放器
其他的天天動聽,酷狗音樂,酷我音樂盒,多米音樂,是國產的音樂播放器,雖有華麗的界面但音質被poweramp和Rockbox完全秒殺。
Ⅸ android程序播放音樂和改成放視頻怎麼弄,需要在代碼中怎麼更改在哪裡改
首先新建一個項目命名為Mp3Demo(這個看個人喜好),Activity命名為Mp3Demo。
1.接下來在Mp3Demo.java中輸入以下代碼:
package com.example.mp3demo;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Mp3Demo extends Activity
{ //聲名變數
private Button start=null;
private Button pause=null;
private Button stop=null;
private TextView state=null;
private MediaPlayer mp3;
private Boolean flag=false; //設置標記,false表示正在播放
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_mp3_demo);
//取得各按鈕組件
start=(Button) super.findViewById(R.id.start);
pause=(Button) super.findViewById(R.id.pause);
stop=(Button) super.findViewById(R.id.stop);
state=(TextView)super.findViewById(R.id.state);
//為每個按鈕設置單擊事件
start.setOnClickListener(new OnClickListenerStart());
pause.setOnClickListener(new OnClickListenerPause());
stop.setOnClickListener(new OnClickListenerStop());
mp3= new MediaPlayer(); //創建一個MediaPlayer對象
//在res下新建一個raw文件夾把一首歌放到此文件夾中並用英文命名
mp3 = MediaPlayer.create(Mp3Demo.this,R.raw.sky);
}
//各按鈕單擊事件的實現如下
//開始播放
private class OnClickListenerStart implements OnClickListener{
//implementsOnClickListener為實現OnClickListener介面
@Override
//重寫onClic事件
public void onClick(View v)
{
//執行的代碼,其中可能有異常。一旦發現異常,則立即跳到catch執行。否則不會執行catch裡面的內容
try
{
if (mp3!=null)
{
mp3.stop();
}
mp3.prepare(); //進入到准備狀態
mp3.start(); //開始播放
state.setText("Playing"); //改變輸出信息為「Playing」,下同
} catch (Exception e)
{
state.setText(e.toString());//以字元串的形式輸出異常
e.printStackTrace(); //在控制台(control)上列印出異常
}
}
}
//暫停播放
private class OnClickListenerPause implements OnClickListener{
@Override
public void onClick(View v)
{
try
{
if (flag==false) //若flag為false,則表示此時播放器的狀態為正在播放
{
mp3.pause();
flag=true;
state.setText("pause");
}
else if(flag==true){
mp3.start(); //開始播放
flag=false; //重新設置flag為false
state.setText("Playing");
}
} catch (Exception e)
{
state.setText(e.toString());
e.printStackTrace();
}
}
}
//停止播放
private class OnClickListenerStop implements OnClickListener{
@Override
public void onClick(View v)
{
try
{
if (mp3!=null)
{
mp3.stop();
state.setText("stop");
}
} catch (Exception e)
{
state.setText(e.toString());
e.printStackTrace();
}
}
}
//重寫暫停狀態事件
protected void onPause(){
try
{
mp3.release(); //釋放音樂資源
} catch (Exception e)
{
state.setText(e.toString());
e.printStackTrace();
}
super.onPause();
}
}
2.按下來是定義布局文件,代碼如下:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
android:id="@+id/state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="start"/>
android:id="@+id/pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="pause"/>
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="stop"/>