mono for android 获取不到正确mediaPlayer的duration 并且Stop()方法和Pause()方法效果居然一样

美人迟暮了又迟暮 美人迟暮了又迟暮 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
using System;
using System.Threading;

using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Media;
using Android.Util;

namespace mediaPlayer
{
[Activity(Label = "mediaPlayer", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity,MediaPlayer.IOnCompletionListener
{
int count = 1;
MediaPlayer idPlayer;
TextView tv;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);

// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);

// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.MyButton);

button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };

Button playId = FindViewById<Button>(Resource.Id.button1);
playId.Click += playId_Click;
Button stop = FindViewById<Button>(Resource.Id.button2);
stop.Click += playNet_Click;
Button pause = FindViewById<Button>(Resource.Id.button3);
pause.Click += playFile_Click;
Button video = FindViewById<Button>(Resource.Id.button4);
video.Click += video_Click;
tv = FindViewById<TextView>(Resource.Id.textView1);
}

void video_Click(object sender, EventArgs e)
{
Intent intent = new Intent(this, typeof(Video));
StartActivity(intent);
}


void playFile_Click(object sender, EventArgs e)
{
idPlayer.Pause();
}

void playNet_Click(object sender, EventArgs e)
{
idPlayer.Stop();
//int position = idPlayer.CurrentPosition / 1000;
//Toast.MakeText(this, position.ToString(), ToastLength.Short).Show();
}

void playId_Click(object sender, EventArgs e)
{
idPlayer = new MediaPlayer();
if (idPlayer != null)
{
idPlayer.SetDataSource(this.Resources.OpenRawResourceFd(Resource.Raw.yshq).FileDescriptor);
idPlayer.SetOnCompletionListener(this);
idPlayer.Prepare();
idPlayer.Start();
Thread thread = new Thread(new ThreadStart(Run));
thread.Start();
}
}

private void Run()
{
while (true)
{
Thread.Sleep(1000);
int i = (idPlayer.CurrentPosition / 1000);
RunOnUiThread(() =>
{
//打印当前音乐播放当前时间和总时间
//当前时间输出正确
//总共时间输出415 (总共时间为15s)
tv.Text = i.ToString() + "&&&" +(idPlayer.Duration).ToString();
});
if(i == 15)
{
break;
}
}
}

public void OnCompletion(MediaPlayer mp)
{
mp.Stop();
mp.Release();
}
}
}
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
美人迟暮了又迟暮
C# 111,129 成员 642,538 内容