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

问题描述

usingSystem;usingSystem.Threading;usingAndroid.App;usingAndroid.Content;usingAndroid.Runtime;usingAndroid.Views;usingAndroid.Widget;usingAndroid.OS;usingAndroid.Media;usingAndroid.Util;namespacemediaPlayer{[Activity(Label="mediaPlayer",MainLauncher=true,Icon="@drawable/icon")]publicclassMainActivity:Activity,MediaPlayer.IOnCompletionListener{intcount=1;MediaPlayeridPlayer;TextViewtv;protectedoverridevoidOnCreate(Bundlebundle){base.OnCreate(bundle);//Setourviewfromthe"main"layoutresourceSetContentView(Resource.Layout.Main);//Getourbuttonfromthelayoutresource,//andattachaneventtoitButtonbutton=FindViewById<Button>(Resource.Id.MyButton);button.Click+=delegate{button.Text=string.Format("{0}clicks!",count++);};ButtonplayId=FindViewById<Button>(Resource.Id.button1);playId.Click+=playId_Click;Buttonstop=FindViewById<Button>(Resource.Id.button2);stop.Click+=playNet_Click;Buttonpause=FindViewById<Button>(Resource.Id.button3);pause.Click+=playFile_Click;Buttonvideo=FindViewById<Button>(Resource.Id.button4);video.Click+=video_Click;tv=FindViewById<TextView>(Resource.Id.textView1);}voidvideo_Click(objectsender,EventArgse){Intentintent=newIntent(this,typeof(Video));StartActivity(intent);}voidplayFile_Click(objectsender,EventArgse){idPlayer.Pause();}voidplayNet_Click(objectsender,EventArgse){idPlayer.Stop();//intposition=idPlayer.CurrentPosition/1000;//Toast.MakeText(this,position.ToString(),ToastLength.Short).Show();}voidplayId_Click(objectsender,EventArgse){idPlayer=newMediaPlayer();if(idPlayer!=null){idPlayer.SetDataSource(this.Resources.OpenRawResourceFd(Resource.Raw.yshq).FileDescriptor);idPlayer.SetOnCompletionListener(this);idPlayer.Prepare();idPlayer.Start();Threadthread=newThread(newThreadStart(Run));thread.Start();}}privatevoidRun(){while(true){Thread.Sleep(1000);inti=(idPlayer.CurrentPosition/1000);RunOnUiThread(()=>{//打印当前音乐播放当前时间和总时间//当前时间输出正确//总共时间输出415(总共时间为15s)tv.Text=i.ToString()+"&&&"+(idPlayer.Duration).ToString();});if(i==15){break;}}}publicvoidOnCompletion(MediaPlayermp){mp.Stop();mp.Release();}}}

解决方案

解决方案二:
Pause之后也不能播放了?
解决方案三:
Pause和Stop之后再调用Start又重新播放
解决方案四:
有没有跟Pause对应的Resume什么的方法?Play可能就是重新播放的方法
解决方案五:
楼主,我做了一下测试是可以的啊,以下是我的代码,我刚开始接触monoforandroid的。以后多多交流namespaceApp1{[Activity(Label="App1",MainLauncher=true,Icon="@drawable/icon")]publicclassMainActivity:Activity{intcount=0;MediaPlayermp=newMediaPlayer();protectedoverridevoidOnCreate(Bundlebundle){base.OnCreate(bundle);//Setourviewfromthe"main"layoutresourceSetContentView(Resource.Layout.Main);//Getourbuttonfromthelayoutresource,//andattachaneventtoitButtonbutton=FindViewById<Button>(Resource.Id.MyButton);SurfaceViewsfv=FindViewById<SurfaceView>(Resource.Id.surfaceView1);button.Click+=delegate{button.Text=string.Format("{0}clicks!",++count);};button.Click+=(sender,e)=>{//播放视频代码sfv.Click+=Sfv_Click;mp.SetDisplay(sfv.Holder);mp.SetDataSource("/storage/external_storage/sdcard1/111.mp4");mp.Prepare();mp.Start();};}privatevoidSfv_Click(objectsender,EventArgse){if(mp.IsPlaying){mp.Pause();}else{mp.Start();}}}}

时间: 2024-10-22 20:34:10

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

想写一个IIS扩展模块,如何在上下文中获得HTTP请求实体,POST方法和GET方法分别怎样获取?

问题描述 想写一个IIS扩展模块,如何在上下文中获得HTTP请求实体,POST方法和GET方法分别怎样获取? 具体点就是在IHttpContext还是IHttpRequest中用什么方法啊

安卓意图-android中的intent对象的addCategory方法和setType方法有什么用区别

问题描述 android中的intent对象的addCategory方法和setType方法有什么用区别 android中的intent对象的addCategory方法和setType方法有什么用区别 按照语翻译的中文字面意思很相似啊, 解决方案 这个一两句说不清楚,你去看看资料,网上很多解释,主要是自己动手用用,别总看

通过spring aop代理的方法和final方法获取的不是同一个类变量

问题描述 目标类的set方法是final的,get方法不是.aop代理之后set的值在get为空.求解这是为什么???前提是final的是客户的框架,我动不了.有什么解决方法吗??目标方法package demo.aop;import org.springframework.stereotype.Component;@Component("test")public class TestService { String data; public String getData() { re

android 通过重写ScrollView和Listview完成上下滑动选中不同位置标题的效果

    点击这里源码下载 看到了吗?就是这种效果:我再跟大家简单的叙述一下: 头部标题有三个:剧本梗概.剧本正文.剧本介绍. 当ScrollView滑到剧本中的无论哪一个内容标题的时候头部的大标题将被选中并呈现橙色:而三个标题内容下面是ListView的item,嵌在其父控件Scrollview中的. 下面让我们分析一下代码: 布局:activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk

Mono for Android 实现高效的导航(Effective Navigation)_Android

Android 4.0 系统定义了一系列的高效导航方式 (Effective Navigation), 主要包括标签.下拉列表.以及向上和返回等, 本文介绍如何用 Mono for Android 实现这些的导航方式. 准备 Android 4.0 ICS 项目 新建 Android ICS 项目 打开 MonoDevelop , 新建一个 Mono for Android 项目, 并在项目的属性页将 Target Framework 设置为 Android 4.0.3 (Ice Cream S

Android 获取屏幕分辨率

原文:Android 获取屏幕分辨率 得到一个屏幕尺寸的三种方法如下:        // 通过WindowManager获取        DisplayMetrics dm = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);         // 通过Resources获取         DisplayMetrics dm2 = getResources().getDis

I.MX6 android 获取framebuffer信息

/******************************************************************************** * I.MX6 android 获取framebuffer信息 * 声明: * 调试显示屏的时候,我们可能会需要去知道我们设置的信息是否正确,或者有时候 * 需要去确认别人的设置的是否正确. * * 2016-1-20 深圳 南山平山村 曾剑锋 *********************************************

Mono for Android 实现高效的导航(Effective Navigation)

Android 4.0 系统定义了一系列的高效导航方式 (Effective Navigation), 主要包括标签.下拉列表.以及向上和返回等, 本文介绍如何用 Mono for Android 实现这些的导航方式. 准备 Android 4.0 ICS 项目 新建 Android ICS 项目 打开 MonoDevelop , 新建一个 Mono for Android 项目, 并在项目的属性页将 Target Framework 设置为 Android 4.0.3 (Ice Cream S

Android 获取内外SD卡路径几种方法总结

Android 获取SD卡路径: 外置sd卡路径,也许很多同学在平时的工作中并不会用到,因为现在很多机型都不支持外置sd卡(这也是Google目标),所以并不用考虑外置sd卡的路径问题.除了开发文件管理类的应用之外,其他应用使用 Enviroment 这个类中的一些静态方法就能满足需要.但也有一些特殊需求需要用到外置sd卡路径,那怎么才能准确获得外置sd卡的路径呢? 方法一 //内置sd卡路径 String sdcardPath = System.getenv("EXTERNAL_STORAGE