mono for android 获取不到正确mediaPlayer的duration 并且Stop()方法和Pause()方法效果居然一样
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();
}
}
}
...全文
相关推荐
android 录音与播放录音 带根据音频大小动态效果
android 录音与播放录音 带根据音频大小动态效果
Android音频开发实战指南:从MediaPlayer到AAudio的组件选型与避坑
在移动应用开发中,音频处理是构建多媒体功能的核心技术之一,涉及从基础播放到实时流处理的多个层面。其原理基于数字音频的采样、编码与渲染流程,通过系统提供的不同层级API实现。掌握音频开发的技术价值在于能够为应用提供流畅、低延迟的声音体验,直接影响用户体验与应用性能。在Android平台上,开发者需要根据具体场景选择合适的组件:MediaPlayer适合媒体文件播放,SoundPool专为短音效优化,而AudioTrack与AudioRecord则为底层PCM流处理提供了灵活控制。对于低延迟与高性能需求,AAu
android获取音量分贝值
android获取音量分贝值
android 按住说话 语音录制、播放功能
。。。。。。。android 按住说话 语音录制、播放功能
利用AudioRecord录制音频并播放
这个程序将录音播放程序简单化,容易理解,而且实用效果明显,有录音,停止录音,播放录音,停止播放按钮,里面均已实现功能


