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.
Files changed (296) hide show
  1. package/DeviceInfo/index.js.flow +177 -0
  2. package/DeviceInfo/index.ts +1034 -0
  3. package/DeviceInfo/internal/asyncHookWrappers.ts +59 -0
  4. package/DeviceInfo/internal/devicesWithDynamicIsland.ts +30 -0
  5. package/DeviceInfo/internal/devicesWithNotch.ts +374 -0
  6. package/DeviceInfo/internal/nativeInterface.ts +28 -0
  7. package/DeviceInfo/internal/privateTypes.ts +231 -0
  8. package/DeviceInfo/internal/supported-platform-info.ts +97 -0
  9. package/DeviceInfo/internal/types.ts +19 -0
  10. package/DeviceInfo/web/index.js +223 -0
  11. package/GetLocals/src/NativeRNLocalize.ts +18 -0
  12. package/GetLocals/src/constants.ts +269 -0
  13. package/GetLocals/src/index.ts +56 -0
  14. package/GetLocals/src/module.ts +51 -0
  15. package/GetLocals/src/module.web.ts +148 -0
  16. package/GetLocals/src/types.ts +31 -0
  17. package/GetLocation/LocationError.ts +20 -0
  18. package/GetLocation/index.ts +46 -0
  19. package/GetLocation/utils.ts +89 -0
  20. package/ImageOrVedioPicker/src/index.ts +28 -0
  21. package/ImageOrVedioPicker/src/platforms/NativeImagePicker.ts +10 -0
  22. package/ImageOrVedioPicker/src/platforms/native.ts +61 -0
  23. package/ImageOrVedioPicker/src/platforms/web.ts +159 -0
  24. package/ImageOrVedioPicker/src/types.ts +74 -0
  25. package/NetInfo/src/__tests__/eventListenerCallbacks.spec.ts +332 -0
  26. package/NetInfo/src/__tests__/fetch.spec.ts +479 -0
  27. package/NetInfo/src/index.ts +186 -0
  28. package/NetInfo/src/internal/__mocks__/nativeModule.ts +13 -0
  29. package/NetInfo/src/internal/defaultConfiguration.ts +17 -0
  30. package/NetInfo/src/internal/defaultConfiguration.web.ts +17 -0
  31. package/NetInfo/src/internal/internetReachability.ts +180 -0
  32. package/NetInfo/src/internal/nativeInterface.ts +43 -0
  33. package/NetInfo/src/internal/nativeInterface.web.ts +27 -0
  34. package/NetInfo/src/internal/nativeModule.ts +15 -0
  35. package/NetInfo/src/internal/nativeModule.web.ts +306 -0
  36. package/NetInfo/src/internal/privateTypes.ts +41 -0
  37. package/NetInfo/src/internal/state.ts +137 -0
  38. package/NetInfo/src/internal/types.ts +128 -0
  39. package/README.md +246 -0
  40. package/RecordScreen/src/index.tsx +75 -0
  41. package/ScreenShot/src/RNViewShot.js +3 -0
  42. package/ScreenShot/src/RNViewShot.web.js +42 -0
  43. package/ScreenShot/src/index.js +308 -0
  44. package/Sensor/src/index.js +14 -0
  45. package/Sensor/src/rnsensors.js +57 -0
  46. package/Sensor/src/sensors.js +97 -0
  47. package/VideoPlayer/PlayVideo.tsx +51 -0
  48. package/VideoPlayer/index.js +69 -0
  49. package/android/README.md +14 -0
  50. package/android/build/generated/source/buildConfig/debug/com/shakebug/BuildConfig.java +10 -0
  51. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +42 -0
  52. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
  53. package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +6 -0
  54. package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
  55. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  56. package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
  57. package/android/build/intermediates/compile_symbol_list/debug/R.txt +47 -0
  58. package/android/build/intermediates/compiled_local_resources/debug/out/xml_imagepicker_provider_paths.xml.flat +0 -0
  59. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +12 -0
  60. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  61. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  62. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  63. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  64. package/android/build/intermediates/javac/debug/classes/com/shakebug/BuildConfig.class +0 -0
  65. package/android/build/intermediates/javac/debug/classes/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
  66. package/android/build/intermediates/javac/debug/classes/com/shakebug/ImageMetadata.class +0 -0
  67. package/android/build/intermediates/javac/debug/classes/com/shakebug/ImagePickerProvider.class +0 -0
  68. package/android/build/intermediates/javac/debug/classes/com/shakebug/Metadata.class +0 -0
  69. package/android/build/intermediates/javac/debug/classes/com/shakebug/Options.class +0 -0
  70. package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule$1.class +0 -0
  71. package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule.class +0 -0
  72. package/android/build/intermediates/javac/debug/classes/com/shakebug/Shakebug.class +0 -0
  73. package/android/build/intermediates/javac/debug/classes/com/shakebug/ShakebugPackage.class +0 -0
  74. package/android/build/intermediates/javac/debug/classes/com/shakebug/Utility.class +0 -0
  75. package/android/build/intermediates/javac/debug/classes/com/shakebug/Utils.class +0 -0
  76. package/android/build/intermediates/javac/debug/classes/com/shakebug/VideoMetadata.class +0 -0
  77. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$1.class +0 -0
  78. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$2.class +0 -0
  79. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Formats.class +0 -0
  80. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Results.class +0 -0
  81. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
  82. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot.class +0 -0
  83. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +49 -0
  84. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +82 -0
  85. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +42 -0
  86. package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
  87. package/android/build/intermediates/packaged_res/debug/values/values.xml +25 -0
  88. package/android/build/intermediates/packaged_res/debug/xml/imagepicker_provider_paths.xml +4 -0
  89. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/BuildConfig.class +0 -0
  90. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
  91. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImageMetadata.class +0 -0
  92. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImagePickerProvider.class +0 -0
  93. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Metadata.class +0 -0
  94. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Options.class +0 -0
  95. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule$1.class +0 -0
  96. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule.class +0 -0
  97. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Shakebug.class +0 -0
  98. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ShakebugPackage.class +0 -0
  99. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utility.class +0 -0
  100. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utils.class +0 -0
  101. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/VideoMetadata.class +0 -0
  102. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$1.class +0 -0
  103. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$2.class +0 -0
  104. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Formats.class +0 -0
  105. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Results.class +0 -0
  106. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
  107. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot.class +0 -0
  108. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +48 -0
  109. package/android/build/outputs/logs/manifest-merger-debug-report.txt +97 -0
  110. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  111. package/android/build.gradle +235 -0
  112. package/android/src/main/AndroidManifest.xml +40 -0
  113. package/android/src/main/java/com/shakebug/AmazonFireDeviceConnectivityPoller.java +170 -0
  114. package/android/src/main/java/com/shakebug/BaseUtils.java +33 -0
  115. package/android/src/main/java/com/shakebug/BroadcastReceiverConnectivityReceiver.java +131 -0
  116. package/android/src/main/java/com/shakebug/ConnectivityReceiver.java +318 -0
  117. package/android/src/main/java/com/shakebug/CrashLoggerModule.java +48 -0
  118. package/android/src/main/java/com/shakebug/DateUtil.java +64 -0
  119. package/android/src/main/java/com/shakebug/DeviceType.java +18 -0
  120. package/android/src/main/java/com/shakebug/DeviceUtil.java +46 -0
  121. package/android/src/main/java/com/shakebug/DrawingView.java +90 -0
  122. package/android/src/main/java/com/shakebug/DrawingViewManager.java +38 -0
  123. package/android/src/main/java/com/shakebug/GetLocation.java +147 -0
  124. package/android/src/main/java/com/shakebug/ImageMetadata.java +42 -0
  125. package/android/src/main/java/com/shakebug/ImagePickerProvider.java +8 -0
  126. package/android/src/main/java/com/shakebug/Metadata.java +46 -0
  127. package/android/src/main/java/com/shakebug/NetInfoModule.java +79 -0
  128. package/android/src/main/java/com/shakebug/NetInfoUtils.java +50 -0
  129. package/android/src/main/java/com/shakebug/NetworkCallbackConnectivityReceiver.java +209 -0
  130. package/android/src/main/java/com/shakebug/Options.java +42 -0
  131. package/android/src/main/java/com/shakebug/RNDeviceModule.java +1036 -0
  132. package/android/src/main/java/com/shakebug/RNInstallReferrerClient.java +124 -0
  133. package/android/src/main/java/com/shakebug/RNLocalizeModule.java +79 -0
  134. package/android/src/main/java/com/shakebug/RNLocalizeModuleImpl.java +258 -0
  135. package/android/src/main/java/com/shakebug/ReactNativeGetLocationModule.java +95 -0
  136. package/android/src/main/java/com/shakebug/RecordScreenModule.java +202 -0
  137. package/android/src/main/java/com/shakebug/ScreenshotDetectorModule.java +63 -0
  138. package/android/src/main/java/com/shakebug/SettingsUtil.java +44 -0
  139. package/android/src/main/java/com/shakebug/Shakebug.java +181 -0
  140. package/android/src/main/java/com/shakebug/ShakebugPackage.java +75 -0
  141. package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModule.java +56 -0
  142. package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModuleImpl.java +230 -0
  143. package/android/src/main/java/com/shakebug/ShakebugSDKScreenShotModule.java +196 -0
  144. package/android/src/main/java/com/shakebug/SharedPreferencesModule.java +39 -0
  145. package/android/src/main/java/com/shakebug/UnitConverter.java +48 -0
  146. package/android/src/main/java/com/shakebug/Utility.java +29 -0
  147. package/android/src/main/java/com/shakebug/Utils.java +593 -0
  148. package/android/src/main/java/com/shakebug/VideoMetadata.java +91 -0
  149. package/android/src/main/java/com/shakebug/VideoPlayerModule.java +199 -0
  150. package/android/src/main/java/com/shakebug/VideoThumbnailModule.java +215 -0
  151. package/android/src/main/java/com/shakebug/VideoTrimModule.java +372 -0
  152. package/android/src/main/java/com/shakebug/ViewShot.java +627 -0
  153. package/android/src/main/java/com/shakebug/adapters/VideoTrimmerAdapter.java +54 -0
  154. package/android/src/main/java/com/shakebug/callback/SingleCallback.java +11 -0
  155. package/android/src/main/java/com/shakebug/interfaces/IVideoTrimmerView.java +5 -0
  156. package/android/src/main/java/com/shakebug/interfaces/VideoPlayerListner.java +5 -0
  157. package/android/src/main/java/com/shakebug/interfaces/VideoTrimListener.java +10 -0
  158. package/android/src/main/java/com/shakebug/resolver/DeviceIdResolver.java +87 -0
  159. package/android/src/main/java/com/shakebug/resolver/DeviceTypeResolver.java +94 -0
  160. package/android/src/main/java/com/shakebug/thread/BackgroundExecutor.java +246 -0
  161. package/android/src/main/java/com/shakebug/thread/UiThreadExecutor.java +120 -0
  162. package/android/src/main/java/com/shakebug/types/CellularGeneration.java +60 -0
  163. package/android/src/main/java/com/shakebug/types/ConnectionType.java +26 -0
  164. package/android/src/main/java/com/shakebug/utils/StorageUtil.java +139 -0
  165. package/android/src/main/java/com/shakebug/utils/VideoTrimmerUtil.java +89 -0
  166. package/android/src/main/java/com/shakebug/widgets/RangeSeekBarView.java +534 -0
  167. package/android/src/main/java/com/shakebug/widgets/SpacesItemDecoration2.java +32 -0
  168. package/android/src/main/java/com/shakebug/widgets/VideoPlayerView.java +429 -0
  169. package/android/src/main/java/com/shakebug/widgets/VideoTrimmerView.java +477 -0
  170. package/android/src/main/java/com/shakebug/widgets/ZVideoView.java +48 -0
  171. package/android/src/main/res/drawable/custom_progress.xml +16 -0
  172. package/android/src/main/res/drawable/custom_thumb.xml +4 -0
  173. package/android/src/main/res/drawable/ic_close_button.xml +10 -0
  174. package/android/src/main/res/drawable/ic_video_pause_black.png +0 -0
  175. package/android/src/main/res/drawable/ic_video_play_black.png +0 -0
  176. package/android/src/main/res/drawable/ic_video_thumb_handle.png +0 -0
  177. package/android/src/main/res/drawable/icon_seek_bar.png +0 -0
  178. package/android/src/main/res/layout/video_player_view.xml +121 -0
  179. package/android/src/main/res/layout/video_thumb_item_layout.xml +16 -0
  180. package/android/src/main/res/layout/video_trimmer_view.xml +148 -0
  181. package/android/src/main/res/values/colors.xml +17 -0
  182. package/android/src/main/res/values/strings.xml +14 -0
  183. package/android/src/main/res/xml/imagepicker_provider_paths.xml +4 -0
  184. package/ios/CammeraPermission/RNCameraPermission.h +16 -0
  185. package/ios/CammeraPermission/RNCameraPermission.m +46 -0
  186. package/ios/DeviceInfo/DeviceUID.h +14 -0
  187. package/ios/DeviceInfo/DeviceUID.m +202 -0
  188. package/ios/DeviceInfo/EnvironmentUtil.h +41 -0
  189. package/ios/DeviceInfo/EnvironmentUtil.m +56 -0
  190. package/ios/DeviceInfo/RNDeviceInfo.h +22 -0
  191. package/ios/DeviceInfo/RNDeviceInfo.m +918 -0
  192. package/ios/GetLocals/ShakebugSDKRNLocalize.h +21 -0
  193. package/ios/GetLocals/ShakebugSDKRNLocalize.m +296 -0
  194. package/ios/GetLocation/SettingsUtil.h +16 -0
  195. package/ios/GetLocation/SettingsUtil.m +21 -0
  196. package/ios/GetLocation/ShakebugSDKLocationModule.h +17 -0
  197. package/ios/GetLocation/ShakebugSDKLocationModule.m +218 -0
  198. package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.h +40 -0
  199. package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.m +588 -0
  200. package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.h +26 -0
  201. package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.m +194 -0
  202. package/ios/MicrophonePermissionManager.h +14 -0
  203. package/ios/MicrophonePermissionManager.m +35 -0
  204. package/ios/NetInfo/RNCConnectionState.h +42 -0
  205. package/ios/NetInfo/RNCConnectionState.m +119 -0
  206. package/ios/NetInfo/RNCConnectionStateWatcher.h +31 -0
  207. package/ios/NetInfo/RNCConnectionStateWatcher.m +136 -0
  208. package/ios/NetInfo/RNCNetInfo.h +13 -0
  209. package/ios/NetInfo/RNCNetInfo.m +269 -0
  210. package/ios/RecordScreen/ShakebugSDKRecordScreen.h +31 -0
  211. package/ios/RecordScreen/ShakebugSDKRecordScreen.m +309 -0
  212. package/ios/ScreenShot/ShakebugSDKRNViewShot.h +6 -0
  213. package/ios/ScreenShot/ShakebugSDKRNViewShot.m +186 -0
  214. package/ios/ScreenshotDetector/ScreenShotDetector.h +12 -0
  215. package/ios/ScreenshotDetector/ScreenShotDetector.m +37 -0
  216. package/ios/Senors/RNSensorsAccelerometer.h +22 -0
  217. package/ios/Senors/RNSensorsAccelerometer.m +162 -0
  218. package/ios/Senors/RNSensorsBarometer.h +22 -0
  219. package/ios/Senors/RNSensorsBarometer.m +141 -0
  220. package/ios/Senors/RNSensorsGravity.h +22 -0
  221. package/ios/Senors/RNSensorsGravity.m +165 -0
  222. package/ios/Senors/RNSensorsGyroscope.h +22 -0
  223. package/ios/Senors/RNSensorsGyroscope.m +160 -0
  224. package/ios/Senors/RNSensorsMagnetometer.h +22 -0
  225. package/ios/Senors/RNSensorsMagnetometer.m +163 -0
  226. package/ios/Senors/RNSensorsOrientation.h +22 -0
  227. package/ios/Senors/RNSensorsOrientation.m +189 -0
  228. package/ios/Senors/RNSensorsUtils.h +7 -0
  229. package/ios/Senors/RNSensorsUtils.m +9 -0
  230. package/ios/Shakebug.h +7 -0
  231. package/ios/Shakebug.m +16 -0
  232. package/ios/Shakebug.xcodeproj/project.pbxproj +872 -0
  233. package/ios/Shakebug.xcodeproj/xcshareddata/xcschemes/Shakebug.xcscheme +66 -0
  234. package/ios/Shakebug.xcworkspace/contents.xcworkspacedata +10 -0
  235. package/ios/Shakebug.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  236. package/ios/SketchCanvas/DrawingView.h +18 -0
  237. package/ios/SketchCanvas/DrawingView.m +96 -0
  238. package/ios/SketchCanvas/DrawingViewManager.h +12 -0
  239. package/ios/SketchCanvas/DrawingViewManager.m +35 -0
  240. package/ios/Storage/SharedPreferencesModule.h +13 -0
  241. package/ios/Storage/SharedPreferencesModule.m +35 -0
  242. package/ios/Thumbnaill/VideoThumbnailManager.h +12 -0
  243. package/ios/Thumbnaill/VideoThumbnailManager.m +73 -0
  244. package/ios/TrimVideo/ShakebugSDKVideoTrim.swift +372 -0
  245. package/ios/TrimVideo/VideoTrim-Bridging-Header.h +10 -0
  246. package/ios/TrimVideo/VideoTrim.m +23 -0
  247. package/ios/TrimVideo/VideoTrimmer.swift +810 -0
  248. package/ios/TrimVideo/VideoTrimmerThumb.swift +119 -0
  249. package/ios/TrimVideo/VideoTrimmerViewController.swift +301 -0
  250. package/ios/VideoPlayer/VideoPlayerModule.h +14 -0
  251. package/ios/VideoPlayer/VideoPlayerModule.m +29 -0
  252. package/ios/VideoPlayer/VideoPlayerViewController.h +18 -0
  253. package/ios/VideoPlayer/VideoPlayerViewController.m +29 -0
  254. package/package.json +45 -0
  255. package/shakebug-react-native.podspec +50 -0
  256. package/src/APIs/AddIssue.js +70 -0
  257. package/src/APIs/EndSession.js +32 -0
  258. package/src/APIs/Event.js +39 -0
  259. package/src/APIs/MatchKey.js +40 -0
  260. package/src/APIs/StartSession.js +84 -0
  261. package/src/Assets/images/OpenSketch.png +0 -0
  262. package/src/Assets/images/Push.png +0 -0
  263. package/src/Assets/images/RemoveTextView.png +0 -0
  264. package/src/Assets/images/black.png +0 -0
  265. package/src/Assets/images/blue.png +0 -0
  266. package/src/Assets/images/borderdBlack.png +0 -0
  267. package/src/Assets/images/borderdBlue.png +0 -0
  268. package/src/Assets/images/borderdGreen.png +0 -0
  269. package/src/Assets/images/borderdRed.png +0 -0
  270. package/src/Assets/images/borderdYellow.png +0 -0
  271. package/src/Assets/images/clear.png +0 -0
  272. package/src/Assets/images/close.png +0 -0
  273. package/src/Assets/images/green.png +0 -0
  274. package/src/Assets/images/next.png +0 -0
  275. package/src/Assets/images/play.png +0 -0
  276. package/src/Assets/images/red.png +0 -0
  277. package/src/Assets/images/shake.png +0 -0
  278. package/src/Assets/images/shakebugLogo.png +0 -0
  279. package/src/Assets/images/stopButton.png +0 -0
  280. package/src/Assets/images/text_icon.png +0 -0
  281. package/src/Assets/images/yellow.png +0 -0
  282. package/src/Componanats/CustomAlert.js +80 -0
  283. package/src/Componanats/ErrorHandler.js +80 -0
  284. package/src/Componanats/GlobalStateContext.js +22 -0
  285. package/src/Componanats/KeyboardAvoidingWrapper.js +43 -0
  286. package/src/Componanats/NavigationContext.js +42 -0
  287. package/src/Componanats/ShakeFunction.js +562 -0
  288. package/src/Componanats/localization.js +482 -0
  289. package/src/Screens/AddDetailsScreen.js +462 -0
  290. package/src/Screens/FirstScreen.js +629 -0
  291. package/src/Screens/Shakebug.js +487 -0
  292. package/src/Screens/StrockView.js +20 -0
  293. package/src/Screens/TrimVideoScreen.js +81 -0
  294. package/src/Screens/TutorialScreen.js +36 -0
  295. package/src/index.tsx +117 -0
  296. package/trimVideo/src/index.tsx +141 -0
