diff --git a/README.md b/README.md index b929b03..205c959 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# waveform_extractor +# just_waveform This plugin extracts waveform data from an audio file that can be used to render waveform visualisations. diff --git a/android/build.gradle b/android/build.gradle index 80ec4c8..76b1dfe 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,4 +1,4 @@ -group 'com.ryanheise.waveform_extractor' +group 'com.ryanheise.just_waveform' version '1.0' buildscript { diff --git a/android/settings.gradle b/android/settings.gradle index b74c6a4..7c11100 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1 +1 @@ -rootProject.name = 'waveform_extractor' +rootProject.name = 'just_waveform' diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index f99a7a8..7381449 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,3 +1,3 @@ + package="com.ryanheise.just_waveform"> diff --git a/android/src/main/java/com/ryanheise/waveform_extractor/WaveformExtractorPlugin.java b/android/src/main/java/com/ryanheise/just_waveform/JustWaveformPlugin.java similarity index 92% rename from android/src/main/java/com/ryanheise/waveform_extractor/WaveformExtractorPlugin.java rename to android/src/main/java/com/ryanheise/just_waveform/JustWaveformPlugin.java index 989a18b..834a67a 100644 --- a/android/src/main/java/com/ryanheise/waveform_extractor/WaveformExtractorPlugin.java +++ b/android/src/main/java/com/ryanheise/just_waveform/JustWaveformPlugin.java @@ -1,4 +1,4 @@ -package com.ryanheise.waveform_extractor; +package com.ryanheise.just_waveform; import androidx.annotation.NonNull; @@ -11,14 +11,14 @@ import java.util.List; import io.flutter.plugin.common.PluginRegistry.Registrar; -/** WaveformExtractorPlugin */ -public class WaveformExtractorPlugin implements FlutterPlugin, MethodCallHandler { +/** JustWaveformPlugin */ +public class JustWaveformPlugin implements FlutterPlugin, MethodCallHandler { private MethodChannel channel; private Handler handler = new Handler(); @Override public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) { - channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "com.ryanheise.waveform_extractor"); + channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "com.ryanheise.just_waveform"); channel.setMethodCallHandler(this); } diff --git a/android/src/main/java/com/ryanheise/waveform_extractor/WaveformExtractor.java b/android/src/main/java/com/ryanheise/just_waveform/WaveformExtractor.java similarity index 99% rename from android/src/main/java/com/ryanheise/waveform_extractor/WaveformExtractor.java rename to android/src/main/java/com/ryanheise/just_waveform/WaveformExtractor.java index 4f819d9..6f92faa 100644 --- a/android/src/main/java/com/ryanheise/waveform_extractor/WaveformExtractor.java +++ b/android/src/main/java/com/ryanheise/just_waveform/WaveformExtractor.java @@ -1,4 +1,4 @@ -package com.ryanheise.waveform_extractor; +package com.ryanheise.just_waveform; import android.media.MediaCodec; import android.media.MediaCodec.BufferInfo; diff --git a/darwin/Classes/WaveformExtractorPlugin.m b/darwin/Classes/JustWaveformPlugin.m similarity index 97% rename from darwin/Classes/WaveformExtractorPlugin.m rename to darwin/Classes/JustWaveformPlugin.m index e8d069e..73fe589 100644 --- a/darwin/Classes/WaveformExtractorPlugin.m +++ b/darwin/Classes/JustWaveformPlugin.m @@ -1,18 +1,18 @@ -#import "WaveformExtractorPlugin.h" +#import "JustWaveformPlugin.h" -@implementation WaveformExtractorPlugin { +@implementation JustWaveformPlugin { FlutterMethodChannel *_channel; } + (void)registerWithRegistrar:(NSObject*)registrar { - [[WaveformExtractorPlugin alloc] initWithRegistrar:registrar]; + [[JustWaveformPlugin alloc] initWithRegistrar:registrar]; } - (instancetype)initWithRegistrar:(NSObject *)registrar { self = [super init]; NSAssert(self, @"super init cannot be nil"); _channel = [FlutterMethodChannel - methodChannelWithName:@"com.ryanheise.waveform_extractor" + methodChannelWithName:@"com.ryanheise.just_waveform" binaryMessenger:[registrar messenger]]; [registrar addMethodCallDelegate:self channel:_channel]; return self; diff --git a/example/README.md b/example/README.md index f6511c2..fc0bd15 100644 --- a/example/README.md +++ b/example/README.md @@ -1,6 +1,6 @@ -# waveform_extractor_example +# just_waveform_example -Demonstrates how to use the waveform_extractor plugin. +Demonstrates how to use the just_waveform plugin. ## Getting Started diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 47a23e5..4ae4655 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -34,7 +34,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.ryanheise.waveform_extractor_example" + applicationId "com.ryanheise.just_waveform_example" minSdkVersion 16 targetSdkVersion 30 versionCode flutterVersionCode.toInteger() diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml index d96f5e6..ff23d50 100644 --- a/example/android/app/src/debug/AndroidManifest.xml +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.ryanheise.just_waveform_example"> diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index c4f343e..c63c07f 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + package="com.ryanheise.just_waveform_example"> CFBundleInfoDictionaryVersion 6.0 CFBundleName - waveform_extractor_example + just_waveform_example CFBundlePackageType APPL CFBundleShortVersionString diff --git a/example/lib/main.dart b/example/lib/main.dart index 522ef3c..337fe6d 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -6,7 +6,7 @@ import 'package:flutter/services.dart'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; import 'package:rxdart/rxdart.dart'; -import 'package:waveform_extractor/waveform_extractor.dart'; +import 'package:just_waveform/just_waveform.dart'; void main() { runApp(const MyApp()); @@ -20,7 +20,7 @@ class MyApp extends StatefulWidget { } class _MyAppState extends State { - final progressStream = BehaviorSubject(); + final progressStream = BehaviorSubject(); @override void initState() { @@ -36,7 +36,7 @@ class _MyAppState extends State { (await rootBundle.load('audio/waveform.mp3')).buffer.asUint8List()); final waveFile = File(p.join((await getTemporaryDirectory()).path, 'waveform.wave')); - WaveformExtractor.extract(audioInFile: audioFile, waveOutFile: waveFile) + JustWaveform.extract(audioInFile: audioFile, waveOutFile: waveFile) .listen(progressStream.add, onError: progressStream.addError); } catch (e) { progressStream.addError(e); @@ -61,7 +61,7 @@ class _MyAppState extends State { ), padding: const EdgeInsets.all(16.0), width: double.maxFinite, - child: StreamBuilder( + child: StreamBuilder( stream: progressStream, builder: (context, snapshot) { if (snapshot.hasError) { diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index ccd5704..9a9c2e2 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -1,27 +1,27 @@ PODS: - FlutterMacOS (1.0.0) - - path_provider_macos (0.0.1): + - just_waveform (0.0.1): - FlutterMacOS - - waveform_extractor (0.0.1): + - path_provider_macos (0.0.1): - FlutterMacOS DEPENDENCIES: - FlutterMacOS (from `Flutter/ephemeral`) + - just_waveform (from `Flutter/ephemeral/.symlinks/plugins/just_waveform/macos`) - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) - - waveform_extractor (from `Flutter/ephemeral/.symlinks/plugins/waveform_extractor/macos`) EXTERNAL SOURCES: FlutterMacOS: :path: Flutter/ephemeral + just_waveform: + :path: Flutter/ephemeral/.symlinks/plugins/just_waveform/macos path_provider_macos: :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos - waveform_extractor: - :path: Flutter/ephemeral/.symlinks/plugins/waveform_extractor/macos SPEC CHECKSUMS: FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424 + just_waveform: 1ab8cecd081342f77c51392910db0162720f0cba path_provider_macos: 160cab0d5461f0c0e02995469a98f24bdb9a3f1f - waveform_extractor: 7e5adf3ce0050b28d859b4f10be19c1c4b4f52bc PODFILE CHECKSUM: 6eac6b3292e5142cfc23bdeb71848a40ec51c14c diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj index 9113f40..5a81dfb 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -56,7 +56,7 @@ 0EC2C0715430E93A4A2B2D33 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* waveform_extractor_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = waveform_extractor_example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10ED2044A3C60003C045 /* just_waveform_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = just_waveform_example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; @@ -112,7 +112,7 @@ 33CC10EE2044A3C60003C045 /* Products */ = { isa = PBXGroup; children = ( - 33CC10ED2044A3C60003C045 /* waveform_extractor_example.app */, + 33CC10ED2044A3C60003C045 /* just_waveform_example.app */, ); name = Products; sourceTree = ""; @@ -193,7 +193,7 @@ ); name = Runner; productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* waveform_extractor_example.app */; + productReference = 33CC10ED2044A3C60003C045 /* just_waveform_example.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index e0655fb..c6e9305 100644 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -15,7 +15,7 @@ @@ -31,7 +31,7 @@ @@ -54,7 +54,7 @@ @@ -73,7 +73,7 @@ diff --git a/example/macos/Runner/Configs/AppInfo.xcconfig b/example/macos/Runner/Configs/AppInfo.xcconfig index faa77e8..bd29445 100644 --- a/example/macos/Runner/Configs/AppInfo.xcconfig +++ b/example/macos/Runner/Configs/AppInfo.xcconfig @@ -5,7 +5,7 @@ // 'flutter create' template. // The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = waveform_extractor_example +PRODUCT_NAME = just_waveform_example // The application's bundle identifier PRODUCT_BUNDLE_IDENTIFIER = com.ryanheise.waveformExtractorExample diff --git a/example/pubspec.yaml b/example/pubspec.yaml index edc2455..6095254 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,5 +1,5 @@ -name: waveform_extractor_example -description: Demonstrates how to use the waveform_extractor plugin. +name: just_waveform_example +description: Demonstrates how to use the just_waveform plugin. publish_to: 'none' @@ -11,7 +11,7 @@ dependencies: sdk: flutter rxdart: ^0.27.0 - waveform_extractor: + just_waveform: path: ../ dev_dependencies: diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart index cb2ad36..b12b874 100644 --- a/example/test/widget_test.dart +++ b/example/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:waveform_extractor_example/main.dart'; +import 'package:just_waveform_example/main.dart'; void main() { testWidgets('Verify Platform version', (WidgetTester tester) async { @@ -18,8 +18,8 @@ void main() { // Verify that platform version is retrieved. expect( find.byWidgetPredicate( - (Widget widget) => widget is Text && - widget.data!.startsWith('Running on:'), + (Widget widget) => + widget is Text && widget.data!.startsWith('Running on:'), ), findsOneWidget, ); diff --git a/ios/Classes/WaveformExtractorPlugin.h b/ios/Classes/JustWaveformPlugin.h similarity index 65% rename from ios/Classes/WaveformExtractorPlugin.h rename to ios/Classes/JustWaveformPlugin.h index 3ce49a1..ce23e5d 100644 --- a/ios/Classes/WaveformExtractorPlugin.h +++ b/ios/Classes/JustWaveformPlugin.h @@ -2,5 +2,5 @@ #import #import -@interface WaveformExtractorPlugin : NSObject +@interface JustWaveformPlugin : NSObject @end diff --git a/ios/Classes/JustWaveformPlugin.m b/ios/Classes/JustWaveformPlugin.m new file mode 120000 index 0000000..eb7dd09 --- /dev/null +++ b/ios/Classes/JustWaveformPlugin.m @@ -0,0 +1 @@ +../../darwin/Classes/JustWaveformPlugin.m \ No newline at end of file diff --git a/ios/Classes/WaveformExtractorPlugin.m b/ios/Classes/WaveformExtractorPlugin.m deleted file mode 120000 index 6884d53..0000000 --- a/ios/Classes/WaveformExtractorPlugin.m +++ /dev/null @@ -1 +0,0 @@ -../../darwin/Classes/WaveformExtractorPlugin.m \ No newline at end of file diff --git a/ios/waveform_extractor.podspec b/ios/just_waveform.podspec similarity index 86% rename from ios/waveform_extractor.podspec rename to ios/just_waveform.podspec index 5b6d454..28bbeff 100644 --- a/ios/waveform_extractor.podspec +++ b/ios/just_waveform.podspec @@ -1,9 +1,9 @@ # # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint waveform_extractor.podspec` to validate before publishing. +# Run `pod lib lint just_waveform.podspec` to validate before publishing. # Pod::Spec.new do |s| - s.name = 'waveform_extractor' + s.name = 'just_waveform' s.version = '0.0.1' s.summary = 'A new flutter plugin project.' s.description = <<-DESC diff --git a/lib/waveform_extractor.dart b/lib/just_waveform.dart similarity index 87% rename from lib/waveform_extractor.dart rename to lib/just_waveform.dart index 741d95b..b7c48e5 100644 --- a/lib/waveform_extractor.dart +++ b/lib/just_waveform.dart @@ -4,23 +4,23 @@ import 'dart:typed_data'; import 'package:flutter/services.dart'; -class WaveformExtractor { +class JustWaveform { static const MethodChannel _channel = - MethodChannel('com.ryanheise.waveform_extractor'); + MethodChannel('com.ryanheise.just_waveform'); /// Extract a waveform from [audioInFile] and write it to [waveOutFile]. // XXX: It would be better to return a stream of the actual [Waveform], with // progress => wave.data.length / (wave.length*2) - static Stream extract({ + static Stream extract({ required File audioInFile, required File waveOutFile, }) { - final progressController = - StreamController.broadcast(); - progressController.add(WaveformExtractorProgress._(0.0, null)); + final progressController = StreamController.broadcast(); + progressController.add(WaveformProgress._(0.0, null)); _channel.setMethodCallHandler((MethodCall call) async { switch (call.method) { case 'onProgress': + // ignore: avoid_print print("received onProgress: ${call.arguments}}"); int progress = call.arguments; //print("_progressSubject.add($progress)"); @@ -28,8 +28,7 @@ class WaveformExtractor { if (progress == 100) { waveform = await parse(waveOutFile); } - progressController - .add(WaveformExtractorProgress._(progress / 100, waveform)); + progressController.add(WaveformProgress._(progress / 100, waveform)); if (progress == 100) { progressController.close(); } @@ -59,11 +58,11 @@ class WaveformExtractor { } } -class WaveformExtractorProgress { +class WaveformProgress { final double progress; final Waveform? waveform; - WaveformExtractorProgress._(this.progress, this.waveform); + WaveformProgress._(this.progress, this.waveform); } /// Audio waveform data in the diff --git a/macos/Classes/WaveformExtractorPlugin.h b/macos/Classes/JustWaveformPlugin.h similarity index 67% rename from macos/Classes/WaveformExtractorPlugin.h rename to macos/Classes/JustWaveformPlugin.h index a7dbbdc..33e846d 100644 --- a/macos/Classes/WaveformExtractorPlugin.h +++ b/macos/Classes/JustWaveformPlugin.h @@ -2,5 +2,5 @@ #import #import -@interface WaveformExtractorPlugin : NSObject +@interface JustWaveformPlugin : NSObject @end diff --git a/macos/Classes/JustWaveformPlugin.m b/macos/Classes/JustWaveformPlugin.m new file mode 120000 index 0000000..eb7dd09 --- /dev/null +++ b/macos/Classes/JustWaveformPlugin.m @@ -0,0 +1 @@ +../../darwin/Classes/JustWaveformPlugin.m \ No newline at end of file diff --git a/macos/Classes/WaveformExtractorPlugin.m b/macos/Classes/WaveformExtractorPlugin.m deleted file mode 120000 index 6884d53..0000000 --- a/macos/Classes/WaveformExtractorPlugin.m +++ /dev/null @@ -1 +0,0 @@ -../../darwin/Classes/WaveformExtractorPlugin.m \ No newline at end of file diff --git a/macos/waveform_extractor.podspec b/macos/just_waveform.podspec similarity index 84% rename from macos/waveform_extractor.podspec rename to macos/just_waveform.podspec index 531dcfa..900ec4a 100644 --- a/macos/waveform_extractor.podspec +++ b/macos/just_waveform.podspec @@ -1,9 +1,9 @@ # # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint waveform_extractor.podspec` to validate before publishing. +# Run `pod lib lint just_waveform.podspec` to validate before publishing. # Pod::Spec.new do |s| - s.name = 'waveform_extractor' + s.name = 'just_waveform' s.version = '0.0.1' s.summary = 'A new flutter plugin project.' s.description = <<-DESC diff --git a/pubspec.yaml b/pubspec.yaml index abd9c5c..714de34 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,4 +1,4 @@ -name: waveform_extractor +name: just_waveform description: Extracts waveform data from an audio file suitable for visually rendering the waveform. version: 0.0.1 homepage: @@ -22,9 +22,9 @@ flutter: plugin: platforms: android: - package: com.ryanheise.waveform_extractor - pluginClass: WaveformExtractorPlugin + package: com.ryanheise.just_waveform + pluginClass: JustWaveformPlugin ios: - pluginClass: WaveformExtractorPlugin + pluginClass: JustWaveformPlugin macos: - pluginClass: WaveformExtractorPlugin + pluginClass: JustWaveformPlugin diff --git a/test/just_waveform_test.dart b/test/just_waveform_test.dart new file mode 100644 index 0000000..19bb822 --- /dev/null +++ b/test/just_waveform_test.dart @@ -0,0 +1,23 @@ +//import 'package:flutter/services.dart'; +//import 'package:flutter_test/flutter_test.dart'; +//import 'package:just_waveform/just_waveform.dart'; +// +//void main() { +// const MethodChannel channel = MethodChannel('just_waveform'); +// +// TestWidgetsFlutterBinding.ensureInitialized(); +// +// setUp(() { +// channel.setMockMethodCallHandler((MethodCall methodCall) async { +// return '42'; +// }); +// }); +// +// tearDown(() { +// channel.setMockMethodCallHandler(null); +// }); +// +// test('getPlatformVersion', () async { +// expect(await JustWaveform.platformVersion, '42'); +// }); +//} diff --git a/test/waveform_extractor_test.dart b/test/waveform_extractor_test.dart deleted file mode 100644 index 6bd7ff3..0000000 --- a/test/waveform_extractor_test.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:waveform_extractor/waveform_extractor.dart'; - -void main() { - const MethodChannel channel = MethodChannel('waveform_extractor'); - - TestWidgetsFlutterBinding.ensureInitialized(); - - setUp(() { - channel.setMockMethodCallHandler((MethodCall methodCall) async { - return '42'; - }); - }); - - tearDown(() { - channel.setMockMethodCallHandler(null); - }); - - test('getPlatformVersion', () async { - expect(await WaveformExtractor.platformVersion, '42'); - }); -}