如何在 Xamarin 中使用 MediaPlayer 获取曲目的持续时间

Posted

技术标签:

【中文标题】如何在 Xamarin 中使用 MediaPlayer 获取曲目的持续时间【英文标题】:How do I get duration of track using MediaPlayer in Xamarin 【发布时间】:2017-08-14 11:07:38 【问题描述】:

我想使用 Xamarin C# android 查找音轨的持续时间。我正在使用 MediaPlayer 播放我的音频文件。

关于 SO 和官方文档的大多数其他答案都指向我在 MediaPlayer class 中的一个简单方法 MediaPlayer.GetDuration()

但是,intellisense 并未将此作为选项。 Get Track Info 出现了,这可能有用吗?

完整代码如下

public void StartAudio()

    if (player == null)
    
        player = new MediaPlayer();
        player.Completion += PlayNextTrack;              
    
    else
    
        player.Reset();
    

    player.Looping = false;
    AssetFileDescriptor descriptor = Assets.OpenFd(currentTrack.FileName.ToString());
    player.SetDataSource(descriptor.FileDescriptor,descriptor.StartOffset,descriptor.Length);         
    player.Prepare();
    player.Start();

    if (currentTrack.TrackType == TrackType.Pause)
    
        int timerLength = 0;
        int duration = player.GetDuration();
        timerLength = duration - 10; // or something...
        StartAlarmClockTimer(timerLength); // Special Case. Attach a countdown timer to this track
    
    Toast.MakeText(this, "Playing Track " + currentTrack.TrackNumber.ToString(), ToastLength.Short).Show();               

【问题讨论】:

该死的。谢谢。为什么文档中没有这么简单的东西?这正常吗? 谢谢。你知道(出于好奇)为什么 getDuration 不存在吗? 我使用的是标准的 Xamarin C#。我很困惑。还是谢谢你。 【参考方案1】:

Xamarin 通常将 Java 样式的 Get 方法重命名为标准 C# 属性

因此,Java 中的 GetDuration() 在 C# 中变为 Duration

【讨论】:

以上是关于如何在 Xamarin 中使用 MediaPlayer 获取曲目的持续时间的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色

如何在 Xamarin 中使用 Google Map id?

如何在 Appium 中使用 javascript 单击 Xamarin 元素?

如何使用 Xamarin 在 Android 中同步获取 GPS 位置更新?

如何在VS2017专业版中使用Xamarin Profiler

如何在 xamarin 表单 UWP 中使用 AppWindow 打开多个窗口?