Android - 获取当前播放歌曲的持续时间和耗时

标签 android broadcastreceiver intentfilter

我正在尝试获取当前在音乐播放器中播放的歌曲的持续时间。 我正在使用下面的代码,并且能够获取艺术家姓名、轨道名称和其他一些详细信息,但无法找到持续时间和耗时。有没有其他方法可以找到它?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    IntentFilter iF = new IntentFilter();
    iF.addAction("com.android.music.metachanged");
    iF.addAction("com.android.music.playstatechanged");
    iF.addAction("com.android.music.playbackcomplete");
    iF.addAction("com.android.music.queuechanged");

    iF.addAction("com.htc.music.metachanged");

    iF.addAction("fm.last.android.metachanged");
    iF.addAction("com.sec.android.app.music.metachanged");
    iF.addAction("com.nullsoft.winamp.metachanged");
    iF.addAction("com.amazon.mp3.metachanged");     
    iF.addAction("com.miui.player.metachanged");        
    iF.addAction("com.real.IMP.metachanged");
    iF.addAction("com.sonyericsson.music.metachanged");
    iF.addAction("com.rdio.android.metachanged");
    iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged");
    iF.addAction("com.andrew.apollo.metachanged");

    iF.addAction("com.android.music.playstatechanged");
    iF.addAction("com.android.music.playbackcomplete");
    iF.addAction("com.android.music.metachanged");
    //HTC Music
    iF.addAction("com.htc.music.playstatechanged");
    iF.addAction("com.htc.music.playbackcomplete");
    iF.addAction("com.htc.music.metachanged");
    //MIUI Player
    iF.addAction("com.miui.player.playstatechanged");
    iF.addAction("com.miui.player.playbackcomplete");
    iF.addAction("com.miui.player.metachanged");
    //Real
    iF.addAction("com.real.IMP.playstatechanged");
    iF.addAction("com.real.IMP.playbackcomplete");
    iF.addAction("com.real.IMP.metachanged");
    //SEMC Music Player
    iF.addAction("com.sonyericsson.music.playbackcontrol.ACTION_TRACK_STARTED");
    iF.addAction("com.sonyericsson.music.playbackcontrol.ACTION_PAUSED");
    iF.addAction("com.sonyericsson.music.TRACK_COMPLETED");
    iF.addAction("com.sonyericsson.music.metachanged");
    iF.addAction("com.sonyericsson.music.playbackcomplete");
    iF.addAction("com.sonyericsson.music.playstatechanged");
    //rdio
    iF.addAction("com.rdio.android.metachanged");
    iF.addAction("com.rdio.android.playstatechanged");
    //Samsung Music Player
    iF.addAction("com.samsung.sec.android.MusicPlayer.playstatechanged");
    iF.addAction("com.samsung.sec.android.MusicPlayer.playbackcomplete");
    iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged");
    iF.addAction("com.sec.android.app.music.playstatechanged");
    iF.addAction("com.sec.android.app.music.playbackcomplete");
    iF.addAction("com.sec.android.app.music.metachanged");
    //Winamp
    iF.addAction("com.nullsoft.winamp.playstatechanged");
    //Amazon
    iF.addAction("com.amazon.mp3.playstatechanged");
    //Rhapsody
    iF.addAction("com.rhapsody.playstatechanged");
    //PowerAmp
    iF.addAction("com.maxmpz.audioplayer.playstatechanged");
    //will be added any....
    //scrobblers detect for players (poweramp for example)
    //Last.fm
    iF.addAction("fm.last.android.metachanged");
    iF.addAction("fm.last.android.playbackpaused");
    iF.addAction("fm.last.android.playbackcomplete");
    //A simple last.fm scrobbler
    iF.addAction("com.adam.aslfms.notify.playstatechanged");
    //Scrobble Droid
    iF.addAction("net.jjc1138.android.scrobbler.action.MUSIC_STATUS");

    registerReceiver(mReceiver, iF);
}

private BroadcastReceiver mReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extra = intent.getExtras();
        Log.v("yossi", extra.toString());

    }
};

最佳答案

您将通过使用以下 Intent 获得歌曲的持续时间。但仅支持少数玩家。请尝试

duration    =intent.getLongExtra(MediaStore.Audio.AudioColumns.DURATION, 0);
duration    =intent.getLongExtra("duration", 0);

关于Android - 获取当前播放歌曲的持续时间和耗时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27756822/

相关文章:

java - 如何获取用户当前登录的帖子的 key

Android-无法解析符号 BaseObservable

android - BroadcastReceiver onReceive() 被调用两次

android - Intent-Filter 不能同时打开 http 和 content

android - 带有 utf8 字符的 jstring(JNI) 到 std::string(c++)

android - Android onResume后ListView为空

android - 将广播接收器包装到流中(协程)

java - 应用程序未运行时广播接收器不工作

android - 使用显式与隐式 Intent 启动 android 服务

"intent-filter"中的 android 过滤器 url