@@ -0,0 +1,308 @@
1
+ // @flow
2
+ import React, { Component } from "react";
3
+ import { View, Platform, findNodeHandle, StyleProp } from "react-native";
4
+ import RNViewShot from "./RNViewShot";
5
+ import type { ViewStyleProp } from "react-native/Libraries/StyleSheet/StyleSheet";
6
+ import type { LayoutEvent } from "react-native/Libraries/Types/CoreEventTypes";
7
+
8
+ const neverEndingPromise = new Promise(() => {});
9
+
10
+ type Options = {
11
+ width?: number,
12
+ height?: number,
13
+ format: "png" | "jpg" | "webm" | "raw",
14
+ quality: number,
15
+ result: "tmpfile" | "base64" | "data-uri" | "zip-base64",
16
+ snapshotContentContainer: boolean,
17
+ handleGLSurfaceViewOnAndroid: boolean,
18
+ };
19
+
20
+ if (!RNViewShot) {
21
+ console.warn(
22
+ "react-native-view-shot: NativeModules.RNViewShot is undefined. Make sure the library is linked on the native side."
23
+ );
24
+ }
25
+
26
+ const acceptedFormats = ["png", "jpg"].concat(
27
+ Platform.OS === "android" ? ["webm", "raw"] : []
28
+ );
29
+
30
+ const acceptedResults = ["tmpfile", "base64", "data-uri"].concat(
31
+ Platform.OS === "android" ? ["zip-base64"] : []
32
+ );
33
+
34
+ const defaultOptions = {
35
+ format: "png",
36
+ quality: 1,
37
+ result: "tmpfile",
38
+ snapshotContentContainer: false,
39
+ handleGLSurfaceViewOnAndroid: false,
40
+ };
41
+
42
+ // validate and coerce options
43
+ function validateOptions(input: ?$Shape<Options>): {
44
+ options: Options,
45
+ errors: Array<string>,
46
+ } {
47
+ const options: Options = {
48
+ ...defaultOptions,
49
+ ...input,
50
+ };
51
+ const errors = [];
52
+ if (
53
+ "width" in options &&
54
+ (typeof options.width !== "number" || options.width <= 0)
55
+ ) {
56
+ errors.push("option width should be a positive number");
57
+ delete options.width;
58
+ }
59
+ if (
60
+ "height" in options &&
61
+ (typeof options.height !== "number" || options.height <= 0)
62
+ ) {
63
+ errors.push("option height should be a positive number");
64
+ delete options.height;
65
+ }
66
+ if (
67
+ typeof options.quality !== "number" ||
68
+ options.quality < 0 ||
69
+ options.quality > 1
70
+ ) {
71
+ errors.push("option quality should be a number between 0.0 and 1.0");
72
+ options.quality = defaultOptions.quality;
73
+ }
74
+ if (typeof options.snapshotContentContainer !== "boolean") {
75
+ errors.push("option snapshotContentContainer should be a boolean");
76
+ }
77
+ if (typeof options.handleGLSurfaceViewOnAndroid !== "boolean") {
78
+ errors.push("option handleGLSurfaceViewOnAndroid should be a boolean");
79
+ }
80
+ if (acceptedFormats.indexOf(options.format) === -1) {
81
+ options.format = defaultOptions.format;
82
+ errors.push(
83
+ "option format '" +
84
+ options.format +
85
+ "' is not in valid formats: " +
86
+ acceptedFormats.join(" | ")
87
+ );
88
+ }
89
+ if (acceptedResults.indexOf(options.result) === -1) {
90
+ options.result = defaultOptions.result;
91
+ errors.push(
92
+ "option result '" +
93
+ options.result +
94
+ "' is not in valid formats: " +
95
+ acceptedResults.join(" | ")
96
+ );
97
+ }
98
+ return { options, errors };
99
+ }
100
+
101
+ export function ensureModuleIsLoaded() {
102
+ if (!RNViewShot) {
103
+ throw new Error(
104
+ "react-native-view-shot: NativeModules.RNViewShot is undefined. Make sure the library is linked on the native side."
105
+ );
106
+ }
107
+ }
108
+
109
+ export function captureRef<T: React$ElementType>(
110
+ view: number | ?View | React$Ref<T>,
111
+ optionsObject?: Object
112
+ ): Promise<string> {
113
+ ensureModuleIsLoaded();
114
+ if (
115
+ view &&
116
+ typeof view === "object" &&
117
+ "current" in view &&
118
+ // $FlowFixMe view is a ref
119
+ view.current
120
+ ) {
121
+ // $FlowFixMe view is a ref
122
+ view = view.current;
123
+ if (!view) {
124
+ return Promise.reject(new Error("ref.current is null"));
125
+ }
126
+ }
127
+ if (typeof view !== "number") {
128
+ const node = findNodeHandle(view);
129
+ if (!node) {
130
+ return Promise.reject(
131
+ new Error("findNodeHandle failed to resolve view=" + String(view))
132
+ );
133
+ }
134
+ view = node;
135
+ }
136
+ const { options, errors } = validateOptions(optionsObject);
137
+ if (__DEV__ && errors.length > 0) {
138
+ console.warn(
139
+ "react-native-view-shot: bad options:\n" +
140
+ errors.map((e) => `- ${e}`).join("\n")
141
+ );
142
+ }
143
+ return RNViewShot.captureRef(view, options);
144
+ }
145
+
146
+ export function releaseCapture(uri: string): void {
147
+ if (typeof uri !== "string") {
148
+ if (__DEV__) {
149
+ console.warn("Invalid argument to releaseCapture. Got: " + uri);
150
+ }
151
+ } else {
152
+ RNViewShot.releaseCapture(uri);
153
+ }
154
+ }
155
+
156
+ export function captureScreen(optionsObject?: Options): Promise<string> {
157
+ ensureModuleIsLoaded();
158
+ const { options, errors } = validateOptions(optionsObject);
159
+ if (__DEV__ && errors.length > 0) {
160
+ console.warn(
161
+ "react-native-view-shot: bad options:\n" +
162
+ errors.map((e) => `- ${e}`).join("\n")
163
+ );
164
+ }
165
+ return RNViewShot.captureScreen(options);
166
+ }
167
+
168
+ type Props = {
169
+ options?: Object,
170
+ captureMode?: "mount" | "continuous" | "update",
171
+ children: React$Node,
172
+ onLayout?: (e: *) => void,
173
+ onCapture?: (uri: string) => void,
174
+ onCaptureFailure?: (e: Error) => void,
175
+ style?: StyleProp<ViewStyleProp>,
176
+ };
177
+
178
+ function checkCompatibleProps(props: Props) {
179
+ if (!props.captureMode && props.onCapture) {
180
+ // in that case, it's authorized if you call capture() yourself
181
+ } else if (props.captureMode && !props.onCapture) {
182
+ console.warn(
183
+ "react-native-view-shot: captureMode prop is defined but onCapture prop callback is missing"
184
+ );
185
+ } else if (
186
+ (props.captureMode === "continuous" || props.captureMode === "update") &&
187
+ props.options &&
188
+ props.options.result &&
189
+ props.options.result !== "tmpfile"
190
+ ) {
191
+ console.warn(
192
+ "react-native-view-shot: result=tmpfile is recommended for captureMode=" +
193
+ props.captureMode
194
+ );
195
+ }
196
+ }
197
+
198
+ export default class ViewShot extends Component<Props> {
199
+ static captureRef = captureRef;
200
+ static releaseCapture = releaseCapture;
201
+
202
+ root: ?View;
203
+
204
+ _raf: *;
205
+ lastCapturedURI: ?string;
206
+
207
+ resolveFirstLayout: (layout: Object) => void;
208
+ firstLayoutPromise: Promise<Object> = new Promise((resolve) => {
209
+ this.resolveFirstLayout = resolve;
210
+ });
211
+
212
+ capture = (): Promise<string> =>
213
+ this.firstLayoutPromise
214
+ .then(() => {
215
+ const { root } = this;
216
+ if (!root) return neverEndingPromise; // component is unmounted, you never want to hear back from the promise
217
+ return captureRef(root, this.props.options);
218
+ })
219
+ .then(
220
+ (uri: string) => {
221
+ this.onCapture(uri);
222
+ return uri;
223
+ },
224
+ (e: Error) => {
225
+ this.onCaptureFailure(e);
226
+ throw e;
227
+ }
228
+ );
229
+
230
+ onCapture = (uri: string) => {
231
+ if (!this.root) return;
232
+ if (this.lastCapturedURI) {
233
+ // schedule releasing the previous capture
234
+ setTimeout(releaseCapture, 500, this.lastCapturedURI);
235
+ }
236
+ this.lastCapturedURI = uri;
237
+ const { onCapture } = this.props;
238
+ if (onCapture) onCapture(uri);
239
+ };
240
+
241
+ onCaptureFailure = (e: Error) => {
242
+ if (!this.root) return;
243
+ const { onCaptureFailure } = this.props;
244
+ if (onCaptureFailure) onCaptureFailure(e);
245
+ };
246
+
247
+ syncCaptureLoop = (captureMode: ?string) => {
248
+ cancelAnimationFrame(this._raf);
249
+ if (captureMode === "continuous") {
250
+ let previousCaptureURI = "-"; // needs to capture at least once at first, so we use "-" arbitrary string
251
+ const loop = () => {
252
+ this._raf = requestAnimationFrame(loop);
253
+ if (previousCaptureURI === this.lastCapturedURI) return; // previous capture has not finished, don't capture yet
254
+ previousCaptureURI = this.lastCapturedURI;
255
+ this.capture();
256
+ };
257
+ this._raf = requestAnimationFrame(loop);
258
+ }
259
+ };
260
+
261
+ onRef = (ref: React$ElementRef<*>) => {
262
+ this.root = ref;
263
+ };
264
+
265
+ onLayout = (e: LayoutEvent) => {
266
+ const { onLayout } = this.props;
267
+ this.resolveFirstLayout(e.nativeEvent.layout);
268
+ if (onLayout) onLayout(e);
269
+ };
270
+
271
+ componentDidMount() {
272
+ if (__DEV__) checkCompatibleProps(this.props);
273
+ if (this.props.captureMode === "mount") {
274
+ this.capture();
275
+ } else {
276
+ this.syncCaptureLoop(this.props.captureMode);
277
+ }
278
+ }
279
+
280
+ componentDidUpdate(prevProps: Props) {
281
+ if (this.props.captureMode !== undefined) {
282
+ if (this.props.captureMode !== prevProps.captureMode) {
283
+ this.syncCaptureLoop(this.props.captureMode);
284
+ }
285
+ }
286
+ if (this.props.captureMode === "update") {
287
+ this.capture();
288
+ }
289
+ }
290
+
291
+ componentWillUnmount() {
292
+ this.syncCaptureLoop(null);
293
+ }
294
+
295
+ render() {
296
+ const { children } = this.props;
297
+ return (
298
+ <View
299
+ ref={this.onRef}
300
+ collapsable={false}
301
+ onLayout={this.onLayout}
302
+ style={this.props.style}
303
+ >
304
+ {children}
305
+ </View>
306
+ );
307
+ }
308
+ }
@@ -0,0 +1,14 @@
1
+ import sensors from "./sensors";
2
+ export { setUpdateInterval as setUpdateIntervalForType, setLogLevelForType } from "./rnsensors";
3
+
4
+ export const SensorTypes = {
5
+ accelerometer: "accelerometer",
6
+ gyroscope: "gyroscope",
7
+ magnetometer: "magnetometer",
8
+ barometer: "barometer",
9
+ orientation: "orientation",
10
+ gravity: "gravity"
11
+ };
12
+
13
+ export const { accelerometer, gyroscope, magnetometer, barometer, orientation, gravity } = sensors;
14
+ export default sensors;
@@ -0,0 +1,57 @@
1
+ import { NativeModules } from "react-native";
2
+ const {
3
+ ShakebugSDKRNSensorsGyroscope: GyroNative,
4
+ ShakebugSDKRNSensorsAccelerometer: AccNative,
5
+ ShakebugSDKRNSensorsMagnetometer: MagnNative,
6
+ ShakebugSDKRNSensorsBarometer: BarNative,
7
+ ShakebugSDKRNSensorsOrientation: OrientNative,
8
+ ShakebugSDKRNSensorsGravity: GravNative,
9
+ } = NativeModules;
10
+
11
+ if (!GyroNative && !AccNative && !MagnNative && !BarNative && !OrientNative && !GravNative) {
12
+ throw new Error("Native modules for sensors not available. Did react-native link run successfully?");
13
+ }
14
+
15
+ const nativeApis = new Map([
16
+ ["accelerometer", AccNative],
17
+ ["gyroscope", GyroNative],
18
+ ["magnetometer", MagnNative],
19
+ ["barometer", BarNative],
20
+ ["orientation", OrientNative],
21
+ ["gravity", GravNative],
22
+ ]);
23
+
24
+ // Cache the availability of sensors
25
+ const availableSensors = {};
26
+
27
+ export function start(type) {
28
+ const api = nativeApis.get(type);
29
+ api.startUpdates();
30
+ }
31
+
32
+ export function isAvailable(type) {
33
+ if (availableSensors[type]) {
34
+ return availableSensors[type];
35
+ }
36
+
37
+ const api = nativeApis.get(type);
38
+ const promise = api.isAvailable();
39
+ availableSensors[type] = promise;
40
+
41
+ return promise;
42
+ }
43
+
44
+ export function stop(type) {
45
+ const api = nativeApis.get(type);
46
+ api.stopUpdates();
47
+ }
48
+
49
+ export function setUpdateInterval(type, updateInterval) {
50
+ const api = nativeApis.get(type);
51
+ api.setUpdateInterval(updateInterval);
52
+ }
53
+
54
+ export function setLogLevelForType(type, level) {
55
+ const api = nativeApis.get(type);
56
+ api.setLogLevel(level);
57
+ }
@@ -0,0 +1,97 @@
1
+ import { NativeEventEmitter, NativeModules } from "react-native";
2
+ import { Observable } from "rxjs";
3
+ import { publish, refCount } from "rxjs/operators";
4
+ import * as RNSensors from "./rnsensors";
5
+
6
+ const {
7
+ ShakebugSDKRNSensorsGyroscope: GyroNative,
8
+ ShakebugSDKRNSensorsAccelerometer: AccNative,
9
+ ShakebugSDKRNSensorsMagnetometer: MagnNative,
10
+ ShakebugSDKRNSensorsBarometer: BarNative,
11
+ ShakebugSDKRNSensorsOrientation: OrientNative,
12
+ ShakebugSDKRNSensorsGravity: GravNative,
13
+ } = NativeModules;
14
+
15
+ const listenerKeys = new Map([
16
+ ["accelerometer", "ShakebugSDKRNSensorsAccelerometer"],
17
+ ["gyroscope", "ShakebugSDKRNSensorsGyroscope"],
18
+ ["magnetometer", "ShakebugSDKRNSensorsMagnetometer"],
19
+ ["barometer", "ShakebugSDKRNSensorsBarometer"],
20
+ ["orientation", "ShakebugSDKRNSensorsOrientation"],
21
+ ["gravity", "ShakebugSDKRNSensorsGravity"],
22
+ ]);
23
+
24
+ const nativeApis = new Map([
25
+ ["accelerometer", AccNative],
26
+ ["gyroscope", GyroNative],
27
+ ["magnetometer", MagnNative],
28
+ ["barometer", BarNative],
29
+ ["orientation", OrientNative],
30
+ ["gravity", GravNative],
31
+ ]);
32
+
33
+ const eventEmitterSubscription = new Map([
34
+ ["accelerometer", null],
35
+ ["gyroscope", null],
36
+ ["magnetometer", null],
37
+ ["barometer", null],
38
+ ["orientation", null],
39
+ ["gravity", null],
40
+ ]);
41
+
42
+ function createSensorObservable(sensorType) {
43
+ return Observable.create(function subscribe(observer) {
44
+ this.isSensorAvailable = false;
45
+
46
+ this.unsubscribeCallback = () => {
47
+ if (!this.isSensorAvailable) return;
48
+ if (eventEmitterSubscription.get(sensorType)) eventEmitterSubscription.get(sensorType).remove();
49
+ // stop the sensor
50
+ RNSensors.stop(sensorType);
51
+ };
52
+
53
+ RNSensors.isAvailable(sensorType).then(
54
+ () => {
55
+ this.isSensorAvailable = true;
56
+
57
+ const emitter = new NativeEventEmitter(nativeApis.get(sensorType));
58
+
59
+ eventEmitterSubscription.set(
60
+ sensorType,
61
+ emitter.addListener(listenerKeys.get(sensorType), (data) => {
62
+ observer.next(data);
63
+ })
64
+ );
65
+
66
+ // Start the sensor manager
67
+ RNSensors.start(sensorType);
68
+ },
69
+ () => {
70
+ observer.error(`Sensor ${sensorType} is not available`);
71
+ }
72
+ );
73
+
74
+ return this.unsubscribeCallback;
75
+ }).pipe(makeSingleton());
76
+ }
77
+
78
+ // As we only have one sensor we need to share it between the different consumers
79
+ function makeSingleton() {
80
+ return (source) => source.pipe(publish(), refCount());
81
+ }
82
+
83
+ const accelerometer = createSensorObservable("accelerometer");
84
+ const gyroscope = createSensorObservable("gyroscope");
85
+ const magnetometer = createSensorObservable("magnetometer");
86
+ const barometer = createSensorObservable("barometer");
87
+ const orientation = createSensorObservable("orientation");
88
+ const gravity = createSensorObservable("gravity");
89
+
90
+ export default {
91
+ gyroscope,
92
+ accelerometer,
93
+ magnetometer,
94
+ barometer,
95
+ orientation,
96
+ gravity,
97
+ };
@@ -0,0 +1,51 @@
1
+ // videoUtils.js
2
+
3
+ import { Platform } from 'react-native';
4
+ import { NativeModules } from 'react-native';
5
+ const { ShakebugSDKVideoPlayerModule } = NativeModules;
6
+
7
+ export interface EditorConfig {
8
+ saveToPhoto?: boolean;
9
+ removeAfterSavedToPhoto?: boolean;
10
+ maxDuration?: number;
11
+ cancelButtonText?: string;
12
+ saveButtonText?: string;
13
+ enableCancelDialog?: boolean;
14
+ cancelDialogTitle?: string;
15
+ cancelDialogMessage?: string;
16
+ cancelDialogCancelText?: string;
17
+ cancelDialogConfirmText?: string;
18
+ enableSaveDialog?: boolean;
19
+ saveDialogTitle?: string;
20
+ saveDialogMessage?: string;
21
+ saveDialogCancelText?: string;
22
+ saveDialogConfirmText?: string;
23
+ trimmingText?: string;
24
+ }
25
+
26
+ export const PlayVideo = (videoUri: string) => {
27
+
28
+ const config: EditorConfig = {
29
+ saveToPhoto: false,
30
+ removeAfterSavedToPhoto: false,
31
+ maxDuration: 120,
32
+ cancelButtonText: "Cancel",
33
+ saveButtonText: "Save",
34
+ enableCancelDialog: false,
35
+ cancelDialogTitle: "Cancel Editing",
36
+ cancelDialogMessage: "Are you sure you want to cancel editing?",
37
+ cancelDialogCancelText: "No",
38
+ cancelDialogConfirmText: "Yes",
39
+ enableSaveDialog: false,
40
+ saveDialogTitle: "Save Video",
41
+ saveDialogMessage: "Do you want to save this video?",
42
+ saveDialogCancelText: "No",
43
+ saveDialogConfirmText: "Yes",
44
+ trimmingText: "Trimming Video"
45
+ };
46
+ if(Platform.OS == 'android')
47
+ ShakebugSDKVideoPlayerModule.showEditor(videoUri, config);
48
+ else
49
+ ShakebugSDKVideoPlayerModule.playVideo(videoUri);
50
+ };
51
+
@@ -0,0 +1,69 @@
1
+ import React, { useEffect } from 'react';
2
+ import { NativeModules, Image, TouchableOpacity, ImageBackground, NativeEventEmitter, Platform, StatusBar } from 'react-native';
3
+ import { PlayVideo } from './PlayVideo';
4
+
5
+ const VideoPlayer = ({ videoUri, img, goToScreenAtIndex, UpdateStatusBar }) => {
6
+ useEffect(() => {
7
+ if (Platform.OS == 'android') {
8
+ const eventEmitter = new NativeEventEmitter(NativeModules.VideoPlayerModule);
9
+ const subscription = eventEmitter.addListener('ShakebugSDKVideoPlayer', (event) => {
10
+ switch (event.name) {
11
+ case 'onCancelPlayer': {
12
+ UpdateStatusBar()
13
+ goToScreenAtIndex(3)
14
+ break;
15
+ }
16
+ default:
17
+ break;
18
+ }
19
+ });
20
+
21
+ return () => {
22
+ subscription.remove();
23
+ };
24
+ }
25
+ }, []);
26
+
27
+ const playVideo = () => {
28
+ // StatusBar.setHidden(true)
29
+ PlayVideo(videoUri)
30
+ }
31
+
32
+ return (
33
+ <ImageBackground
34
+ source={{ uri: img }}
35
+ style={{
36
+ width: "100%",
37
+ height: "100%",
38
+ opacity: 0.8
39
+ }}
40
+ resizeMode='contain'
41
+ >
42
+ <TouchableOpacity
43
+ style={{
44
+ position: 'absolute',
45
+ top: "40%",
46
+ left: 50,
47
+ right: 50,
48
+ paddingVertical: 8,
49
+ paddingHorizontal: 15,
50
+ alignItems: 'center',
51
+
52
+ }}
53
+ onPress={playVideo}
54
+ >
55
+ <Image
56
+ source={require('../src/Assets/images/play.png')}
57
+ style={{
58
+ width: 80,
59
+ height: 80,
60
+ zIndex: 1
61
+ }}
62
+ resizeMode='contain'
63
+ />
64
+ </TouchableOpacity>
65
+ </ImageBackground>
66
+ );
67
+ };
68
+
69
+ export default VideoPlayer;
@@ -0,0 +1,14 @@
1
+ README
2
+ ======
3
+
4
+ If you want to publish the lib as a maven dependency, follow these steps before publishing a new version to npm:
5
+
6
+ 1. Be sure to have the Android [SDK](https://developer.android.com/studio/index.html) and [NDK](https://developer.android.com/ndk/guides/index.html) installed
7
+ 2. Be sure to have a `local.properties` file in this folder that points to the Android SDK and NDK
8
+ ```
9
+ ndk.dir=/Users/{username}/Library/Android/sdk/ndk-bundle
10
+ sdk.dir=/Users/{username}/Library/Android/sdk
11
+ ```
12
+ 3. Delete the `maven` folder
13
+ 4. Run `./gradlew installArchives`
14
+ 5. Verify that latest set of generated files is in the maven folder with the correct version number
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Automatically generated file. DO NOT MODIFY
3
+ */
4
+ package com.shakebug;
5
+
6
+ public final class BuildConfig {
7
+ public static final boolean DEBUG = Boolean.parseBoolean("true");
8
+ public static final String LIBRARY_PACKAGE_NAME = "com.shakebug";
9
+ public static final String BUILD_TYPE = "debug";
10
+ }
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
+ package="com.shakebug" >
4
+
5
+ <uses-sdk android:minSdkVersion="24" />
6
+
7
+ <uses-permission android:name="android.permission.INTERNET" />
8
+
9
+ <!-- If you intend to use the microphone -->
10
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
11
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
12
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
13
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
14
+ <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
15
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
16
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
17
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
18
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
19
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
20
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
21
+
22
+ <application android:hardwareAccelerated="true" >
23
+ <provider
24
+ android:name="com.shakebug.ImagePickerProvider"
25
+ android:authorities="dollar_openBracket_applicationId_closeBracket.imagepickerprovider"
26
+ android:exported="false"
27
+ android:grantUriPermissions="true" >
28
+ <meta-data
29
+ android:name="android.support.FILE_PROVIDER_PATHS"
30
+ android:resource="@xml/imagepicker_provider_paths" />
31
+ </provider>
32
+
33
+ <receiver
34
+ android:name="com.shakebug.ScreenshotReceiver"
35
+ android:exported="true" > <!-- Specify android:exported="true" -->
36
+ <intent-filter>
37
+ <action android:name="android.intent.action.SCREENSHOT" />
38
+ </intent-filter>
39
+ </receiver>
40
+ </application>
41
+
42
+ </manifest>
@@ -0,0 +1,18 @@
1
+ {
2
+ "version": 3,
3
+ "artifactType": {
4
+ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
5
+ "kind": "Directory"
6
+ },
7
+ "applicationId": "com.shakebug",
8
+ "variantName": "debug",
9
+ "elements": [
10
+ {
11
+ "type": "SINGLE",
12
+ "filters": [],
13
+ "attributes": [],
14
+ "outputFile": "AndroidManifest.xml"
15
+ }
16
+ ],
17
+ "elementType": "File"
18
+ }
@@ -0,0 +1,6 @@
1
+ aarFormatVersion=1.0
2
+ aarMetadataVersion=1.0
3
+ minCompileSdk=1
4
+ minCompileSdkExtension=0
5
+ minAndroidGradlePluginVersion=1.0.0
6
+ coreLibraryDesugaringEnabled=false