Ⅰ 安卓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"/>