我们如何更改Xamarin形式的铃声模式

时间:2019-08-29 20:44:19

标签: xamarin xamarin.forms permissions permission-denied

当我尝试将振铃器模式更改为正常时会出现运行时错误。我正在使用依赖项服务以xamarin形式在android中调用音频管理器,但是当振铃器模式更改为无声(也许已经是无声的)时代码运行没有错误>

1 个答案:

答案 0 :(得分:0)

关于更改振铃模式,您可以按照以下步骤操作。

1。在Xamarin.Forms PCL中定义一个接口。

 public interface IChangeRingModeService
{
    void changeRingModeToNormal();
    void changeRingModeToVibrate();

    void changeRingModeToSilent();

}
  1. 在Android项目中,请在Mainactivity.cs中实现此接口,请不要忘记注册依赖项

    [assembly: Dependency(typeof(MainActivity))]
    
    namespace App4.Droid
    {
    [Activity(Label = "App4", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize| ConfigChanges.Orientation)]
    public class MainActivity : 
       global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity, IChangeRingModeService
     {
    AudioManager am;      
    protected override void OnCreate(Bundle savedInstanceState)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;
    
    
        base.OnCreate(savedInstanceState);
    
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());                            
    
    }
    
    public void changeRingModeToVibrate()
    {
        am = (AudioManager)Android.App.Application.Context.GetSystemService(Context.AudioService);
        am.RingerMode = RingerMode.Vibrate;
    }
    
    public void changeRingModeToNormal()
    {
        am = (AudioManager)Android.App.Application.Context.GetSystemService(Context.AudioService);
        am.RingerMode = RingerMode.Normal;
    }
    
    public void changeRingModeToSilent()
    {
        am = (AudioManager)Android.App.Application.Context.GetSystemService(Context.AudioService);
        am.RingerMode = RingerMode.Silent;
    }}}
    
  2. 在点击事件中调用此方法。

     private void Button1licked(object sender, EventArgs e)
    {
        DependencyService.Get<IChangeRingModeService>().changeRingModeToVibrate();
    }
    
    private void Button2licked(object sender, EventArgs e)
    {
        DependencyService.Get<IChangeRingModeService>().changeRingModeToNormal();
    }
    
    private void Button3licked(object sender, EventArgs e)
    {
        DependencyService.Get<IChangeRingModeService>().changeRingModeToSilent();
    }