old mode 100644
new mode 100755
| | |
| | | //using System; |
| | | //using AVFoundation; |
| | | //using Foundation; |
| | | //using MediaPlayer; |
| | | //using Shared; |
| | | //using UIKit; |
| | | using System; |
| | | using AVFoundation; |
| | | using Foundation; |
| | | using MediaPlayer; |
| | | using Shared; |
| | | using UIKit; |
| | | |
| | | //namespace com.hdl.on |
| | | //{ |
| | | // public static class Volume |
| | | // { |
| | | // /// <summary> |
| | | // /// 声音变化事件 |
| | | // /// </summary> |
| | | // public static Action<int> VolumeChange; |
| | | // /// <summary> |
| | | // /// 设置当前音量 |
| | | // /// </summary> |
| | | // /// <param name="volume">Volume.</param> |
| | | // public static int MusicVolume |
| | | // { |
| | | // set |
| | | // { |
| | | // if ((DateTime.Now - dateTime).TotalMilliseconds < 2000) |
| | | // { |
| | | // return; |
| | | // } |
| | | // foreach (var view in BaseViewController.MPVolumeView.Subviews) |
| | | // { |
| | | // if (view.GetType().Name == "UISlider") |
| | | // { |
| | | // (view as UISlider).SetValue((float)Math.Round(value / 100.0f, 2, MidpointRounding.AwayFromZero), false); |
| | | // beforeVolume = (view as UISlider).Value; |
| | | // //System.Console.WriteLine("接收到更新音量:" + (float)Math.Round(value / 100.0f, 2, MidpointRounding.AwayFromZero) + " " + beforeVolume); |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // static System.DateTime dateTime = DateTime.MinValue; |
| | | // /// <summary> |
| | | // /// 之前的音量 |
| | | // /// </summary> |
| | | // static float beforeVolume; |
| | | // public static void Init() |
| | | // { |
| | | // NSNotificationCenter.DefaultCenter.AddObserver(new NSString("AVSystemController_SystemVolumeDidChangeNotification"), |
| | | // (obj) => |
| | | // { |
| | | // //如果应用进入后台,不执行音量变化 |
| | | // if (UIApplication.SharedApplication.ApplicationState != UIApplicationState.Active || "Audio/Video" != obj.UserInfo.ObjectForKey(new NSString("AVSystemController_AudioCategoryNotificationParameter")).ToString()) |
| | | // { |
| | | // return; |
| | | // } |
| | | // //System.Console.WriteLine("接收到音量变化事件"); |
| | | // dateTime = DateTime.Now; |
| | | // var tempValue = obj.UserInfo.ObjectForKey(new NSString("AVSystemController_AudioVolumeNotificationParameter")); |
| | | // if (tempValue == null) |
| | | // { |
| | | // return; |
| | | // } |
| | | // try |
| | | // { |
| | | // //有时转换失败,可能有时值有问题 |
| | | // var volume = 100 * float.Parse(tempValue.ToString()); |
| | | // volume = (float)Math.Round(volume, 2, MidpointRounding.AwayFromZero); |
| | | // //System.Console.WriteLine("音量变化事件:" + volume + " " + beforeVolume * 100); |
| | | // if (VolumeChange != null && beforeVolume * 100 != volume) |
| | | // { |
| | | // VolumeChange((int)volume); |
| | | // } |
| | | // } |
| | | // catch { } |
| | | // }); |
| | | // } |
| | | // } |
| | | //} |
| | | namespace com.hdl.on |
| | | { |
| | | public static class Volume |
| | | { |
| | | /// <summary> |
| | | /// 声音变化事件 |
| | | /// </summary> |
| | | public static Action<int> VolumeChange; |
| | | /// <summary> |
| | | /// 设置当前音量 |
| | | /// </summary> |
| | | /// <param name="volume">Volume.</param> |
| | | public static int MusicVolume |
| | | { |
| | | set |
| | | { |
| | | if ((DateTime.Now - dateTime).TotalMilliseconds < 2000) |
| | | { |
| | | return; |
| | | } |
| | | foreach (var view in BaseViewController.MPVolumeView.Subviews) |
| | | { |
| | | if (view.GetType().Name == "UISlider") |
| | | { |
| | | (view as UISlider).SetValue((float)Math.Round(value / 100.0f, 2, MidpointRounding.AwayFromZero), false); |
| | | beforeVolume = (view as UISlider).Value; |
| | | //Shared.HDLUtils.WriteLine("接收到更新音量:" + (float)Math.Round(value / 100.0f, 2, MidpointRounding.AwayFromZero) + " " + beforeVolume); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | static System.DateTime dateTime = DateTime.MinValue; |
| | | /// <summary> |
| | | /// 之前的音量 |
| | | /// </summary> |
| | | static float beforeVolume; |
| | | public static void Init() |
| | | { |
| | | NSNotificationCenter.DefaultCenter.AddObserver(new NSString("AVSystemController_SystemVolumeDidChangeNotification"), |
| | | (obj) => |
| | | { |
| | | //如果应用进入后台,不执行音量变化 |
| | | if (UIApplication.SharedApplication.ApplicationState != UIApplicationState.Active || "Audio/Video" != obj.UserInfo.ObjectForKey(new NSString("AVSystemController_AudioCategoryNotificationParameter")).ToString()) |
| | | { |
| | | return; |
| | | } |
| | | //Shared.HDLUtils.WriteLine("接收到音量变化事件"); |
| | | dateTime = DateTime.Now; |
| | | var tempValue = obj.UserInfo.ObjectForKey(new NSString("AVSystemController_AudioVolumeNotificationParameter")); |
| | | if (tempValue == null) |
| | | { |
| | | return; |
| | | } |
| | | try |
| | | { |
| | | //有时转换失败,可能有时值有问题 |
| | | var volume = 100 * float.Parse(tempValue.ToString()); |
| | | volume = (float)Math.Round(volume, 2, MidpointRounding.AwayFromZero); |
| | | //Shared.HDLUtils.WriteLine("音量变化事件:" + volume + " " + beforeVolume * 100); |
| | | if (VolumeChange != null && beforeVolume * 100 != volume) |
| | | { |
| | | VolumeChange((int)volume); |
| | | } |
| | | } |
| | | catch { } |
| | | }); |
| | | } |
| | | } |
| | | } |