如何在Xamarin中使用MediaPlayer获取音轨持续时间

时间:2017-08-14 11:07:39

标签: c# android audio xamarin

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

SO和官方文档上的大多数其他答案都指向了MediaPlayer class

中的一个简单方法MediaPlayer.GetDuration()

然而,intellisense并没有把它作为一种选择。获取跟踪信息可能有用吗?

where is get duration?

以下完整代码

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();               
}

1 个答案:

答案 0 :(得分:2)

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

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

中变为Duration