首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MediaSession架构下MediaPlayer与SeekBar的Android通信

MediaSession是Android系统中提供的一个多媒体会话控制框架,用于管理媒体播放会话。它提供了一套标准的接口,使应用程序可以与系统媒体控制器(如通知栏、锁屏界面)进行交互,并能够在不同的媒体播放器之间进行切换和控制。

MediaPlayer是Android系统中用于播放音频和视频文件的核心类之一。它提供了一系列方法和事件,用于控制媒体的播放、暂停、停止、重播等操作,并且可以获取媒体的播放状态、进度等信息。

SeekBar是Android系统中的一个可拖动的进度条控件,通常用于显示和调整媒体播放器的播放进度。它可以与MediaPlayer进行通信,实现同步更新播放进度的功能。

在MediaSession架构下,MediaPlayer与SeekBar之间的通信可以通过以下步骤实现:

  1. 创建MediaSession实例并初始化:首先需要创建一个MediaSession实例,并设置回调函数,用于处理媒体播放器的各种事件(如播放、暂停、停止、进度更新等)。
  2. 创建MediaPlayer实例并设置数据源:接下来,需要创建一个MediaPlayer实例,并设置要播放的音频或视频文件的数据源。可以使用MediaPlayer的setDataSource()方法来设置数据源,可以是本地文件、网络资源或其他来源。
  3. 设置MediaPlayer的回调函数:为了接收MediaPlayer的播放状态和进度更新等信息,需要设置MediaPlayer的回调函数。可以使用MediaPlayer的setOnPreparedListener()、setOnCompletionListener()和setOnSeekCompleteListener()等方法来设置不同的回调函数。
  4. 更新SeekBar的进度:在回调函数中,可以获取到MediaPlayer的当前播放进度,然后通过SeekBar的setProgress()方法来更新SeekBar的显示进度。
  5. 实现SeekBar的拖动操作:当用户通过手势拖动SeekBar时,可以通过SeekBar的setOnSeekBarChangeListener()方法设置监听器,以便在用户拖动时获取SeekBar的当前进度,并将其传递给MediaPlayer进行相应的操作(如seekTo()方法来实现跳转播放)。
  6. 控制MediaPlayer的播放操作:当用户点击播放、暂停、停止按钮时,可以通过MediaSession的回调函数来处理对应的事件,并调用MediaPlayer的相应方法来实现媒体的播放控制。

MediaSession架构下MediaPlayer与SeekBar的Android通信示例代码如下:

代码语言:txt
复制
// 创建MediaSession实例
MediaSessionCompat mediaSession = new MediaSessionCompat(context, "MediaSession");

// 设置MediaSession的回调函数
mediaSession.setCallback(new MediaSessionCompat.Callback() {
    @Override
    public void onPlay() {
        mediaPlayer.start();
    }

    @Override
    public void onPause() {
        mediaPlayer.pause();
    }

    @Override
    public void onStop() {
        mediaPlayer.stop();
    }

    @Override
    public void onSeekTo(long pos) {
        mediaPlayer.seekTo((int) pos);
    }
});

// 创建MediaPlayer实例并设置数据源
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(dataSource);

// 设置MediaPlayer的回调函数
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        // 媒体准备完成后开始播放
        mp.start();
    }
});

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // 媒体播放完成后的处理
    }
});

mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
    @Override
    public void onSeekComplete(MediaPlayer mp) {
        // 跳转播放完成后的处理
    }
});

// 更新SeekBar的进度
mediaPlayer.setOnProgressUpdateListener(new MediaPlayer.OnProgressUpdateListener() {
    @Override
    public void onProgressUpdate(MediaPlayer mp, int progress, boolean fromUser) {
        seekBar.setProgress(progress);
    }
});

// 实现SeekBar的拖动操作
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        if (fromUser) {
            mediaPlayer.seekTo(progress);
        }
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // 开始拖动SeekBar时的处理
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // 停止拖动SeekBar时的处理
    }
});

// 控制MediaPlayer的播放操作
mediaSession.getController().getTransportControls().play();
mediaSession.getController().getTransportControls().pause();
mediaSession.getController().getTransportControls().stop();
mediaSession.getController().getTransportControls().seekTo(position);

