我正在开发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,所以很抱歉可能是丑陋的代码:) 谢谢你的回复!
答案 0 :(得分:0)
ToString
中DateTime
的默认格式为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会关闭应用程序,因为它不会完成它的初始化,你需要使用一个计时器并每秒检查一次条件。