【发布时间】:2020-05-07 03:21:49
【问题描述】:
如何使用 Xamarin Forms 在 Android 上播放音频?我有以下服务,这可行,但 Forms.Context 已弃用,并显示消息“上下文在 2.5 版已过时。请改用本地上下文。”。
[assembly: Dependency(typeof(AudioService))]
namespace SensaLabScan.Droid.Services
{
public class AudioService : IAudioService
{
private readonly MediaPlayer _mediaPlayer = new MediaPlayer();
public void PlayBeep()
{
_mediaPlayer.Reset();
// Forms.Context references the Activity which calls Forms.Init, i.e. MainActivity.
using (var beepFile = Forms.Context.Assets.OpenFd("beep.mp3"))
{
_mediaPlayer.SetDataSource(beepFile);
_mediaPlayer.Prepare();
_mediaPlayer.Start();
}
}
}
}
在这种情况下,已弃用的Forms.Context 的替代方案是什么?我试过了
-
Android.App.Application.Context.Assets.OpenFd("beep.pm3");但这会引发文件未找到异常 - 使用
MainActivity作为上下文并从中使用Assets,但再次找不到文件错误。
我要阅读的 mp3 文件位于 Assets 文件夹中,并标记为 AndroidAsset。
【问题讨论】:
-
只是想一想,
Forms.Context和Android.App.Application.Context的上下文是否属于同一类型(ApplicationContext 或 ActivityContext)。我有一个类似的问题与这些混合。 -
@Nikhileshwar 表单上下文和应用程序上下文可能属于同一类型,但它们不是一回事!!一个只有活动级别上下文,而另一个拥有应用程序上下文。详情请查看我的回答
标签: android xamarin xamarin.forms xamarin.android