以上是在MediaSession架构下,MediaPlayer与SeekBar的Android通信的基本流程和示例代码。具体的应用场景和推荐的腾讯云相关产品和产品介绍链接地址,可以根据具体需求和场景进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android-MediaPlayer(2)加进度条和时间显示

SeekBar使用显示歌曲播放进度及时间 上一篇:Android MediaPlayer 我们之前播放音乐时候都会有进度条,今天我们就来加一个进度条,并显示你播放进度和当前歌曲时间。...我们想一,我们已经知道这个音频文件放在手机里面了,也已经可以播放了,那么我要用进度条来显示当前歌曲播放进度该怎么做,并且你可以通过手指拖拽这个Seekbar来到你想要歌曲片段出,并且松手就要播放音乐...() / 1000)); } }); 解释一,首先我们定义了SeekBar,然后调用SeekBarsetOnSeekBarChangeListener()(PS...刚看到这个你可能有点懵,解释一, **1.onProgressChanged()**这个方法我理解为进度条改变时使用方法。...SeekBar还是其他一些方式改变了SeekBar值。

5.4K20

Android编程之播放器MediaPlayer实现均衡器效果示例

本文实例讲述了Android播放器MediaPlayer实现均衡器效果。...分享给大家供大家参考,具体如下: 这几天在系统学习Android官方API Demos,看到实现均衡器效果,就把官方API中代码copy下来,根据网上前辈指引略有修改,添加了注释。.../ (rect.height() / 2); } // 绘制波形曲线 canvas.drawLines(points, paint); break; } } } 自己新建 项目时,记得在res/raw添加一个名为...更多关于Android相关内容感兴趣读者可查看本站专题:《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android开发入门进阶教程》、《Android视图View技巧总结》、《Android...编程之activity操作技巧总结》、《Android文件操作技巧汇总》、《Android资源操作技巧汇总》及《Android控件用法总结》 希望本文所述对大家Android程序设计有所帮助。

69921

《移动互联网技术》第九章 感知多媒体: 了解质感设计基本原则和设计方法

无线网络技术部分主要介绍移动通信网络(包括2G/3G/4G/5G技术)、无线传感器网络、Ad hoc网络、各种移动通信协议,以及移动IP技术。...=“wrap_content” android:textSize=“28sp”/> 使用设备定位功能需要授予权限,考虑一是使用动态授权还是静态授权?...MediaPlayerAndroid内置多媒体播放类,在android.media.MediaPlayer包中,它包含了音频和视频播放功能。...2**、本单元课后习题** 1、说明SoundPoolMediaPlayer区别,以及在什么情况使用SoundPool。...在这样场景,可以使用SoundPool代替MediaPlayer来播放这些音效。 MediaPlayer:占用资源较高,不支持同时播放多个音频。

9110

Android10.0实现本地音乐播放(附源码下载)

