shakebug-react-native 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DeviceInfo/index.js.flow +177 -0
- package/DeviceInfo/index.ts +1034 -0
- package/DeviceInfo/internal/asyncHookWrappers.ts +59 -0
- package/DeviceInfo/internal/devicesWithDynamicIsland.ts +30 -0
- package/DeviceInfo/internal/devicesWithNotch.ts +374 -0
- package/DeviceInfo/internal/nativeInterface.ts +28 -0
- package/DeviceInfo/internal/privateTypes.ts +231 -0
- package/DeviceInfo/internal/supported-platform-info.ts +97 -0
- package/DeviceInfo/internal/types.ts +19 -0
- package/DeviceInfo/web/index.js +223 -0
- package/GetLocals/src/NativeRNLocalize.ts +18 -0
- package/GetLocals/src/constants.ts +269 -0
- package/GetLocals/src/index.ts +56 -0
- package/GetLocals/src/module.ts +51 -0
- package/GetLocals/src/module.web.ts +148 -0
- package/GetLocals/src/types.ts +31 -0
- package/GetLocation/LocationError.ts +20 -0
- package/GetLocation/index.ts +46 -0
- package/GetLocation/utils.ts +89 -0
- package/ImageOrVedioPicker/src/index.ts +28 -0
- package/ImageOrVedioPicker/src/platforms/NativeImagePicker.ts +10 -0
- package/ImageOrVedioPicker/src/platforms/native.ts +61 -0
- package/ImageOrVedioPicker/src/platforms/web.ts +159 -0
- package/ImageOrVedioPicker/src/types.ts +74 -0
- package/NetInfo/src/__tests__/eventListenerCallbacks.spec.ts +332 -0
- package/NetInfo/src/__tests__/fetch.spec.ts +479 -0
- package/NetInfo/src/index.ts +186 -0
- package/NetInfo/src/internal/__mocks__/nativeModule.ts +13 -0
- package/NetInfo/src/internal/defaultConfiguration.ts +17 -0
- package/NetInfo/src/internal/defaultConfiguration.web.ts +17 -0
- package/NetInfo/src/internal/internetReachability.ts +180 -0
- package/NetInfo/src/internal/nativeInterface.ts +43 -0
- package/NetInfo/src/internal/nativeInterface.web.ts +27 -0
- package/NetInfo/src/internal/nativeModule.ts +15 -0
- package/NetInfo/src/internal/nativeModule.web.ts +306 -0
- package/NetInfo/src/internal/privateTypes.ts +41 -0
- package/NetInfo/src/internal/state.ts +137 -0
- package/NetInfo/src/internal/types.ts +128 -0
- package/README.md +246 -0
- package/RecordScreen/src/index.tsx +75 -0
- package/ScreenShot/src/RNViewShot.js +3 -0
- package/ScreenShot/src/RNViewShot.web.js +42 -0
- package/ScreenShot/src/index.js +308 -0
- package/Sensor/src/index.js +14 -0
- package/Sensor/src/rnsensors.js +57 -0
- package/Sensor/src/sensors.js +97 -0
- package/VideoPlayer/PlayVideo.tsx +51 -0
- package/VideoPlayer/index.js +69 -0
- package/android/README.md +14 -0
- package/android/build/generated/source/buildConfig/debug/com/shakebug/BuildConfig.java +10 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +42 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +6 -0
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +47 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/xml_imagepicker_provider_paths.xml.flat +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +12 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ImageMetadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ImagePickerProvider.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Metadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Options.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Shakebug.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ShakebugPackage.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Utility.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Utils.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/VideoMetadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Formats.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Results.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +49 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +82 -0
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +42 -0
- package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
- package/android/build/intermediates/packaged_res/debug/values/values.xml +25 -0
- package/android/build/intermediates/packaged_res/debug/xml/imagepicker_provider_paths.xml +4 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImageMetadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImagePickerProvider.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Metadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Options.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Shakebug.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ShakebugPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utility.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utils.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/VideoMetadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Formats.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Results.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot.class +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +48 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +97 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +235 -0
- package/android/src/main/AndroidManifest.xml +40 -0
- package/android/src/main/java/com/shakebug/AmazonFireDeviceConnectivityPoller.java +170 -0
- package/android/src/main/java/com/shakebug/BaseUtils.java +33 -0
- package/android/src/main/java/com/shakebug/BroadcastReceiverConnectivityReceiver.java +131 -0
- package/android/src/main/java/com/shakebug/ConnectivityReceiver.java +318 -0
- package/android/src/main/java/com/shakebug/CrashLoggerModule.java +48 -0
- package/android/src/main/java/com/shakebug/DateUtil.java +64 -0
- package/android/src/main/java/com/shakebug/DeviceType.java +18 -0
- package/android/src/main/java/com/shakebug/DeviceUtil.java +46 -0
- package/android/src/main/java/com/shakebug/DrawingView.java +90 -0
- package/android/src/main/java/com/shakebug/DrawingViewManager.java +38 -0
- package/android/src/main/java/com/shakebug/GetLocation.java +147 -0
- package/android/src/main/java/com/shakebug/ImageMetadata.java +42 -0
- package/android/src/main/java/com/shakebug/ImagePickerProvider.java +8 -0
- package/android/src/main/java/com/shakebug/Metadata.java +46 -0
- package/android/src/main/java/com/shakebug/NetInfoModule.java +79 -0
- package/android/src/main/java/com/shakebug/NetInfoUtils.java +50 -0
- package/android/src/main/java/com/shakebug/NetworkCallbackConnectivityReceiver.java +209 -0
- package/android/src/main/java/com/shakebug/Options.java +42 -0
- package/android/src/main/java/com/shakebug/RNDeviceModule.java +1036 -0
- package/android/src/main/java/com/shakebug/RNInstallReferrerClient.java +124 -0
- package/android/src/main/java/com/shakebug/RNLocalizeModule.java +79 -0
- package/android/src/main/java/com/shakebug/RNLocalizeModuleImpl.java +258 -0
- package/android/src/main/java/com/shakebug/ReactNativeGetLocationModule.java +95 -0
- package/android/src/main/java/com/shakebug/RecordScreenModule.java +202 -0
- package/android/src/main/java/com/shakebug/ScreenshotDetectorModule.java +63 -0
- package/android/src/main/java/com/shakebug/SettingsUtil.java +44 -0
- package/android/src/main/java/com/shakebug/Shakebug.java +181 -0
- package/android/src/main/java/com/shakebug/ShakebugPackage.java +75 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModule.java +56 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModuleImpl.java +230 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKScreenShotModule.java +196 -0
- package/android/src/main/java/com/shakebug/SharedPreferencesModule.java +39 -0
- package/android/src/main/java/com/shakebug/UnitConverter.java +48 -0
- package/android/src/main/java/com/shakebug/Utility.java +29 -0
- package/android/src/main/java/com/shakebug/Utils.java +593 -0
- package/android/src/main/java/com/shakebug/VideoMetadata.java +91 -0
- package/android/src/main/java/com/shakebug/VideoPlayerModule.java +199 -0
- package/android/src/main/java/com/shakebug/VideoThumbnailModule.java +215 -0
- package/android/src/main/java/com/shakebug/VideoTrimModule.java +372 -0
- package/android/src/main/java/com/shakebug/ViewShot.java +627 -0
- package/android/src/main/java/com/shakebug/adapters/VideoTrimmerAdapter.java +54 -0
- package/android/src/main/java/com/shakebug/callback/SingleCallback.java +11 -0
- package/android/src/main/java/com/shakebug/interfaces/IVideoTrimmerView.java +5 -0
- package/android/src/main/java/com/shakebug/interfaces/VideoPlayerListner.java +5 -0
- package/android/src/main/java/com/shakebug/interfaces/VideoTrimListener.java +10 -0
- package/android/src/main/java/com/shakebug/resolver/DeviceIdResolver.java +87 -0
- package/android/src/main/java/com/shakebug/resolver/DeviceTypeResolver.java +94 -0
- package/android/src/main/java/com/shakebug/thread/BackgroundExecutor.java +246 -0
- package/android/src/main/java/com/shakebug/thread/UiThreadExecutor.java +120 -0
- package/android/src/main/java/com/shakebug/types/CellularGeneration.java +60 -0
- package/android/src/main/java/com/shakebug/types/ConnectionType.java +26 -0
- package/android/src/main/java/com/shakebug/utils/StorageUtil.java +139 -0
- package/android/src/main/java/com/shakebug/utils/VideoTrimmerUtil.java +89 -0
- package/android/src/main/java/com/shakebug/widgets/RangeSeekBarView.java +534 -0
- package/android/src/main/java/com/shakebug/widgets/SpacesItemDecoration2.java +32 -0
- package/android/src/main/java/com/shakebug/widgets/VideoPlayerView.java +429 -0
- package/android/src/main/java/com/shakebug/widgets/VideoTrimmerView.java +477 -0
- package/android/src/main/java/com/shakebug/widgets/ZVideoView.java +48 -0
- package/android/src/main/res/drawable/custom_progress.xml +16 -0
- package/android/src/main/res/drawable/custom_thumb.xml +4 -0
- package/android/src/main/res/drawable/ic_close_button.xml +10 -0
- package/android/src/main/res/drawable/ic_video_pause_black.png +0 -0
- package/android/src/main/res/drawable/ic_video_play_black.png +0 -0
- package/android/src/main/res/drawable/ic_video_thumb_handle.png +0 -0
- package/android/src/main/res/drawable/icon_seek_bar.png +0 -0
- package/android/src/main/res/layout/video_player_view.xml +121 -0
- package/android/src/main/res/layout/video_thumb_item_layout.xml +16 -0
- package/android/src/main/res/layout/video_trimmer_view.xml +148 -0
- package/android/src/main/res/values/colors.xml +17 -0
- package/android/src/main/res/values/strings.xml +14 -0
- package/android/src/main/res/xml/imagepicker_provider_paths.xml +4 -0
- package/ios/CammeraPermission/RNCameraPermission.h +16 -0
- package/ios/CammeraPermission/RNCameraPermission.m +46 -0
- package/ios/DeviceInfo/DeviceUID.h +14 -0
- package/ios/DeviceInfo/DeviceUID.m +202 -0
- package/ios/DeviceInfo/EnvironmentUtil.h +41 -0
- package/ios/DeviceInfo/EnvironmentUtil.m +56 -0
- package/ios/DeviceInfo/RNDeviceInfo.h +22 -0
- package/ios/DeviceInfo/RNDeviceInfo.m +918 -0
- package/ios/GetLocals/ShakebugSDKRNLocalize.h +21 -0
- package/ios/GetLocals/ShakebugSDKRNLocalize.m +296 -0
- package/ios/GetLocation/SettingsUtil.h +16 -0
- package/ios/GetLocation/SettingsUtil.m +21 -0
- package/ios/GetLocation/ShakebugSDKLocationModule.h +17 -0
- package/ios/GetLocation/ShakebugSDKLocationModule.m +218 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.h +40 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.m +588 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.h +26 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.m +194 -0
- package/ios/MicrophonePermissionManager.h +14 -0
- package/ios/MicrophonePermissionManager.m +35 -0
- package/ios/NetInfo/RNCConnectionState.h +42 -0
- package/ios/NetInfo/RNCConnectionState.m +119 -0
- package/ios/NetInfo/RNCConnectionStateWatcher.h +31 -0
- package/ios/NetInfo/RNCConnectionStateWatcher.m +136 -0
- package/ios/NetInfo/RNCNetInfo.h +13 -0
- package/ios/NetInfo/RNCNetInfo.m +269 -0
- package/ios/RecordScreen/ShakebugSDKRecordScreen.h +31 -0
- package/ios/RecordScreen/ShakebugSDKRecordScreen.m +309 -0
- package/ios/ScreenShot/ShakebugSDKRNViewShot.h +6 -0
- package/ios/ScreenShot/ShakebugSDKRNViewShot.m +186 -0
- package/ios/ScreenshotDetector/ScreenShotDetector.h +12 -0
- package/ios/ScreenshotDetector/ScreenShotDetector.m +37 -0
- package/ios/Senors/RNSensorsAccelerometer.h +22 -0
- package/ios/Senors/RNSensorsAccelerometer.m +162 -0
- package/ios/Senors/RNSensorsBarometer.h +22 -0
- package/ios/Senors/RNSensorsBarometer.m +141 -0
- package/ios/Senors/RNSensorsGravity.h +22 -0
- package/ios/Senors/RNSensorsGravity.m +165 -0
- package/ios/Senors/RNSensorsGyroscope.h +22 -0
- package/ios/Senors/RNSensorsGyroscope.m +160 -0
- package/ios/Senors/RNSensorsMagnetometer.h +22 -0
- package/ios/Senors/RNSensorsMagnetometer.m +163 -0
- package/ios/Senors/RNSensorsOrientation.h +22 -0
- package/ios/Senors/RNSensorsOrientation.m +189 -0
- package/ios/Senors/RNSensorsUtils.h +7 -0
- package/ios/Senors/RNSensorsUtils.m +9 -0
- package/ios/Shakebug.h +7 -0
- package/ios/Shakebug.m +16 -0
- package/ios/Shakebug.xcodeproj/project.pbxproj +872 -0
- package/ios/Shakebug.xcodeproj/xcshareddata/xcschemes/Shakebug.xcscheme +66 -0
- package/ios/Shakebug.xcworkspace/contents.xcworkspacedata +10 -0
- package/ios/Shakebug.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/SketchCanvas/DrawingView.h +18 -0
- package/ios/SketchCanvas/DrawingView.m +96 -0
- package/ios/SketchCanvas/DrawingViewManager.h +12 -0
- package/ios/SketchCanvas/DrawingViewManager.m +35 -0
- package/ios/Storage/SharedPreferencesModule.h +13 -0
- package/ios/Storage/SharedPreferencesModule.m +35 -0
- package/ios/Thumbnaill/VideoThumbnailManager.h +12 -0
- package/ios/Thumbnaill/VideoThumbnailManager.m +73 -0
- package/ios/TrimVideo/ShakebugSDKVideoTrim.swift +372 -0
- package/ios/TrimVideo/VideoTrim-Bridging-Header.h +10 -0
- package/ios/TrimVideo/VideoTrim.m +23 -0
- package/ios/TrimVideo/VideoTrimmer.swift +810 -0
- package/ios/TrimVideo/VideoTrimmerThumb.swift +119 -0
- package/ios/TrimVideo/VideoTrimmerViewController.swift +301 -0
- package/ios/VideoPlayer/VideoPlayerModule.h +14 -0
- package/ios/VideoPlayer/VideoPlayerModule.m +29 -0
- package/ios/VideoPlayer/VideoPlayerViewController.h +18 -0
- package/ios/VideoPlayer/VideoPlayerViewController.m +29 -0
- package/package.json +45 -0
- package/shakebug-react-native.podspec +50 -0
- package/src/APIs/AddIssue.js +70 -0
- package/src/APIs/EndSession.js +32 -0
- package/src/APIs/Event.js +39 -0
- package/src/APIs/MatchKey.js +40 -0
- package/src/APIs/StartSession.js +84 -0
- package/src/Assets/images/OpenSketch.png +0 -0
- package/src/Assets/images/Push.png +0 -0
- package/src/Assets/images/RemoveTextView.png +0 -0
- package/src/Assets/images/black.png +0 -0
- package/src/Assets/images/blue.png +0 -0
- package/src/Assets/images/borderdBlack.png +0 -0
- package/src/Assets/images/borderdBlue.png +0 -0
- package/src/Assets/images/borderdGreen.png +0 -0
- package/src/Assets/images/borderdRed.png +0 -0
- package/src/Assets/images/borderdYellow.png +0 -0
- package/src/Assets/images/clear.png +0 -0
- package/src/Assets/images/close.png +0 -0
- package/src/Assets/images/green.png +0 -0
- package/src/Assets/images/next.png +0 -0
- package/src/Assets/images/play.png +0 -0
- package/src/Assets/images/red.png +0 -0
- package/src/Assets/images/shake.png +0 -0
- package/src/Assets/images/shakebugLogo.png +0 -0
- package/src/Assets/images/stopButton.png +0 -0
- package/src/Assets/images/text_icon.png +0 -0
- package/src/Assets/images/yellow.png +0 -0
- package/src/Componanats/CustomAlert.js +80 -0
- package/src/Componanats/ErrorHandler.js +80 -0
- package/src/Componanats/GlobalStateContext.js +22 -0
- package/src/Componanats/KeyboardAvoidingWrapper.js +43 -0
- package/src/Componanats/NavigationContext.js +42 -0
- package/src/Componanats/ShakeFunction.js +562 -0
- package/src/Componanats/localization.js +482 -0
- package/src/Screens/AddDetailsScreen.js +462 -0
- package/src/Screens/FirstScreen.js +629 -0
- package/src/Screens/Shakebug.js +487 -0
- package/src/Screens/StrockView.js +20 -0
- package/src/Screens/TrimVideoScreen.js +81 -0
- package/src/Screens/TutorialScreen.js +36 -0
- package/src/index.tsx +117 -0
- package/trimVideo/src/index.tsx +141 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
|
|
2
|
+
// Orientation.m
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#import <React/RCTBridge.h>
|
|
6
|
+
#import <React/RCTEventDispatcher.h>
|
|
7
|
+
#import "RNSensorsGravity.h"
|
|
8
|
+
#import "RNSensorsUtils.h"
|
|
9
|
+
|
|
10
|
+
@implementation ShakebugSDKRNSensorsGravity
|
|
11
|
+
|
|
12
|
+
@synthesize bridge = _bridge;
|
|
13
|
+
|
|
14
|
+
RCT_EXPORT_MODULE();
|
|
15
|
+
|
|
16
|
+
- (id) init {
|
|
17
|
+
self = [super init];
|
|
18
|
+
NSLog(@"ShakebugSDKRNSensorsGravity");
|
|
19
|
+
|
|
20
|
+
if (self) {
|
|
21
|
+
self->_motionManager = [[CMMotionManager alloc] init];
|
|
22
|
+
self->logLevel = 0;
|
|
23
|
+
}
|
|
24
|
+
return self;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (NSArray<NSString *> *)supportedEvents
|
|
28
|
+
{
|
|
29
|
+
return @[@"ShakebugSDKRNSensorsGravity"];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
+ (BOOL)requiresMainQueueSetup
|
|
33
|
+
{
|
|
34
|
+
return NO;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
RCT_REMAP_METHOD(isAvailable,
|
|
38
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
39
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
40
|
+
return [self isAvailableWithResolver:resolve
|
|
41
|
+
rejecter:reject];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
|
|
45
|
+
rejecter:(RCTPromiseRejectBlock) reject {
|
|
46
|
+
if([self->_motionManager isDeviceMotionAvailable])
|
|
47
|
+
{
|
|
48
|
+
/* Start the accelerometer if it is not active already */
|
|
49
|
+
if([self->_motionManager isDeviceMotionActive] == NO)
|
|
50
|
+
{
|
|
51
|
+
resolve(@YES);
|
|
52
|
+
} else {
|
|
53
|
+
reject(@"-1", @"Gravity is not active", nil);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else
|
|
57
|
+
{
|
|
58
|
+
reject(@"-1", @"Gravity is not available", nil);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
RCT_EXPORT_METHOD(setUpdateInterval:(double) interval) {
|
|
63
|
+
if (self->logLevel > 0) {
|
|
64
|
+
NSLog(@"setUpdateInterval: %f", interval);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
double intervalInSeconds = interval / 1000;
|
|
68
|
+
|
|
69
|
+
[self->_motionManager setDeviceMotionUpdateInterval:intervalInSeconds];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
RCT_EXPORT_METHOD(setLogLevel:(int) level) {
|
|
73
|
+
if (level > 0) {
|
|
74
|
+
NSLog(@"setLogLevel: %f", level);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
self->logLevel = level;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
RCT_EXPORT_METHOD(getUpdateInterval:(RCTResponseSenderBlock) cb) {
|
|
81
|
+
double interval = self->_motionManager.deviceMotionUpdateInterval;
|
|
82
|
+
|
|
83
|
+
if (self->logLevel > 0) {
|
|
84
|
+
NSLog(@"getUpdateInterval: %f", interval);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
cb(@[[NSNull null], [NSNumber numberWithDouble:interval]]);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
RCT_EXPORT_METHOD(getData:(RCTResponseSenderBlock) cb) {
|
|
91
|
+
double x = self->_motionManager.deviceMotion.gravity.x;
|
|
92
|
+
double y = self->_motionManager.deviceMotion.gravity.y;
|
|
93
|
+
double z = self->_motionManager.deviceMotion.gravity.z;
|
|
94
|
+
double timestamp = [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:self->_motionManager.deviceMotion.timestamp];
|
|
95
|
+
|
|
96
|
+
if (self->logLevel > 0) {
|
|
97
|
+
NSLog(@"getData: %f, %f, %f, %f", x, y, z, timestamp);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
cb(@[[NSNull null], @{
|
|
101
|
+
@"x" : [NSNumber numberWithDouble:x],
|
|
102
|
+
@"y" : [NSNumber numberWithDouble:y],
|
|
103
|
+
@"z" : [NSNumber numberWithDouble:z],
|
|
104
|
+
@"timestamp" : [NSNumber numberWithDouble:timestamp]
|
|
105
|
+
}]
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
RCT_EXPORT_METHOD(startUpdates) {
|
|
110
|
+
if (self->logLevel > 0) {
|
|
111
|
+
NSLog(@"startUpdates/startGravityUpdates");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
[self->_motionManager setShowsDeviceMovementDisplay:YES];
|
|
115
|
+
|
|
116
|
+
/* Receive the orientation data on this block */
|
|
117
|
+
[self->_motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue]
|
|
118
|
+
withHandler:^(CMDeviceMotion *deviceMotion, NSError *error)
|
|
119
|
+
{
|
|
120
|
+
|
|
121
|
+
double x = deviceMotion.gravity.x;
|
|
122
|
+
double y = deviceMotion.gravity.y;
|
|
123
|
+
double z = deviceMotion.gravity.z;
|
|
124
|
+
|
|
125
|
+
double timestamp = [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:deviceMotion.timestamp];
|
|
126
|
+
|
|
127
|
+
if (self->logLevel > 1) {
|
|
128
|
+
NSLog(@"Updated gravity values: %f, %f, %f, %f", x, y, z, timestamp);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
[self sendEventWithName:@"ShakebugSDKRNSensorsGravity" body:@{
|
|
132
|
+
@"x" : [NSNumber numberWithDouble:x],
|
|
133
|
+
@"y" : [NSNumber numberWithDouble:y],
|
|
134
|
+
@"z" : [NSNumber numberWithDouble:z],
|
|
135
|
+
@"timestamp" : [NSNumber numberWithDouble:timestamp]
|
|
136
|
+
}];
|
|
137
|
+
}];
|
|
138
|
+
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
RCT_EXPORT_METHOD(stopUpdates) {
|
|
142
|
+
if (self->logLevel > 0) {
|
|
143
|
+
NSLog(@"stopUpdates");
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
[self->_motionManager stopDeviceMotionUpdates];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Will be called when this module's first listener is added.
|
|
150
|
+
-(void)startObserving {
|
|
151
|
+
hasListeners = YES;
|
|
152
|
+
// Set up any upstream listeners or background tasks as necessary
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Will be called when this module's last listener is removed, or on dealloc.
|
|
156
|
+
-(void)stopObserving {
|
|
157
|
+
// Remove upstream listeners, stop unnecessary background tasks
|
|
158
|
+
hasListeners = NO;
|
|
159
|
+
// If we no longer have listeners registered we should also probably also stop the sensor since the sensor events are essentially being dropped.
|
|
160
|
+
if (self->_motionManager) {
|
|
161
|
+
[self stopUpdates];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Inspired by https://github.com/pwmckenna/react-native-motion-manager
|
|
2
|
+
|
|
3
|
+
#import <React/RCTBridgeModule.h>
|
|
4
|
+
#import <CoreMotion/CoreMotion.h>
|
|
5
|
+
#import <React/RCTEventEmitter.h>
|
|
6
|
+
|
|
7
|
+
@interface ShakebugSDKRNSensorsGyroscope : RCTEventEmitter <RCTBridgeModule> {
|
|
8
|
+
CMMotionManager *_motionManager;
|
|
9
|
+
int logLevel;
|
|
10
|
+
bool hasListeners;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
- (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
|
|
14
|
+
rejecter:(RCTPromiseRejectBlock) reject;
|
|
15
|
+
- (void) setUpdateInterval:(double) interval;
|
|
16
|
+
- (void) getUpdateInterval:(RCTResponseSenderBlock) cb;
|
|
17
|
+
- (void) setLogLevel:(int) level;
|
|
18
|
+
- (void) getData:(RCTResponseSenderBlock) cb;
|
|
19
|
+
- (void) startUpdates;
|
|
20
|
+
- (void) stopUpdates;
|
|
21
|
+
|
|
22
|
+
@end
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
// Inspired by https://github.com/pwmckenna/react-native-motion-manager
|
|
2
|
+
|
|
3
|
+
#import "RNSensorsGyroscope.h"
|
|
4
|
+
#import <React/RCTBridge.h>
|
|
5
|
+
#import <React/RCTEventDispatcher.h>
|
|
6
|
+
#import "RNSensorsUtils.h"
|
|
7
|
+
|
|
8
|
+
@implementation ShakebugSDKRNSensorsGyroscope
|
|
9
|
+
|
|
10
|
+
@synthesize bridge = _bridge;
|
|
11
|
+
RCT_EXPORT_MODULE();
|
|
12
|
+
|
|
13
|
+
- (id) init {
|
|
14
|
+
self = [super init];
|
|
15
|
+
NSLog(@"ShakebugSDKRNSensorsGyroscope");
|
|
16
|
+
|
|
17
|
+
if (self) {
|
|
18
|
+
self->_motionManager = [[CMMotionManager alloc] init];
|
|
19
|
+
self->logLevel = 0;
|
|
20
|
+
}
|
|
21
|
+
return self;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
- (NSArray<NSString *> *)supportedEvents
|
|
25
|
+
{
|
|
26
|
+
return @[@"ShakebugSDKRNSensorsGyroscope"];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
+ (BOOL)requiresMainQueueSetup
|
|
30
|
+
{
|
|
31
|
+
return NO;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
RCT_REMAP_METHOD(isAvailable,
|
|
35
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
36
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
37
|
+
return [self isAvailableWithResolver:resolve
|
|
38
|
+
rejecter:reject];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
- (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
|
|
42
|
+
rejecter:(RCTPromiseRejectBlock) reject {
|
|
43
|
+
if([self->_motionManager isGyroAvailable])
|
|
44
|
+
{
|
|
45
|
+
/* Start the accelerometer if it is not active already */
|
|
46
|
+
if([self->_motionManager isGyroActive] == NO)
|
|
47
|
+
{
|
|
48
|
+
resolve(@YES);
|
|
49
|
+
} else {
|
|
50
|
+
reject(@"-1", @"Gyroscope is not active", nil);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else
|
|
54
|
+
{
|
|
55
|
+
reject(@"-1", @"Gyroscope is not available", nil);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
RCT_EXPORT_METHOD(setUpdateInterval:(double) interval) {
|
|
60
|
+
if (self->logLevel > 0) {
|
|
61
|
+
NSLog(@"setUpdateInterval: %f", interval);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
double intervalInSeconds = interval / 1000;
|
|
65
|
+
|
|
66
|
+
[self->_motionManager setGyroUpdateInterval:intervalInSeconds];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
RCT_EXPORT_METHOD(setLogLevel:(int) level) {
|
|
70
|
+
if (level > 0) {
|
|
71
|
+
NSLog(@"setLogLevel: %f", level);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
self->logLevel = level;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
RCT_EXPORT_METHOD(getUpdateInterval:(RCTResponseSenderBlock) cb) {
|
|
78
|
+
double interval = self->_motionManager.gyroUpdateInterval;
|
|
79
|
+
|
|
80
|
+
if (self->logLevel > 0) {
|
|
81
|
+
NSLog(@"getUpdateInterval: %f", interval);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
cb(@[[NSNull null], [NSNumber numberWithDouble:interval]]);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
RCT_EXPORT_METHOD(getData:(RCTResponseSenderBlock) cb) {
|
|
88
|
+
double x = self->_motionManager.gyroData.rotationRate.x;
|
|
89
|
+
double y = self->_motionManager.gyroData.rotationRate.y;
|
|
90
|
+
double z = self->_motionManager.gyroData.rotationRate.z;
|
|
91
|
+
double timestamp = [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:self->_motionManager.gyroData.timestamp];
|
|
92
|
+
|
|
93
|
+
if (self->logLevel > 0) {
|
|
94
|
+
NSLog(@"getData: %f, %f, %f, %f", x, y, z, timestamp);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
cb(@[[NSNull null], @{
|
|
98
|
+
@"x" : [NSNumber numberWithDouble:x],
|
|
99
|
+
@"y" : [NSNumber numberWithDouble:y],
|
|
100
|
+
@"z" : [NSNumber numberWithDouble:z],
|
|
101
|
+
@"timestamp" : [NSNumber numberWithDouble:timestamp]
|
|
102
|
+
}]
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
RCT_EXPORT_METHOD(startUpdates) {
|
|
107
|
+
if (self->logLevel > 0) {
|
|
108
|
+
NSLog(@"startUpdates/startGyroUpdates");
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
[self->_motionManager startGyroUpdates];
|
|
112
|
+
|
|
113
|
+
/* Receive the gyroscope data on this block */
|
|
114
|
+
[self->_motionManager startGyroUpdatesToQueue:[NSOperationQueue mainQueue]
|
|
115
|
+
withHandler:^(CMGyroData *gyroData, NSError *error)
|
|
116
|
+
{
|
|
117
|
+
double x = gyroData.rotationRate.x;
|
|
118
|
+
double y = gyroData.rotationRate.y;
|
|
119
|
+
double z = gyroData.rotationRate.z;
|
|
120
|
+
double timestamp = [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:gyroData.timestamp];
|
|
121
|
+
|
|
122
|
+
if (self->logLevel > 1) {
|
|
123
|
+
NSLog(@"Updated gyro values: %f, %f, %f, %f", x, y, z, timestamp);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
[self sendEventWithName:@"ShakebugSDKRNSensorsGyroscope" body:@{
|
|
127
|
+
@"x" : [NSNumber numberWithDouble:x],
|
|
128
|
+
@"y" : [NSNumber numberWithDouble:y],
|
|
129
|
+
@"z" : [NSNumber numberWithDouble:z],
|
|
130
|
+
@"timestamp" : [NSNumber numberWithDouble:timestamp]
|
|
131
|
+
}];
|
|
132
|
+
}];
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
RCT_EXPORT_METHOD(stopUpdates) {
|
|
137
|
+
if (self->logLevel > 0) {
|
|
138
|
+
NSLog(@"stopUpdates");
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
[self->_motionManager stopGyroUpdates];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Will be called when this module's first listener is added.
|
|
145
|
+
-(void)startObserving {
|
|
146
|
+
hasListeners = YES;
|
|
147
|
+
// Set up any upstream listeners or background tasks as necessary
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Will be called when this module's last listener is removed, or on dealloc.
|
|
151
|
+
-(void)stopObserving {
|
|
152
|
+
// Remove upstream listeners, stop unnecessary background tasks
|
|
153
|
+
hasListeners = NO;
|
|
154
|
+
// If we no longer have listeners registered we should also probably also stop the sensor since the sensor events are essentially being dropped.
|
|
155
|
+
if (self->_motionManager) {
|
|
156
|
+
[self stopUpdates];
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Inspired by https://github.com/pwmckenna/react-native-motion-manager
|
|
2
|
+
|
|
3
|
+
#import <React/RCTBridgeModule.h>
|
|
4
|
+
#import <CoreMotion/CoreMotion.h>
|
|
5
|
+
#import <React/RCTEventEmitter.h>
|
|
6
|
+
|
|
7
|
+
@interface ShakebugSDKRNSensorsMagnetometer : RCTEventEmitter <RCTBridgeModule> {
|
|
8
|
+
CMMotionManager *_motionManager;
|
|
9
|
+
int logLevel;
|
|
10
|
+
bool hasListeners;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
- (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
|
|
14
|
+
rejecter:(RCTPromiseRejectBlock) reject;
|
|
15
|
+
- (void) setUpdateInterval:(double) interval;
|
|
16
|
+
- (void) getUpdateInterval:(RCTResponseSenderBlock) cb;
|
|
17
|
+
- (void) setLogLevel:(int) level;
|
|
18
|
+
- (void) getData:(RCTResponseSenderBlock) cb;
|
|
19
|
+
- (void) startUpdates;
|
|
20
|
+
- (void) stopUpdates;
|
|
21
|
+
|
|
22
|
+
@end
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
|
|
2
|
+
// RNSensorsMagnetometer.m
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#import <React/RCTBridge.h>
|
|
6
|
+
#import <React/RCTEventDispatcher.h>
|
|
7
|
+
#import "RNSensorsMagnetometer.h"
|
|
8
|
+
#import "RNSensorsUtils.h"
|
|
9
|
+
|
|
10
|
+
@implementation ShakebugSDKRNSensorsMagnetometer
|
|
11
|
+
|
|
12
|
+
@synthesize bridge = _bridge;
|
|
13
|
+
|
|
14
|
+
RCT_EXPORT_MODULE();
|
|
15
|
+
|
|
16
|
+
- (id) init {
|
|
17
|
+
self = [super init];
|
|
18
|
+
NSLog(@"ShakebugSDKRNSensorsMagnetometer");
|
|
19
|
+
|
|
20
|
+
if (self) {
|
|
21
|
+
self->_motionManager = [[CMMotionManager alloc] init];
|
|
22
|
+
self->logLevel = 0;
|
|
23
|
+
}
|
|
24
|
+
return self;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (NSArray<NSString *> *)supportedEvents
|
|
28
|
+
{
|
|
29
|
+
return @[@"ShakebugSDKRNSensorsMagnetometer"];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
+ (BOOL)requiresMainQueueSetup
|
|
33
|
+
{
|
|
34
|
+
return NO;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
RCT_REMAP_METHOD(isAvailable,
|
|
38
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
39
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
40
|
+
return [self isAvailableWithResolver:resolve
|
|
41
|
+
rejecter:reject];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
|
|
45
|
+
rejecter:(RCTPromiseRejectBlock) reject {
|
|
46
|
+
if([self->_motionManager isMagnetometerAvailable])
|
|
47
|
+
{
|
|
48
|
+
/* Start the accelerometer if it is not active already */
|
|
49
|
+
if([self->_motionManager isMagnetometerActive] == NO)
|
|
50
|
+
{
|
|
51
|
+
resolve(@YES);
|
|
52
|
+
} else {
|
|
53
|
+
reject(@"-1", @"Magnetometer is not active", nil);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else
|
|
57
|
+
{
|
|
58
|
+
reject(@"-1", @"Magnetometer is not available", nil);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
RCT_EXPORT_METHOD(setUpdateInterval:(double) interval) {
|
|
63
|
+
if (self->logLevel > 0) {
|
|
64
|
+
NSLog(@"setUpdateInterval: %f", interval);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
double intervalInSeconds = interval / 1000;
|
|
68
|
+
|
|
69
|
+
[self->_motionManager setMagnetometerUpdateInterval:intervalInSeconds];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
RCT_EXPORT_METHOD(setLogLevel:(int) level) {
|
|
73
|
+
if (level > 0) {
|
|
74
|
+
NSLog(@"setLogLevel: %f", level);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
self->logLevel = level;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
RCT_EXPORT_METHOD(getUpdateInterval:(RCTResponseSenderBlock) cb) {
|
|
81
|
+
double interval = self->_motionManager.magnetometerUpdateInterval;
|
|
82
|
+
|
|
83
|
+
if (self->logLevel > 0) {
|
|
84
|
+
NSLog(@"getUpdateInterval: %f", interval);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
cb(@[[NSNull null], [NSNumber numberWithDouble:interval]]);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
RCT_EXPORT_METHOD(getData:(RCTResponseSenderBlock) cb) {
|
|
91
|
+
double x = self->_motionManager.magnetometerData.magneticField.x;
|
|
92
|
+
double y = self->_motionManager.magnetometerData.magneticField.y;
|
|
93
|
+
double z = self->_motionManager.magnetometerData.magneticField.z;
|
|
94
|
+
double timestamp = [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:self->_motionManager.magnetometerData.timestamp];
|
|
95
|
+
|
|
96
|
+
if (self->logLevel > 0) {
|
|
97
|
+
NSLog(@"getData: %f, %f, %f, %f", x, y, z, timestamp);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
cb(@[[NSNull null], @{
|
|
101
|
+
@"x" : [NSNumber numberWithDouble:x],
|
|
102
|
+
@"y" : [NSNumber numberWithDouble:y],
|
|
103
|
+
@"z" : [NSNumber numberWithDouble:z],
|
|
104
|
+
@"timestamp" : [NSNumber numberWithDouble:timestamp]
|
|
105
|
+
}]
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
RCT_EXPORT_METHOD(startUpdates) {
|
|
110
|
+
if (self->logLevel > 0) {
|
|
111
|
+
NSLog(@"startUpdates/startMagnetometerUpdates");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
[self->_motionManager startMagnetometerUpdates];
|
|
115
|
+
|
|
116
|
+
/* Receive the magnetometer data on this block */
|
|
117
|
+
[self->_motionManager startMagnetometerUpdatesToQueue:[NSOperationQueue mainQueue]
|
|
118
|
+
withHandler:^(CMMagnetometerData *magnetometerData, NSError *error)
|
|
119
|
+
{
|
|
120
|
+
double x = magnetometerData.magneticField.x;
|
|
121
|
+
double y = magnetometerData.magneticField.y;
|
|
122
|
+
double z = magnetometerData.magneticField.z;
|
|
123
|
+
double timestamp = [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:magnetometerData.timestamp];
|
|
124
|
+
|
|
125
|
+
if (self->logLevel > 1) {
|
|
126
|
+
NSLog(@"Updated magnetometer values: %f, %f, %f, %f", x, y, z, timestamp);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
[self sendEventWithName:@"ShakebugSDKRNSensorsMagnetometer" body:@{
|
|
130
|
+
@"x" : [NSNumber numberWithDouble:x],
|
|
131
|
+
@"y" : [NSNumber numberWithDouble:y],
|
|
132
|
+
@"z" : [NSNumber numberWithDouble:z],
|
|
133
|
+
@"timestamp" : [NSNumber numberWithDouble:timestamp]
|
|
134
|
+
}];
|
|
135
|
+
}];
|
|
136
|
+
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
RCT_EXPORT_METHOD(stopUpdates) {
|
|
140
|
+
if (self->logLevel > 0) {
|
|
141
|
+
NSLog(@"stopUpdates");
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
[self->_motionManager stopMagnetometerUpdates];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Will be called when this module's first listener is added.
|
|
148
|
+
-(void)startObserving {
|
|
149
|
+
hasListeners = YES;
|
|
150
|
+
// Set up any upstream listeners or background tasks as necessary
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Will be called when this module's last listener is removed, or on dealloc.
|
|
154
|
+
-(void)stopObserving {
|
|
155
|
+
// Remove upstream listeners, stop unnecessary background tasks
|
|
156
|
+
hasListeners = NO;
|
|
157
|
+
// If we no longer have listeners registered we should also probably also stop the sensor since the sensor events are essentially being dropped.
|
|
158
|
+
if (self->_motionManager) {
|
|
159
|
+
[self stopUpdates];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Inspired by https://github.com/pwmckenna/react-native-motion-manager
|
|
2
|
+
|
|
3
|
+
#import <React/RCTBridgeModule.h>
|
|
4
|
+
#import <CoreMotion/CoreMotion.h>
|
|
5
|
+
#import <React/RCTEventEmitter.h>
|
|
6
|
+
|
|
7
|
+
@interface ShakebugSDKRNSensorsOrientation : RCTEventEmitter <RCTBridgeModule> {
|
|
8
|
+
CMMotionManager *_motionManager;
|
|
9
|
+
int logLevel;
|
|
10
|
+
bool hasListeners;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
- (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
|
|
14
|
+
rejecter:(RCTPromiseRejectBlock) reject;
|
|
15
|
+
- (void) setUpdateInterval:(double) interval;
|
|
16
|
+
- (void) getUpdateInterval:(RCTResponseSenderBlock) cb;
|
|
17
|
+
- (void) setLogLevel:(int) level;
|
|
18
|
+
- (void) getData:(RCTResponseSenderBlock) cb;
|
|
19
|
+
- (void) startUpdates;
|
|
20
|
+
- (void) stopUpdates;
|
|
21
|
+
|
|
22
|
+
@end
|