static internal AudioSessionOutputRouteKind [] GetOutputRoutes (NSArray arr) { if (arr == null || arr.Count == 0) return null; var result = new AudioSessionOutputRouteKind [arr.Count]; for (uint i = 0; i < arr.Count; i++) { var dict = new NSDictionary ((IntPtr) arr.ValueAt (i)); result [i] = AudioSessionOutputRouteKind.None; if (dict == null || dict.Count == 0) continue; var val = (NSString) dict [AudioRouteKey_Type]; if (val == null) continue; if (val == OutputRoute_LineOut) { result [i] = AudioSessionOutputRouteKind.LineOut; } else if (val == OutputRoute_Headphones) { result [i] = AudioSessionOutputRouteKind.Headphones; } else if (val == OutputRoute_BluetoothHFP) { result [i] = AudioSessionOutputRouteKind.BluetoothHFP; } else if (val == OutputRoute_BluetoothA2DP) { result [i] = AudioSessionOutputRouteKind.BluetoothA2DP; } else if (val == OutputRoute_BuiltInReceiver) { result [i] = AudioSessionOutputRouteKind.BuiltInReceiver; } else if (val == OutputRoute_BuiltInSpeaker) { result [i] = AudioSessionOutputRouteKind.BuiltInSpeaker; } else if (val == OutputRoute_USBAudio) { result [i] = AudioSessionOutputRouteKind.USBAudio; } else if (val == OutputRoute_HDMI) { result [i] = AudioSessionOutputRouteKind.HDMI; } else if (val == OutputRoute_AirPlay) { result [i] = AudioSessionOutputRouteKind.AirPlay; } else result [i] = (AudioSessionOutputRouteKind) val.Handle; } return result; }