From ea7d2f73dbfc5831944b0124dbb43a3ffa9278c4 Mon Sep 17 00:00:00 2001 From: Andrew Yaniv Date: Thu, 9 Jul 2020 15:39:38 +0300 Subject: [PATCH 1/8] Add newest swift support --- example/ios/Podfile.lock | 4 +- example/ios/Runner.xcodeproj/project.pbxproj | 14 +- example/pubspec.lock | 311 ++++++++++++++++++- ios/Classes/SwiftHeadsetEventPlugin.swift | 6 +- pubspec.lock | 306 +++++++++++++++++- 5 files changed, 598 insertions(+), 43 deletions(-) diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 7d6090f..d8cd4e2 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -14,9 +14,9 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/headset_event/ios" SPEC CHECKSUMS: - Flutter: 58dd7d1b27887414a370fcccb9e645c08ffd7a6a + Flutter: 0e3d915762c693b495b44d77113d4970485de6ec headset_event: 7e97247360e17f7a182fcd35a65ebfcbf9a8fac9 PODFILE CHECKSUM: ebd43b443038e611b86ede96e613bd6033c49497 -COCOAPODS: 1.7.4 +COCOAPODS: 1.8.4 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index dab63ae..a6297a3 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -9,12 +9,8 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; - 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 7225D5D1F3F201D9E23C8B47 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23F5D1C3FC6231DA3DC5E5BE /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; - 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; @@ -28,8 +24,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, - 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -42,14 +36,12 @@ 23F5D1C3FC6231DA3DC5E5BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 358F5E74F65F84C78718142D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 602F24C3F95A7E584885DFE7 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -63,8 +55,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, - 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 7225D5D1F3F201D9E23C8B47 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -83,9 +73,7 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEBA1CF902C7004384FC /* Flutter.framework */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 9740EEB31CF90195004384FC /* Generated.xcconfig */, @@ -232,7 +220,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 488B5AFEBFD8DB9D63FD3459 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; diff --git a/example/pubspec.lock b/example/pubspec.lock index 77bd29d..74b2bc2 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -1,34 +1,90 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "0.39.12" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.13" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.0" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.4.1" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "2.0.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "1.1.3" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.11" + version: "1.14.12" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + coverage: + dependency: transitive + description: + name: coverage + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.11" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + csslib: + dependency: transitive + description: + name: csslib + url: "https://pub.dartlang.org" + source: hosted + version: "0.16.1" cupertino_icons: dependency: "direct main" description: @@ -46,6 +102,13 @@ packages: description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" headset_event: dependency: "direct dev" description: @@ -53,27 +116,132 @@ packages: relative: true source: path version: "0.0.2" + html: + dependency: transitive + description: + name: html + url: "https://pub.dartlang.org" + source: hosted + version: "0.14.0+3" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.1" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.12" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.4" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.2" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.4" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.5" + version: "0.12.6" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.1.8" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.6+3" + mockito: + dependency: transitive + description: + name: mockito + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + multi_server_socket: + dependency: transitive + description: + name: multi_server_socket + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + node_interop: + dependency: transitive + description: + name: node_interop + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + node_io: + dependency: transitive + description: + name: node_io + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + node_preamble: + dependency: transitive + description: + name: node_preamble + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.12" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.2" + version: "1.6.4" pedantic: dependency: transitive description: @@ -81,25 +249,88 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.7.0" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.4" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.1.3" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.7" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shelf_static: + dependency: transitive + description: + name: shelf_static + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.8" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.3" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + source_maps: + dependency: transitive + description: + name: source_maps + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.9" source_span: dependency: transitive description: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.5.5" + version: "1.7.0" stack_trace: dependency: transitive description: @@ -120,7 +351,7 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" term_glyph: dependency: transitive description: @@ -128,13 +359,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + test: + dependency: transitive + description: + name: test + url: "https://pub.dartlang.org" + source: hosted + version: "1.14.4" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.5" + version: "0.2.15" + test_core: + dependency: transitive + description: + name: test_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.4" typed_data: dependency: transitive description: @@ -149,5 +394,47 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.8" + vm_service: + dependency: transitive + description: + name: vm_service + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.0" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.7+15" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.3" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.6.1" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1" sdks: - dart: ">=2.2.2 <3.0.0" + dart: ">=2.7.0 <3.0.0" diff --git a/ios/Classes/SwiftHeadsetEventPlugin.swift b/ios/Classes/SwiftHeadsetEventPlugin.swift index 21a6365..ed7713b 100644 --- a/ios/Classes/SwiftHeadsetEventPlugin.swift +++ b/ios/Classes/SwiftHeadsetEventPlugin.swift @@ -38,7 +38,7 @@ public class SwiftHeadsetEventPlugin: NSObject, FlutterPlugin { ///////////////////////////////////////////////////////////// func registerAudioRouteChangeBlock(){ - NotificationCenter.default.addObserver( forName:NSNotification.Name.AVAudioSessionRouteChange, object: AVAudioSession.sharedInstance(), queue: nil) { notification in + NotificationCenter.default.addObserver( forName:AVAudioSession.routeChangeNotification, object: AVAudioSession.sharedInstance(), queue: nil) { notification in guard let userInfo = notification.userInfo, let reasonValue = userInfo[AVAudioSessionRouteChangeReasonKey] as? UInt, let reason = AVAudioSession.RouteChangeReason(rawValue:reasonValue) else { @@ -57,9 +57,9 @@ public class SwiftHeadsetEventPlugin: NSObject, FlutterPlugin { func HeadsetIsConnect() -> Int { let currentRoute = AVAudioSession.sharedInstance().currentRoute for output in currentRoute.outputs { - if output.portType == AVAudioSessionPortHeadphones { + if output.portType == AVAudioSession.Port.headphones { return 1 - }else { + } else { return 0 } } diff --git a/pubspec.lock b/pubspec.lock index fbcb51e..62f7f0b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,34 +1,90 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "0.39.12" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.13" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.0" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.4.1" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "2.0.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "1.1.3" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.11" + version: "1.14.12" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + coverage: + dependency: transitive + description: + name: coverage + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.11" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + csslib: + dependency: transitive + description: + name: csslib + url: "https://pub.dartlang.org" + source: hosted + version: "0.16.1" flutter: dependency: "direct main" description: flutter @@ -39,34 +95,139 @@ packages: description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + html: + dependency: transitive + description: + name: html + url: "https://pub.dartlang.org" + source: hosted + version: "0.14.0+3" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.1" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.12" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.4" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.2" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.4" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.5" + version: "0.12.6" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.1.8" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.6+3" mockito: dependency: "direct main" description: name: mockito url: "https://pub.dartlang.org" source: hosted - version: "4.1.1" + version: "3.0.0" + multi_server_socket: + dependency: transitive + description: + name: multi_server_socket + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + node_interop: + dependency: transitive + description: + name: node_interop + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + node_io: + dependency: transitive + description: + name: node_io + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + node_preamble: + dependency: transitive + description: + name: node_preamble + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.12" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.2" + version: "1.6.4" pedantic: dependency: transitive description: @@ -74,25 +235,88 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.7.0" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.4" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.1.3" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.7" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shelf_static: + dependency: transitive + description: + name: shelf_static + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.8" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.3" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + source_maps: + dependency: transitive + description: + name: source_maps + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.9" source_span: dependency: transitive description: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.5.5" + version: "1.7.0" stack_trace: dependency: transitive description: @@ -113,7 +337,7 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" term_glyph: dependency: transitive description: @@ -121,13 +345,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + test: + dependency: transitive + description: + name: test + url: "https://pub.dartlang.org" + source: hosted + version: "1.14.4" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.5" + version: "0.2.15" + test_core: + dependency: transitive + description: + name: test_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.4" typed_data: dependency: transitive description: @@ -142,5 +380,47 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.8" + vm_service: + dependency: transitive + description: + name: vm_service + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.0" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.7+15" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.3" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.6.1" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1" sdks: - dart: ">=2.2.2 <3.0.0" + dart: ">=2.7.0 <3.0.0" From d171c2911800feb45029c7a3cdd3148d2fc296a7 Mon Sep 17 00:00:00 2001 From: Andrew Yaniv Date: Thu, 9 Jul 2020 15:40:03 +0300 Subject: [PATCH 2/8] Add wireless headphones detection --- ios/Classes/SwiftHeadsetEventPlugin.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Classes/SwiftHeadsetEventPlugin.swift b/ios/Classes/SwiftHeadsetEventPlugin.swift index ed7713b..4c53e52 100644 --- a/ios/Classes/SwiftHeadsetEventPlugin.swift +++ b/ios/Classes/SwiftHeadsetEventPlugin.swift @@ -57,7 +57,7 @@ public class SwiftHeadsetEventPlugin: NSObject, FlutterPlugin { func HeadsetIsConnect() -> Int { let currentRoute = AVAudioSession.sharedInstance().currentRoute for output in currentRoute.outputs { - if output.portType == AVAudioSession.Port.headphones { + if output.portType == AVAudioSession.Port.headphones || output.portType == AVAudioSession.Port.bluetoothA2DP{ return 1 } else { return 0 From 2fdd6fe41a4acddcad378435d20acba6601f216f Mon Sep 17 00:00:00 2001 From: Andrew Yaniv Date: Thu, 9 Jul 2020 16:02:14 +0300 Subject: [PATCH 3/8] Implement detection of wireless device disconnect --- ios/Classes/SwiftHeadsetEventPlugin.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/Classes/SwiftHeadsetEventPlugin.swift b/ios/Classes/SwiftHeadsetEventPlugin.swift index 4c53e52..4eee689 100644 --- a/ios/Classes/SwiftHeadsetEventPlugin.swift +++ b/ios/Classes/SwiftHeadsetEventPlugin.swift @@ -49,6 +49,8 @@ public class SwiftHeadsetEventPlugin: NSObject, FlutterPlugin { self.channel!.invokeMethod("connect",arguments: "true") case .oldDeviceUnavailable: self.channel!.invokeMethod("disconnect",arguments: "true") + case .override: + self.channel!.invokeMethod("disconnect",arguments: "true") default: () } } From 640dfd14b1e85ca788605d8f5a894a758c434b24 Mon Sep 17 00:00:00 2001 From: Yura Uhryn Date: Thu, 19 Nov 2020 22:29:22 +0200 Subject: [PATCH 4/8] Add bluetooth headset support --- android/src/main/AndroidManifest.xml | 2 + .../HeadsetBroadcastReceiver.java | 27 ++++- .../headset_event/HeadsetEventPlugin.java | 109 +++++++++++------- example/android/gradle.properties | 1 + 4 files changed, 91 insertions(+), 48 deletions(-) diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index a639f72..31ffdcb 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,3 +1,5 @@ + + diff --git a/android/src/main/java/flutter/moum/headset_event/HeadsetBroadcastReceiver.java b/android/src/main/java/flutter/moum/headset_event/HeadsetBroadcastReceiver.java index 9915ba7..98dd2f4 100644 --- a/android/src/main/java/flutter/moum/headset_event/HeadsetBroadcastReceiver.java +++ b/android/src/main/java/flutter/moum/headset_event/HeadsetBroadcastReceiver.java @@ -1,5 +1,6 @@ package flutter.moum.headset_event; +import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -7,9 +8,10 @@ import android.view.KeyEvent; public class HeadsetBroadcastReceiver extends BroadcastReceiver { - private static final String TAG = "log"; + private static final String TAG = "HeadsetBroadcastReceiver"; HeadsetEventListener headsetEventListener; + public HeadsetBroadcastReceiver(HeadsetEventListener listener) { this.headsetEventListener = listener; } @@ -29,6 +31,23 @@ public void onReceive(Context context, Intent intent) { default: Log.d(TAG, "I have no idea what the headset state is"); } + } else if (intent.getAction().equals(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)) { + int connectionState = intent.getExtras().getInt(BluetoothAdapter.EXTRA_CONNECTION_STATE); + switch (connectionState) { + case BluetoothAdapter.STATE_CONNECTED: + headsetEventListener.onHeadsetConnect(); + break; + case BluetoothAdapter.STATE_DISCONNECTED: + headsetEventListener.onHeadsetDisconnect(); + break; + default: + break; + } + } else if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { + int connectionState = intent.getExtras().getInt(BluetoothAdapter.EXTRA_STATE); + if (connectionState == BluetoothAdapter.STATE_OFF) { + headsetEventListener.onHeadsetDisconnect(); + } } else { abortBroadcast(); @@ -36,8 +55,8 @@ public void onReceive(Context context, Intent intent) { if (key.getAction() == KeyEvent.ACTION_UP) { int keycode = key.getKeyCode(); - Log.d(TAG, "onReceive: "+keycode); - switch(keycode) { + Log.d(TAG, "onReceive: " + keycode); + switch (keycode) { case KeyEvent.KEYCODE_MEDIA_NEXT: headsetEventListener.onNextButtonPress(); break; @@ -49,4 +68,4 @@ public void onReceive(Context context, Intent intent) { } } } -} +} \ No newline at end of file diff --git a/android/src/main/java/flutter/moum/headset_event/HeadsetEventPlugin.java b/android/src/main/java/flutter/moum/headset_event/HeadsetEventPlugin.java index 0bf90d7..f600ee8 100644 --- a/android/src/main/java/flutter/moum/headset_event/HeadsetEventPlugin.java +++ b/android/src/main/java/flutter/moum/headset_event/HeadsetEventPlugin.java @@ -1,8 +1,9 @@ package flutter.moum.headset_event; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothProfile; import android.content.Intent; import android.content.IntentFilter; -import android.util.Log; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; @@ -10,56 +11,76 @@ import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugin.common.PluginRegistry.Registrar; -/** HeadsetEventPlugin */ -public class HeadsetEventPlugin implements MethodCallHandler{ +/** + * HeadsetEventPlugin + */ +public class HeadsetEventPlugin implements MethodCallHandler { - public static MethodChannel headsetEventChannel; - public static int currentState = -1; - private static HeadsetBroadcastReceiver hReceiver; - private static final String TAG = "HeadsetEventPlugin"; + public static MethodChannel headsetEventChannel; + public static int currentState = -1; + private static HeadsetBroadcastReceiver hReceiver; + private static final String TAG = "HeadsetEventPlugin"; - /** Plugin registration. */ - public static void registerWith(Registrar registrar) { - headsetEventChannel = new MethodChannel(registrar.messenger(), "flutter.moum/headset_event"); - headsetEventChannel.setMethodCallHandler(new HeadsetEventPlugin()); - hReceiver = new HeadsetBroadcastReceiver(headsetEventListener); - IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); - registrar.activeContext().registerReceiver(hReceiver, filter); + /** + * Plugin registration. + */ + public static void registerWith(Registrar registrar) { + headsetEventChannel = new MethodChannel(registrar.messenger(), "flutter.moum/headset_event"); + headsetEventChannel.setMethodCallHandler(new HeadsetEventPlugin()); + hReceiver = new HeadsetBroadcastReceiver(headsetEventListener); + String actionHeadsetPlug = Intent.ACTION_HEADSET_PLUG; + String actionBluetoothConnectionState = BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED; + String actionBluetoothState = BluetoothAdapter.ACTION_STATE_CHANGED; + IntentFilter filter = new IntentFilter(); + filter.addAction(actionHeadsetPlug); + filter.addAction(actionBluetoothConnectionState); + filter.addAction(actionBluetoothState); + registrar.activeContext().registerReceiver(hReceiver, filter); - } + } + + @Override + public void onMethodCall(MethodCall call, Result result) { + if (call.method.equals("getPlatformVersion")) { + result.success("Android " + android.os.Build.VERSION.RELEASE); + } else if (call.method.equals("register")) { - @Override - public void onMethodCall(MethodCall call, Result result) { - if (call.method.equals("getPlatformVersion")) { - result.success("Android " + android.os.Build.VERSION.RELEASE); - } else if(call.method.equals("register")) { + } else if (call.method.equals("getCurrentState")) { + updateHeadsetStatus(); + result.success(currentState); + } else { + result.notImplemented(); + } + } - } else if(call.method.equals("getCurrentState")) { - result.success(currentState); - } else { - result.notImplemented(); + private void updateHeadsetStatus() { + BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + boolean status = (bluetoothAdapter != null && BluetoothProfile.STATE_CONNECTED == + bluetoothAdapter.getProfileConnectionState(BluetoothProfile.HEADSET)); + if (status) { + currentState = 1; + } } - } - static HeadsetEventListener headsetEventListener = new HeadsetEventListener() { - @Override - public void onHeadsetConnect() { - headsetEventChannel.invokeMethod("connect", "true"); - } + static HeadsetEventListener headsetEventListener = new HeadsetEventListener() { + @Override + public void onHeadsetConnect() { + headsetEventChannel.invokeMethod("connect", "true"); + } - @Override - public void onHeadsetDisconnect() { - headsetEventChannel.invokeMethod("disconnect", "true"); - } + @Override + public void onHeadsetDisconnect() { + headsetEventChannel.invokeMethod("disconnect", "true"); + } - @Override - public void onNextButtonPress() { - headsetEventChannel.invokeMethod("nextButton", "true"); - } + @Override + public void onNextButtonPress() { + headsetEventChannel.invokeMethod("nextButton", "true"); + } - @Override - public void onPrevButtonPress() { - headsetEventChannel.invokeMethod("prevButton", "true"); - } - }; -} + @Override + public void onPrevButtonPress() { + headsetEventChannel.invokeMethod("prevButton", "true"); + } + }; +} \ No newline at end of file diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 53ae0ae..b6e61b6 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,3 +1,4 @@ android.enableJetifier=true android.useAndroidX=true org.gradle.jvmargs=-Xmx1536M +android.enableR8=true From e01d3432583b4e6d9b3b381d0323fb5dd0dec4f5 Mon Sep 17 00:00:00 2001 From: Yura Uhryn Date: Thu, 5 Jan 2023 15:55:33 +0200 Subject: [PATCH 5/8] Update dependencies --- .gitignore | 1 + example/pubspec.lock | 328 +++++++++++++------------------------------ pubspec.lock | 304 +++++++++++---------------------------- pubspec.yaml | 5 +- 4 files changed, 179 insertions(+), 459 deletions(-) diff --git a/.gitignore b/.gitignore index 4946cd9..51fc06f 100644 --- a/.gitignore +++ b/.gitignore @@ -98,3 +98,4 @@ coverage/ !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +example/.flutter-plugins-dependencies diff --git a/example/pubspec.lock b/example/pubspec.lock index 74b2bc2..2e159c4 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -7,434 +7,294 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "47.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "0.39.12" - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.13" + version: "4.7.0" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "1.6.0" + version: "2.3.1" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.4.1" + version: "2.9.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" - charcode: + version: "2.1.0" + build: dependency: transitive description: - name: charcode + name: build url: "https://pub.dartlang.org" source: hosted - version: "1.1.3" - collection: + version: "2.3.1" + built_collection: dependency: transitive description: - name: collection + name: built_collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.12" - convert: + version: "5.1.1" + built_value: dependency: transitive description: - name: convert + name: built_value url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" - coverage: + version: "8.4.2" + characters: dependency: transitive description: - name: coverage + name: characters url: "https://pub.dartlang.org" source: hosted - version: "0.13.11" - crypto: + version: "1.2.1" + clock: dependency: transitive description: - name: crypto + name: clock url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" - csslib: + version: "1.1.1" + code_builder: dependency: transitive description: - name: csslib + name: code_builder url: "https://pub.dartlang.org" source: hosted - version: "0.16.1" - cupertino_icons: - dependency: "direct main" + version: "4.4.0" + collection: + dependency: transitive description: - name: cupertino_icons + name: collection url: "https://pub.dartlang.org" source: hosted - version: "0.1.2" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - glob: + version: "1.16.0" + convert: dependency: transitive description: - name: glob + name: convert url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" - headset_event: - dependency: "direct dev" - description: - path: ".." - relative: true - source: path - version: "0.0.2" - html: + version: "3.1.1" + crypto: dependency: transitive description: - name: html + name: crypto url: "https://pub.dartlang.org" source: hosted - version: "0.14.0+3" - http: - dependency: transitive + version: "3.0.2" + cupertino_icons: + dependency: "direct main" description: - name: http + name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "0.12.1" - http_multi_server: + version: "0.1.2" + dart_style: dependency: transitive description: - name: http_multi_server + name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" - http_parser: + version: "2.2.4" + fake_async: dependency: transitive description: - name: http_parser + name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "3.1.4" - image: + version: "1.3.1" + file: dependency: transitive description: - name: image + name: file url: "https://pub.dartlang.org" source: hosted - version: "2.1.12" - io: + version: "6.1.4" + fixnum: dependency: transitive description: - name: io + name: fixnum url: "https://pub.dartlang.org" source: hosted - version: "0.3.4" - js: + version: "1.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + glob: dependency: transitive description: - name: js + name: glob url: "https://pub.dartlang.org" source: hosted - version: "0.6.2" + version: "2.1.1" + headset_event: + dependency: "direct dev" + description: + path: ".." + relative: true + source: path + version: "0.0.3" logging: dependency: transitive description: name: logging url: "https://pub.dartlang.org" source: hosted - version: "0.11.4" + version: "1.1.0" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.6" - meta: + version: "0.12.12" + material_color_utilities: dependency: transitive description: - name: meta + name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "1.1.8" - mime: + version: "0.1.5" + meta: dependency: transitive description: - name: mime + name: meta url: "https://pub.dartlang.org" source: hosted - version: "0.9.6+3" + version: "1.8.0" mockito: dependency: transitive description: name: mockito url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" - multi_server_socket: - dependency: transitive - description: - name: multi_server_socket - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - node_interop: - dependency: transitive - description: - name: node_interop - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - node_io: - dependency: transitive - description: - name: node_io - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - node_preamble: - dependency: transitive - description: - name: node_preamble - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.12" + version: "5.2.0" package_config: dependency: transitive description: name: package_config url: "https://pub.dartlang.org" source: hosted - version: "1.9.3" + version: "2.1.0" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.4" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.7.0" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.0" - pool: - dependency: transitive - description: - name: pool - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.0" + version: "1.8.2" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "1.4.4" - quiver: - dependency: transitive - description: - name: quiver - url: "https://pub.dartlang.org" - source: hosted version: "2.1.3" - shelf: - dependency: transitive - description: - name: shelf - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.7" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - shelf_static: - dependency: transitive - description: - name: shelf_static - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.8" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.3" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" - source_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - source_maps: + source_gen: dependency: transitive description: - name: source_maps + name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "0.10.9" + version: "1.2.6" source_span: dependency: transitive description: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.9.0" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.9.3" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "1.1.1" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" - test: - dependency: transitive - description: - name: test - url: "https://pub.dartlang.org" - source: hosted - version: "1.14.4" + version: "1.2.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.15" - test_core: - dependency: transitive - description: - name: test_core - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.4" + version: "0.4.12" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.3.1" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" - vm_service: - dependency: transitive - description: - name: vm_service - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.0" + version: "2.1.2" watcher: dependency: transitive description: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "0.9.7+15" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.3" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "3.6.1" + version: "1.0.2" yaml: dependency: transitive description: name: yaml url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "3.1.1" sdks: - dart: ">=2.7.0 <3.0.0" + dart: ">=2.18.0 <3.0.0" diff --git a/pubspec.lock b/pubspec.lock index 62f7f0b..50dc850 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,420 +7,280 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "47.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "0.39.12" - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.13" + version: "4.7.0" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "1.6.0" + version: "2.3.1" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.4.1" + version: "2.9.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" - charcode: + version: "2.1.0" + build: dependency: transitive description: - name: charcode + name: build url: "https://pub.dartlang.org" source: hosted - version: "1.1.3" - collection: + version: "2.3.1" + built_collection: dependency: transitive description: - name: collection + name: built_collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.12" - convert: + version: "5.1.1" + built_value: dependency: transitive description: - name: convert + name: built_value url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" - coverage: + version: "8.4.2" + characters: dependency: transitive description: - name: coverage + name: characters url: "https://pub.dartlang.org" source: hosted - version: "0.13.11" - crypto: + version: "1.2.1" + clock: dependency: transitive description: - name: crypto + name: clock url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" - csslib: + version: "1.1.1" + code_builder: dependency: transitive description: - name: csslib + name: code_builder url: "https://pub.dartlang.org" source: hosted - version: "0.16.1" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - glob: + version: "4.4.0" + collection: dependency: transitive description: - name: glob + name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" - html: + version: "1.16.0" + convert: dependency: transitive description: - name: html + name: convert url: "https://pub.dartlang.org" source: hosted - version: "0.14.0+3" - http: + version: "3.1.1" + crypto: dependency: transitive description: - name: http + name: crypto url: "https://pub.dartlang.org" source: hosted - version: "0.12.1" - http_multi_server: + version: "3.0.2" + dart_style: dependency: transitive description: - name: http_multi_server + name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" - http_parser: + version: "2.2.4" + fake_async: dependency: transitive description: - name: http_parser + name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "3.1.4" - image: + version: "1.3.1" + file: dependency: transitive description: - name: image + name: file url: "https://pub.dartlang.org" source: hosted - version: "2.1.12" - io: + version: "6.1.4" + fixnum: dependency: transitive description: - name: io + name: fixnum url: "https://pub.dartlang.org" source: hosted - version: "0.3.4" - js: + version: "1.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + glob: dependency: transitive description: - name: js + name: glob url: "https://pub.dartlang.org" source: hosted - version: "0.6.2" + version: "2.1.1" logging: dependency: transitive description: name: logging url: "https://pub.dartlang.org" source: hosted - version: "0.11.4" + version: "1.1.0" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.6" - meta: + version: "0.12.12" + material_color_utilities: dependency: transitive description: - name: meta + name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "1.1.8" - mime: + version: "0.1.5" + meta: dependency: transitive description: - name: mime + name: meta url: "https://pub.dartlang.org" source: hosted - version: "0.9.6+3" + version: "1.8.0" mockito: dependency: "direct main" description: name: mockito url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" - multi_server_socket: - dependency: transitive - description: - name: multi_server_socket - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - node_interop: - dependency: transitive - description: - name: node_interop - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - node_io: - dependency: transitive - description: - name: node_io - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - node_preamble: - dependency: transitive - description: - name: node_preamble - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.12" + version: "5.2.0" package_config: dependency: transitive description: name: package_config url: "https://pub.dartlang.org" source: hosted - version: "1.9.3" + version: "2.1.0" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.4" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.7.0" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.0" - pool: - dependency: transitive - description: - name: pool - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.0" + version: "1.8.2" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "1.4.4" - quiver: - dependency: transitive - description: - name: quiver - url: "https://pub.dartlang.org" - source: hosted version: "2.1.3" - shelf: - dependency: transitive - description: - name: shelf - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.7" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - shelf_static: - dependency: transitive - description: - name: shelf_static - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.8" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.3" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" - source_map_stack_trace: + source_gen: dependency: transitive description: - name: source_map_stack_trace + name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" - source_maps: - dependency: transitive - description: - name: source_maps - url: "https://pub.dartlang.org" - source: hosted - version: "0.10.9" + version: "1.2.6" source_span: dependency: transitive description: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.9.0" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.9.3" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "1.1.1" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" - test: - dependency: transitive - description: - name: test - url: "https://pub.dartlang.org" - source: hosted - version: "1.14.4" + version: "1.2.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.15" - test_core: - dependency: transitive - description: - name: test_core - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.4" + version: "0.4.12" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.3.1" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" - vm_service: - dependency: transitive - description: - name: vm_service - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.0" + version: "2.1.2" watcher: dependency: transitive description: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "0.9.7+15" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.3" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "3.6.1" + version: "1.0.2" yaml: dependency: transitive description: name: yaml url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "3.1.1" sdks: - dart: ">=2.7.0 <3.0.0" + dart: ">=2.18.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index fb812ed..f523e88 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,6 @@ name: headset_event description: Flutter Plugin for headset events. Detect headset is plugged and unplugged. Get current headset state. -version: 0.0.2 -author: songyiYu, yenoss, FlutterMoum Group +version: 0.0.3 homepage: https://github.com/flutter-moum/flutter_headset_event environment: @@ -10,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - mockito: 3.0.0 + mockito: 5.2.0 dev_dependencies: flutter_test: From fda7760569c01aa2328ba75533d6682c1031bd3c Mon Sep 17 00:00:00 2001 From: Yura Uhryn Date: Thu, 5 Jan 2023 16:36:15 +0200 Subject: [PATCH 6/8] Null safety and Andoid V2 --- .../android/app/src/main/AndroidManifest.xml | 2 +- .../headset_event_example/MainActivity.java | 9 +----- lib/headset_event.dart | 28 ++++++++----------- pubspec.yaml | 4 +-- test/headset_event_test.dart | 7 ++--- 5 files changed, 19 insertions(+), 31 deletions(-) diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 9ba38c5..05ed047 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -7,7 +7,7 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> get getCurrentState async { final int state = await _channel.invokeMethod('getCurrentState'); - switch(state) { + switch (state) { case 0: return Future.value(HeadsetState.DISCONNECT); case 1: @@ -54,20 +52,18 @@ class HeadsetEvent { } Future _handleMethod(MethodCall call) async { - switch(call.method) { + switch (call.method) { case "connect": - return detectPluggedCallback(HeadsetState.CONNECT); + return detectPluggedCallback?.call(HeadsetState.CONNECT); case "disconnect": - return detectPluggedCallback(HeadsetState.DISCONNECT); + return detectPluggedCallback?.call(HeadsetState.DISCONNECT); case "nextButton": - return detectPluggedCallback(HeadsetState.NEXT); + return detectPluggedCallback?.call(HeadsetState.NEXT); case "prevButton": - return detectPluggedCallback(HeadsetState.PREV); + return detectPluggedCallback?.call(HeadsetState.PREV); default: print('No idea'); - return detectPluggedCallback(HeadsetState.DISCONNECT); + return detectPluggedCallback?.call(HeadsetState.DISCONNECT); } } - - } diff --git a/pubspec.yaml b/pubspec.yaml index f523e88..43868e1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,10 @@ name: headset_event description: Flutter Plugin for headset events. Detect headset is plugged and unplugged. Get current headset state. -version: 0.0.3 +version: 0.0.4 homepage: https://github.com/flutter-moum/flutter_headset_event environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0 <3.0.0" dependencies: flutter: diff --git a/test/headset_event_test.dart b/test/headset_event_test.dart index 96640a8..883e17b 100644 --- a/test/headset_event_test.dart +++ b/test/headset_event_test.dart @@ -6,12 +6,12 @@ import 'package:mockito/mockito.dart'; typedef DetectPluggedCallback = Function(HeadsetState payload); void main() { - MockMethodChannel methodChannel; - HeadsetEvent he; + late MockMethodChannel methodChannel; + late HeadsetEvent he; setUp(() { methodChannel = MockMethodChannel(); - he = HeadsetEvent.private(methodChannel); + he = HeadsetEvent.private(methodChannel); }); test('getCurrentState', () async { @@ -26,7 +26,6 @@ void main() { when(methodChannel.invokeMethod('getCurrentState')) .thenAnswer((Invocation invoke) => Future.value(-1)); expect(await he.getCurrentState, HeadsetState.DISCONNECT); - }); } From e21cdcdf465db3fb3535b237c72e616804d0f3a7 Mon Sep 17 00:00:00 2001 From: Yura Uhryn Date: Thu, 5 Jan 2023 16:36:26 +0200 Subject: [PATCH 7/8] Pub --- example/pubspec.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/pubspec.lock b/example/pubspec.lock index 2e159c4..9f91876 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -157,7 +157,7 @@ packages: path: ".." relative: true source: path - version: "0.0.3" + version: "0.0.4" logging: dependency: transitive description: From bd4624a6acd727b0471fbe85b3622d460b27ebb2 Mon Sep 17 00:00:00 2001 From: Yura Uhryn Date: Tue, 17 Jan 2023 15:28:18 +0200 Subject: [PATCH 8/8] Update dependencies --- .../java/flutter/moum/headset_event/HeadsetEventPlugin.java | 4 ++-- example/android/app/src/main/AndroidManifest.xml | 4 ++++ example/pubspec.lock | 4 ++-- pubspec.lock | 2 +- pubspec.yaml | 6 +++--- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/flutter/moum/headset_event/HeadsetEventPlugin.java b/android/src/main/java/flutter/moum/headset_event/HeadsetEventPlugin.java index f600ee8..0f74778 100644 --- a/android/src/main/java/flutter/moum/headset_event/HeadsetEventPlugin.java +++ b/android/src/main/java/flutter/moum/headset_event/HeadsetEventPlugin.java @@ -7,14 +7,14 @@ import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; -import io.flutter.plugin.common.MethodChannel.MethodCallHandler; +import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugin.common.PluginRegistry.Registrar; /** * HeadsetEventPlugin */ -public class HeadsetEventPlugin implements MethodCallHandler { +public class HeadsetEventPlugin implements FlutterPlugin { public static MethodChannel headsetEventChannel; public static int currentState = -1; diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 05ed047..ed34eda 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -36,5 +36,9 @@ + + diff --git a/example/pubspec.lock b/example/pubspec.lock index 9f91876..d304f6c 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -157,7 +157,7 @@ packages: path: ".." relative: true source: path - version: "0.0.4" + version: "0.0.5" logging: dependency: transitive description: @@ -192,7 +192,7 @@ packages: name: mockito url: "https://pub.dartlang.org" source: hosted - version: "5.2.0" + version: "5.3.2" package_config: dependency: transitive description: diff --git a/pubspec.lock b/pubspec.lock index 50dc850..f5b4a2d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -178,7 +178,7 @@ packages: name: mockito url: "https://pub.dartlang.org" source: hosted - version: "5.2.0" + version: "5.3.2" package_config: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 43868e1..b52547c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,15 +1,15 @@ name: headset_event description: Flutter Plugin for headset events. Detect headset is plugged and unplugged. Get current headset state. -version: 0.0.4 +version: 0.0.5 homepage: https://github.com/flutter-moum/flutter_headset_event environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=2.16.0 <3.0.0" dependencies: flutter: sdk: flutter - mockito: 5.2.0 + mockito: 5.3.2 dev_dependencies: flutter_test: