Xamarin DependencyService.Get<&燃气轮机;()不工作
我正在用xamarin.forms开发一个应用程序,它可以播放一些声音。 为此创建了一个接口“IAudioPlayer”Xamarin DependencyService.Get<&燃气轮机;()不工作,xamarin,dependency-injection,xamarin.forms,Xamarin,Dependency Injection,Xamarin.forms,我正在用xamarin.forms开发一个应用程序,它可以播放一些声音。 为此创建了一个接口“IAudioPlayer” namespace ClassLibrary.AudioPlayer { public interface IAudioPlayer { void PlayAudio(string filename); } } 在droid项目中,我实现了如下: using System; using Android.Media; using Xam
namespace ClassLibrary.AudioPlayer
{
public interface IAudioPlayer
{
void PlayAudio(string filename);
}
}
在droid项目中,我实现了如下:
using System;
using Android.Media;
using Xamarin.Forms;
[assembly: Dependency(typeof(myApp.Droid.AudioPlayer_Android))]
namespace myApp.Droid
{
public class AudioPlayer_Android : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity, ClassLibrary.AudioPlayer.IAudioPlayer, AudioTrack.IOnPlaybackPositionUpdateListener
{
public void PlayAudio(string filename)
{
var player = new MediaPlayer();
var fd = global::Android.App.Application.Context.Assets.OpenFd(filename);
player.Prepared += (s, e) =>
{
player.Start();
};
player.SetDataSource(fd.FileDescriptor, fd.StartOffset, fd.Length);
player.Prepare();
}
public void OnMarkerReached(AudioTrack track)
{
throw new NotImplementedException();
}
public void OnPeriodicNotification(AudioTrack track)
{
throw new NotImplementedException();
}
}
}
现在,当我调用DependencyService.Get()时代码>它会中断并说“在类型“Xamarin.Forms.DependencyService”中找不到方法“Get”。
当im将DependencyService.Get()
与其他类型(例如本地DB实现)一起使用时,它可以正常工作
你知道我做错了什么吗?你的IAudioPlayer
实现是一个安卓活动
。依赖关系服务将尝试创建它的一个实例-可能不是一个好主意。我无法真正解释你得到的错误,但你应该创建一个只使用一个接口的具体实现:
public class MyAndroidPlyer : IAudioPlayer
{}
表单依赖项服务只有非常基本的功能(您可以查看源代码)
如果你需要更复杂的东西,还有其他选择,比如