Android中如何截获第三方媒体播放器中正在播放的音乐或视频的当前播放时间进度和总时间?求高手指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中如何截获第三方媒体播放器中正在播放的音乐或视频的当前播放时间进度和总时间?求高手指点相关的知识,希望对你有一定的参考价值。

需要把第三方播放器中正在播放的音乐或视频的当前播放时间进度和播放总时间信息取出来用于显示在指定位置;

参考技术A //音乐的总长度
int max=media.getDuration();
//获取当前音乐播放位置
int current=media.getCurrentPosition();

Android:如何停止其他活动的媒体播放器?

【中文标题】Android:如何停止其他活动的媒体播放器?【英文标题】:Android: How to stop other active media players? 【发布时间】:2013-02-13 18:17:11 【问题描述】:

我正在尝试创建一个音乐播放器。我的应用程序有 2 个玩家 -

(a) 播放记忆中的歌曲

(b) 使用 URL 播放在线音乐流

我的应用的主页/默认活动是 (a)。对于玩家 (b),有一个单独的活动。

问题是当用户在活动 (b) 中按下播放按钮播放 URL 流时,内存中的曲目被播放。

似乎来自活动 (a) 的 MediaPlayer 仍然处于活动状态。

所以我想要:

如果用户按下播放按钮,所有其他媒体播放器都会停止。

有什么方法可以参考其他媒体播放器;检查它们是否处于活动状态;如果是,请阻止他们。

从模糊的角度来看,我认为这可以通过向活动 (a) 的 Service 发送 broadcast 来完成,并在那里创建一个函数来监听它并停止播放器。

但这对我来说似乎有点粗鲁,而且我应该如何获得 (a) 中玩家的参考。

希望我已经解决了我的疑问。

请提出建议。

谢谢

【问题讨论】:

【参考方案1】:

您可以在项目中创建一个类并将其命名为 MediaPlayerRegistry,您可以在其中存储对当前正在使用的每个 mediaPlayer 对象的引用。并在您的应用程序中的任何位置访问它们以停止/释放/重播它们。它看起来像这样:

public class MediaPlayerRegistry 
      public static List<MediaPlayer> mList = new ArrayList<MediaPlayer>();

然后,您可以从任何活动中调用:

MediaPlayerRegistry.mList.put(MediaPlayer mPlayer);

将它添加到您的注册表...当您想要释放它时,请停止任何正在运行的对象。

for ( MediaPlayer player : MediaPlayerRegistry.mList) 
if (player != null && player.isplaying() 
      player.release();


只需将其视为您自己的 MediaPlayer 对象池

【讨论】:

谢谢,这是一个简单的解决方案。但是 mediaPlayer 可能没有播放,所以 isPlaying() 将返回 false。如何解决? 我做了一些回溯并发现了这个问题。 (***.com/a/14860443/1433826)

以上是关于Android中如何截获第三方媒体播放器中正在播放的音乐或视频的当前播放时间进度和总时间?求高手指点的主要内容,如果未能解决你的问题,请参考以下文章

如何在android jni中播放Spotify媒体

Android:如何停止其他活动的媒体播放器?

如何在android中播放在线广播

android中怎么样能获取正在播放的音乐名?

Android 使用VideoView实现简单视频播放

如何在 Android Studio 中创建迷你音乐播放器(Activity 或 Fragment 等)