Android10.0是内外分存了,应用是没有权限读取内存,需要在配置文件中application中加上属性:android:requestLegacyExternalStorage=“true”,...,ActivityonCreate方法是同一级别的 @Override public void onRequestPermissionsResult(int requestCode, @NonNull...①在res目录下drawable资源新建一个类型为selectorxml文件,里面设置属性 <?...代码包里面的Music_Player\app\releaseMusicPlayer.apk是app安装包哦,期待您点赞,评论 地址:Music_Player_jb51.rar 到此这篇关于...Android10.0实现本地音乐播放(附源码下载)文章就介绍到这了,更多相关Android10.0本地音乐播放内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn

2.2K21

Android开发笔记(一百二十五)自定义视频播放器

视频播放方式 在Android中播放视频方式有两种: 1、使用MediaPlayer结合SurfaceView进行播放。...其中通过SurfaceView显示视频画面,通过MediaPlayer来设置播放参数、并控制视频播放操作;该方式具体说明参见《Android开发笔记(五十七)录像录音播放》。...VideoView其实是从SurfaceView扩展而来,并在内部集成了MediaPlayer,从而实现视频画面视频操作统一管理;而MediaController则是一个简单播放控制条,它实现了基本控制按钮...所有方法,而且提供MediaPlayer主要方法。...因为默认情况,App每次切换屏幕都会重启Activity,即先执行原页面的onDestroy方法,再执行新页面的onCreate方法,这便导致还在播放当中视频被中断返回了。

2.7K40

安卓开发个人小作品(3) – 多功能音乐播放器

目录 1.实现扫描本地音乐 2.音乐播放控制 3.关联进度条seekbar,自定义seekbar 4.单曲循环,顺序播放,随机播放实现 5.设置喜爱音乐 6.播放列表背景图设置保存 7.实现APP...3.关联进度条seekbar,自定义seekbar 关联进度条方法也很简单,这里将更新seekbar方法重新开了一个线程,专门处理更新,代码如下 // 自定义线程,用于下方seekbar刷新...,核心方法就是MediaPLayersetOnCompeleteListener,代码如下 // 监听mediaplayer播放完毕时调用 mplayer.setOnCompletionListener...主要就是sharepreference使用,代码很简单,就不贴了 6.播放列表背景图设置保存 设置播放列表背景也就是调用一,listview.setBackground即可,但是我们如果不进行保存的话...实现主题效果,有很多种方法,我这里采用是自定义属性方法,首先我们在values新建一个文件attrs,内容如下 <?

1.6K30

理解音频焦点 (第 33 部分):三个步骤实现音频聚焦

以下代码展示了 OnAudioFocusChangeListener 接口实现,它处理了 Google Assistant 应用协同工作时候,音频焦点各种状态变化。...在 Android O 以下版本,您需要自己用代码实现,具体实现方式如上面代码所示。...完整代码示例 android-MediaBrowserService 完整展示了音频焦点处理,使用 MediaPlayer 来播放音乐,同时使用了 MediaSession 。...Android多媒体开发资源 示例代码 — MediaBrowserService 示例代码 — MediaSession Controller Test (带有音频焦点测试) 了解 MediaSession...多媒体 API 指南 — 多媒体应用程序概述 多媒体 API 指南 — 使用 MediaSession 使用 MediaPlayer 构建简单音频应用程

33921

Android 多媒体开发学习之简单音乐播放器

既然我们目的已经很明确,那我们先分析一: 1: 我们播放音乐任务可以放在Activity中吗?     ...方法中创建MediaPlayer @Override public void onCreate() { // 服务创建时,我们创建MediaPlayer super.onCreate();...player = new MediaPlayer(); } 第三步:启动音乐播放,启动音乐播放当然要有步骤: 我们先看一张关于如何启动音乐图 从上图中可以看到,启动音乐播放需要几个步骤...如果当前正在播放,需要暂停就需要调用pause() 如果想从暂停回到播放就需要调用(onstart) 如果向停止播放就需要调用(onstop),如果向接着播放就需要重新prepare,start 一是如何启动音乐播放...BIND_AUTO_CREATE); } static Handler handler = new Handler() { public void handleMessage(android.os.Message

69910

Android MediaPlayer 音乐播放器扫描 本地音乐、上一曲、下一曲切歌、播放本地音乐

Android MediaPlayer 本地音乐播放器 运行截图 项目请在真机(自己手机)上测试运行,因为我不喜欢用虚拟机。...为了不浪费您时间,先看一运行效果图, 一进去先进行音乐扫描,然后列表展示出来,点击即可播放。 演示视频地址 ? ?...版本,我项目中用是AndroidX,如果你没有用过,建议你先去了解一: 好了,下面看布局文件,这次是做一个完成项目,所以新建了一个工程,里面有一些样式和图片、图标,工程目录如下图,这里就不在做解释了...--歌曲播放进度条 ,样式是自定义,因为原生太丑了--> <SeekBar android:layout_marginLeft=...seekBar) { int progress = seekBar.getProgress(); mediaPlayer.seekTo(progress

2.9K51

Android实现音乐播放进度条传递信息两种方式(在service和activity中)

中建立消息接收机制 我们需要在activity中建立一个用于接收信息handler(handler简单说是在android中可以发送消息和也可以处理消息一种机制,当然它用途更加强大,有时间可以去自己了解...nowTime; //音乐进度条 static SeekBar songseek; //运用Handler中handleMessage方法接收service传递音乐播放进度信息...java.lang.IllegalStateException android.media.MediaPlayer....(); } }); 看一效果 ?...Android作业 音乐播放器 总结 到此这篇关于Android实现音乐播放进度条传递信息两种方式(在service和activity中)文章就介绍到这了,更多相关android 实现音乐播放进度条内容请搜索

2.2K30
领券