基于Android8.1代码 java MediaPlayer() 先从源头开始看 frameworks/base/media/java/android/media/MediaPlayer.java...public MediaPlayer() { super(new AudioAttributes.Builder().build(), AudioPlaybackConfiguration.PLAYER_TYPE_JAM_MEDIAPLAYER...(this)); frameworks/base/media/jni/android_media_MediaPlayer.cpp static void android_media_MediaPlayer_native_setup...,将java的MediaPlayer实例传递进去 3 将JNIMediaPlayerListener 设置给MediaPlayer() 4 将FFMediaPlayer 设置给Java层的mNativeContext...MediaPlayer() frameworks/av/media/libmedia/mediaplayer.cpp MediaPlayer::MediaPlayer() { ALOGV("constructor
利用MediaPlayer完成一个最简单的音乐播放。这个基本的控制掌握后,可直接利用为背景乐的控制。...private MediaPlayer mediaPlayer = new MediaPlayer(); 由于音乐播放也是需要专门的权限的,所以在 onCreate 中动态申请权限,然后才初始化播放器。...: //如果在播放中,立刻停止。...如果没有这条语句,实测的效果是点击了停止按钮后,再点击开始按钮是无法顺利播放音乐的。感兴趣的朋友可以实验一下。 onDestroy() 的逻辑很容易理解,就是彻底清理音乐播放占用的资源了。...if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); } break; case R.id.btnStop: //如果在播放中,立刻停止。
MediaPlayer涉及的的文件路径 这里参考的是android8.1 的代码 JAVA类的路径: frameworks/base/media/java/android/media/MediaPlayer.java...JNI路径: frameworks/base/media/jni/android_media_MediaPlayer.cpp 编译为 libmedia_jni.so native 层的接口 frameworks...MediaPlayerArch.png MediaPlayer是给应用层提供的接口,通过jni调用native层,native层又采用C/S框架,通过binder调用到service端, servcie
Android MediaPlayer 本地音乐播放器 运行截图 项目请在真机(自己的手机)上测试运行,因为我不喜欢用虚拟机。...为了不浪费您的时间,先看一下运行的效果图, 一进去先进行音乐扫描,然后列表展示出来,点击即可播放。 演示视频地址 ? ?...mList = new ArrayList();//实例化 //数据赋值 mList = MusicUtils.getMusicData(this);//将扫描到的音乐赋值给音乐列表...(mediaPlayer.isPlaying()) { mediaPlayer.pause(); mediaPlayer.reset...@Override public void onStartTrackingTouch(SeekBar seekBar) { } // 当手停止拖拽进度条时执行该方法
AppCompatActivity { /** * 规定开始音乐、暂停音乐、结束音乐的标志 */ public static final int PLAT_MUSIC=1; public...*/ public class MainActivity extends AppCompatActivity { /** * 规定开始音乐、暂停音乐、结束音乐的标志 */ public...private MediaPlayer mediaPlayer; //标志判断播放歌曲是否是停止之后重新播放,还是继续播放 private boolean isStop=true; /**...,并且intent=null * START_NOT_STICKY:非粘性,遇到异常停止不会重启 * START_REDELIVER_INTENT:粘性的,重新启动,并且将Context...=null){ //停止之后要开始播放音乐 mediaPlayer.stop(); isStop=true; } break; } return START_NOT_STICKY
*/ public class MainActivity extends AppCompatActivity { /** * 规定开始音乐、暂停音乐、结束音乐的标志 */...R.id.btn_pausemusic: playingmusic(PAUSE_MUSIC); break; //停止...private MediaPlayer mediaPlayer; //标志判断播放歌曲是否是停止之后重新播放,还是继续播放 private boolean isStop=true...,并且intent=null * START_NOT_STICKY:非粘性,遇到异常停止不会重启 * START_REDELIVER_INTENT...=null){ //停止之后要开始播放音乐 mediaPlayer.stop();
本文实例为大家分享了Android媒体开发之音乐播放器的具体代码,供大家参考,具体内容如下 可以对音乐文件实现播放、暂停、重播和停止功能。退出应用和回到桌面时音乐停止。 主界面: ?...=new MediaPlayer(); } //以下方法会造成只要应用在后台音乐都会停止播放 @Override //当应用不在前台时,停止播放 protected void onPause(...) { if(mediaplayer.isPlaying()){ position=mediaplayer.getCurrentPosition(); mediaplayer.stop(); }...mediaplayer.setDataSource(path); mediaplayer.prepare();//进行缓冲 //设置缓冲监听器 mediaplayer.setOnPreparedListener...mediaplayer.start(); } }); } catch (Exception e) { e.printStackTrace(); } } } 实现了简单的SD卡中音乐的播放
MediaPlayer 突然觉得这个音乐播放有点意思,我们来做一下吧。 首先我们来一个名为MediaPlayerDemo的项目。...然后再main.xml文件里面创建三个按钮,分别是播放、暂停、停止,代码如下: <?xml version="1.0" encoding="utf-8"?...private MediaPlayer mediaPlayer = new MediaPlayer(); @Override protected void onCreate(...if(mediaPlayer.isPlaying()){ mediaPlayer.reset();//停止播放 initMediaPlayer...在类初始化的时候就创建了一个MediaPlayer的实例,然后在onCreate()方法中进行了运行时权限处理,动态申请WRITE_EXTERNAL_STORAGE权限,因为我们的音乐文件是放在手机SD
为了模拟实现Android MediaPlayer的实现,需要先了解下MediaPlayer的简单使用方法, 这里只列举其中一种使用方式, 以这个为模板利用ffmpeg实现对应的同名接口和调用方法....MediaPlayer状态 首先还是贴一下Android MediaPlayer 的状态转换图.因为所有接口的设计和调用方法会以这个状态转换图为依据, 理解状态图也能更好地理解播放器 ?...mediaplayer_state_diagram.gif 其实理解Android MediaPlayer最直接的方法是看google的官方文档 https://developer.android.google.cn.../reference/android/media/MediaPlayer 因为已经有大量的文章转载和翻译,所以这里暂时不做介绍和翻译,可能会在后续实现接口的过程中引用和参考里面的内容 MediaPlayer...MediaPlayerDemo.png 目前还是很不完善, 不过先从简单开始,再一步一步搭建由ffmpeg实现的播放器.从Demo看出,要创建一个可以用的播放器demo,需要实现以下的接口 public MediaPlayer
下面介绍使用MediaPlayer播放音频 在Android中,提供了MediaPlayer类来播放音频。...可以停止正在播放的音频 player.stop(); 4.暂停播放 可以暂停正在播放的音频 player.pause(); 下面做一个小实例,实现包括播放、暂停/继续和停止功能的简易音乐播放器...; play.setEnabled(false); return; } //添加完成事件监听器,用于当音乐播放完毕后,重新开始播放因音乐 player.setOnCompletionListener...());//重新设置要播放的音频 player.prepare();//预加载音频 player.start();//开始播放 hint.setText("正在播放音乐..."); } catch...停止效果如图 ? 以上就是本文的全部内容,希望对大家的学习有所帮助。
只是熟悉MediaPlayer用法 简易功能是:播放暂停,停止后从头播放,进度条跟随音乐进度,拖动进度条音乐也随之改变播放进度。 网上音乐接口百度能够搜到,这里就只写一点原理。...(position); } // 暂停音乐的方法 public void pauseMusic() { if (mediaPlayer.isPlaying())...{ // 暂停音乐 mediaPlayer.pause(); timer.cancel(); Log.d...(TAG, "音乐暂停了"); } } public void stopMusic() { mediaPlayer.stop(); //...如果不取消定时任务,mediaplayer停止就崩了 timer.cancel(); task.cancel(); mediaPlayer = null
参考了一下网上别人写的,再使用的时候是放在新开的线程中来播放音乐的,后来发现每次进入Activity后就会重复开始一个音乐播放的声音。为了避免重复开启播放功能我在原来代码的基础上增加了单例模式。...,停止它---if the music is playing or paused, stop it mBackgroundMediaPlayer.stop(); mBackgroundMediaPlayer.setLooping...= false; } catch (Exception e) { Log.e(TAG, "playBackgroundMusic: error state"); } } } /** * 停止播放背景音乐...assetFileDescritor = mContext.getAssets() .openFd(path); mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource...(); mediaPlayer.setVolume(mLeftVolume, mRightVolume); } catch (Exception e) { mediaPlayer = null;
传送到github看源码 下载apk试用 密码:rukn 前言 想在天朝听音乐还是有些难度的, 一般来说, 两三个app还是要的. 那何不尝试自己做个手机播放器, 听个爽呢?!...今天就带大家先做个简单的带进度条可拖动的音乐播放器. 添加了后台播放的功能, 很实用哦~ 先看效果图 很尴尬的一点就是大家没法听到音乐, 就只能看看图片....具体的说明请移步官方文档 /** * 播放音乐 * * @param path 播放文件的路径 */ public void playMusic...mediaPlayer.setDataSource(path); mediaPlayer.setLooping(true); mediaPlayer.prepare...e.printStackTrace(); } } /** * 暂停播放音乐 */ public void pauseMusic()
方法,设置完成监听器,参数:OnCompletionListener接口,使用匿名内部类实现接口,重写方法onCompletion()方法,在这个方法里面调用播放按钮的setEnable(true) 停止播放...判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真 调用MediaPlayer对象的stop()方法,停止播放 调用MediaPlayer对象的release...break; // 重播 case R.id.bt_replay: replay(); break; // 停止...case R.id.bt_stop: stop(); break; } } //停止播放 private...android:layout_width="0dp" android:layout_height="wrap_content" android:text="停止
基本的音乐播放 设置播放音乐文件 Android播放媒体文件大概都是使用MediaPlayer这个类来操作的。...在播放音乐前,必须要给这个MediaPlayer设置一要播放的东西,对于文件资源来说(音乐,视频都算一种文件资源),能够唯一标识它的就是文件的地址(路径)。...(); // 停止播放 - 不可以使用start重新开始 mediaPlayer.pause(); // 暂停当前播放 mediaPlayer.seekTo(0); // 移动到某一播放进度 mediaPlayer.getCurrentPosition...那么要实现音乐播放功能只需要在调用了setPlayPath(path)后再调用mediaPlayer.start()就能成功的播放音乐前提条件是你确实的设置了正确的音乐路径 获取音乐的信息 获取音乐信息可以使用...它和MediaPlayer也需要一个文件路径来寻找到音乐。
分享给大家供大家参考,具体如下: 在 Android 中播放音频文件一般都是使用 MediaPlayer 类来实现的,它对多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单...reset() 将 MediaPlayer 对象重置到刚刚创建的状态。 seekTo() 从指定的位置开始播放音频。 stop() 停止播放音频。...start()方法就可以开始播放音频,调用 pause()方法就会暂停播放,调用 reset()方法就会停止播放。...这样一个简易版的音乐播放器就完成了,现在将程序运行到手机上,界面如图所示: ?...点击一下 Play 按钮就可以听到优美的音乐了,然后点击 Pause 按钮声音会停住,再次点 击 Play 按钮会接着暂停之前的位置继续播放。
SeekBar使用显示歌曲播放进度及时间 上一篇:Android MediaPlayer 我们之前播放音乐的时候都会有进度条,今天我们就来加一个进度条,并显示你的播放进度和当前歌曲时间。...() / 1000;//获取音乐总时长 int position = mediaPlayer.getCurrentPosition();//获取当前播放的位置...() / 1000;//获取音乐总时长 int position = mediaPlayer.getCurrentPosition();//获取当前播放的位置...= mediaPlayer.getDuration();//获取音乐总时间 seekBar.setMax(duration);//将音乐总时间设置为Seekbar...= mediaPlayer.getDuration();//获取音乐总时间 seekBar.setMax(duration);//将音乐总时间设置为Seekbar
Activity那么复杂,它只继承了onCreate()、onStart()、onDestroy()三个方法 当我们第一次启动Service时,先后调用了onCreate()、onStart()这两个方法;当停止...它可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停止自己,只要调用一次stopService()方法便可以停止服务,无论调用了多少次的启动服务方法...mediaPlayer.isPlaying()) { mediaPlayer.start(); } } public void pause() { if (mediaPlayer !...onDestroy(),停止并释放mediaPlayer音乐资源,如果当执行context.stopService()时调用此方法 4、Activity中,onClick()函数中close与exit...(intent); 关闭了service服务,在Service中会调用3中的onDestroy()停止并释放音乐资源,后才执行this.finish(); 关闭了本Activity窗体 源码下载 六、
()方法来停止自己。...例如:一个后台播放音乐服务可以通过startService(intend)对象来播放音乐。...这种情况下,stopServices()方法实际上不会停止服务,直到最后一次绑定关闭。...例如,一个背景音乐播放服务可以在onCreate()方法里播放,在onDestroy()方法里停止。...音乐service可以通过开打intent对象来找到要播放的音乐,然后开始后台播放。注: service停止时没有相应的回调方法,即没有onStop()方法,只有onDestroy()销毁方法。
本文实例为大家分享了Android播放音乐案例的具体实现代码,供大家参考,具体内容如下 效果: ?...分析: 和上一篇文章的结构是一样的,只不过我们需要在这里里面加上播放音乐的一些操作: 其实也就是调用系统的播放音乐的API而已,写在服务里面就好, //媒体播放器 private MediaPlayer...arg0) { //播放音乐 player.start(); } }); //准备资源,好来播放音乐 //异步函数,这个函数内部会开启一个子线程...onStartCommand"); return super.onStartCommand(intent, flags, startId); } /** * service被停止后调用...,启动服务 startService(intent); break; case R.id.btn_stop://结束音乐,停止服务 stopService(intent
领取专属 10元无门槛券
手把手带您无忧上云