2017-08-11 118 views
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; 
      } 
     } 
    } 
} 
+0

'沒什麼反應'...你期望發生什麼?在OnCreate()方法中放置一個斷點以確認您的StartService調用實際上正在創建該服務。同樣使用靜態的Activity引用來調用服務中的方法通常是一個壞主意,您應該使用綁定的服務來訪問服務方法 – SushiHangover

+0

我從來沒有調用過 –

+1

'[Service]'屬性句柄在構建過程中更新清單,因此您不應手動更新清單,因爲默認情況下它將使用md5名稱。 – SushiHangover

回答

0

我把它改成了一個綁定的服務,如SushiHangover建議。這工作