构建工作,但媒体播放似乎并没有加载

时间:2017-12-27 22:42:08

标签: c# android visual-studio xamarin

我正在开发Android应用程序,目的是在午夜时分播放一首特定的歌曲。我知道appstore中可能已经存在用于此目的的应用程序,但我不熟悉编码并想尝试自己编写应用程序。 所以现在我已经达到了我不知道该怎么办的地步。我尝试在运行Android 6.0的LG H818P上调试应用程序。它发布了,图标,名称和一切都是正确的,但我没有播放这首歌,即使我设定的时间它应该在开始后两分钟播放,如果建筑物。

这是Visual Studio 2017中MainActivity.cs的代码,任何人都可以找到任何错误吗?

using Android.App;
using Android.Widget;
using Android.OS;
using System;
using Android.Media;

namespace Name of the App
{
    [Activity(Label = "Name of the App", MainLauncher = true)]
    public class MainActivity : Activity


    {
        string text = "status";
        protected void onCreate(Bundle savedInstanceState)

        {


        }

        public void main()
        {
            try
            {

                string systemtime = DateTime.Now.ToString();

                for (int i = 0; i > 0; i++)
                {
                    if (systemtime == "09:07:00 pm")
                    {
                        StartPlayer();
                        player.Start();
                    }
                }
            }
            catch
            {
                text = "Error!";
            }
        }

        protected MediaPlayer player;
        public void StartPlayer()
        {
            if (player == null)
            {
                player = new MediaPlayer();
                player.SetDataSource("Ressources.raw.file2beplayed.mp3");
                player.Prepare();
                player.Start();
                text = "Playing!";
            }
            else
            {
                player.Reset();
                player.SetDataSource("Ressources.raw.file2beplayed.mp3");
                player.Prepare();
                player.Start();
            }
        }

    }


}

正如我所说的,我在编码中是一个Noob,所以很抱歉可能是丑陋的代码:) 谢谢你的回复!

1 个答案:

答案 0 :(得分:0)

ToStringDateTime的默认格式为MM/dd/yyyy,因此您的比较systemtime == "09:07:00 pm"永远不会成真。

您可以使用TimeSpan中的TimeOfDay和属性DateTime;

if(DateTime.Now.TimeOfDay == new Timespan(21,7,0))
  //...

此外,在将i初始化为0时,永远不会执行循环,因此在第一次检查时i将不会大于0,因此循环不会执行。

最后,Android不使用main函数,是一种特殊类型的程序,你的初始化代码应该在OnCreate函数中,但是如果你在那个函数中创建一个无限循环Android会关闭应用程序,因为它不会完成它的初始化,你需要使用一个计时器并每秒检查一次条件。