0
我試着去創造xamarin媒體播放器服務,但每當我打電話Startservice這樣無法創建服務Xamarin
StartService(new Intent(ApplicationContext,typeof(StreamingBackgroundService)));
的onCreate方法永遠不會被調用。我已經加入該服務的AndroidManifest.xml中 這樣
<application android:label="PlayYoutubeMP3" android:icon="@drawable/Icon"></application>
但它不無論做任何事情。我正在使用Android API 23和Visual Studio 2017.我真的不知道我做錯了什麼。任何幫助將不勝感激
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Media;
[Service(Label = "StreamingBackgroundService", Icon = "@drawable/Icon")]
public class StreamingBackgroundService : Service, SendCommand
{
private MediaPlayer player;
public override IBinder OnBind(Intent intent)
{
return null;
}
public override void OnCreate()
{
player = new MediaPlayer();
MainActivity.Event = this;
base.OnCreate();
}
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
//Set sticky as we are a long running operation
return StartCommandResult.Sticky;
}
public void Play()
{
player.Start();
}
private void Pause()
{
player.Pause();
}
private void Stop()
{
player.Stop();
}
public void SendCommand(Command C, object Param = null)
{
switch (C)
{
case Command.Start:
Play();
break;
case Command.Stop:
Stop();
break;
case Command.Pause:
Pause();
break;
case Command.Reset:
player.Reset();
break;
case Command.GoBack:
break;
case Command.GoForward:
break;
case Command.Initialize:
player.SetDataSource((string)Param);
player.Prepare();
player.SetWakeMode(ApplicationContext, WakeLockFlags.Partial);
break;
case Command.ShouldLoop:
player.Looping = (bool)Param;
break;
default:
break;
}
}
}
}
'沒什麼反應'...你期望發生什麼?在OnCreate()方法中放置一個斷點以確認您的StartService調用實際上正在創建該服務。同樣使用靜態的Activity引用來調用服務中的方法通常是一個壞主意,您應該使用綁定的服務來訪問服務方法 – SushiHangover
我從來沒有調用過 –
'[Service]'屬性句柄在構建過程中更新清單,因此您不應手動更新清單,因爲默認情況下它將使用md5名稱。 – SushiHangover