Mar*_*ell 5 xamarin xamarin.forms
是否有标准的跨平台方式可以在 Xamarin Forms iOS 和 Android 上播放 250 毫秒左右的“叮”声?
马克·沃德尔
您可以使用DependencyService在每个平台上播放默认的系统通知声音。
创建IPlaySoundService接口:
public interface IPlaySoundService
{
void PlaySystemSound();
}
Run Code Online (Sandbox Code Playgroud)
PlaySystemSound在iOS中实现方法如下:
[assembly: Xamarin.Forms.Dependency(typeof(PlaySoundService))]
namespace AppCarouselViewSample.iOS
{
public class PlaySoundService : IPlaySoundService
{
public void PlaySystemSound()
{
var sound = new SystemSound(1000);
sound.PlaySystemSound();
}
}
}
Run Code Online (Sandbox Code Playgroud)
PlaySystemSound在Android中实现方法如下:
[assembly:Xamarin.Forms.Dependency(typeof(PlaySoundService))]
namespace AppCarouselViewSample.Droid
{
public class PlaySoundService : IPlaySoundService
{
public void PlaySystemSound()
{
Android.Net.Uri uri = RingtoneManager.GetDefaultUri(RingtoneType.Ringtone);
Ringtone rt = RingtoneManager.GetRingtone(MainActivity.instance.ApplicationContext, uri);
rt.Play();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是instance来自MainActivity的定义:
namespace xxx.Droid
{
[Activity(Label = "AppCarouselViewSample", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
public static MainActivity instance { set; get; }
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
instance = this;
Xamarin.Forms.Forms.SetFlags(new string[] { "CarouselView_Experimental", "SwipeView_Experimental", "IndicatorView_Experimental" });
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后他们会在每个平台播放默认的通知声音。您可以SystemSoundID在 iOS 中进行修改以满足您的需要。这是声音 ID 列表。
| 归档时间: |
|
| 查看次数: |
1272 次 |
| 最近记录: |