react-native-flic2 0.3.26 → 2.0.0-alpha.39

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 (243) hide show
  1. package/Flic2.podspec +22 -0
  2. package/{LICENSE.md → LICENSE} +1 -1
  3. package/README.md +17 -523
  4. package/android/build.gradle +64 -132
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +17 -29
  7. package/android/src/main/java/com/flic2/Flic2ButtonListener.kt +132 -0
  8. package/android/src/main/java/com/flic2/Flic2Converter.kt +103 -0
  9. package/android/src/main/java/com/flic2/Flic2Module.kt +480 -0
  10. package/android/src/main/java/com/flic2/Flic2Package.kt +33 -0
  11. package/android/src/main/java/com/flic2/Flic2Service.kt +112 -0
  12. package/ios/Flic2.h +9 -4
  13. package/ios/Flic2.mm +610 -0
  14. package/ios/flic2lib.framework/Headers/FLICButton.h +1 -1
  15. package/ios/flic2lib.framework/Headers/FLICManager.h +1 -1
  16. package/ios/flic2lib.framework/Info.plist +0 -0
  17. package/ios/flic2lib.framework/Modules/module.modulemap +1 -1
  18. package/ios/flic2lib.framework/flic2lib +0 -0
  19. package/lib/module/NativeFlic2.js +14 -0
  20. package/lib/module/NativeFlic2.js.map +1 -0
  21. package/lib/module/index.js +91 -0
  22. package/lib/module/index.js.map +1 -0
  23. package/lib/module/package.json +1 -0
  24. package/lib/typescript/package.json +1 -0
  25. package/lib/typescript/src/NativeFlic2.d.ts +119 -0
  26. package/lib/typescript/src/NativeFlic2.d.ts.map +1 -0
  27. package/lib/typescript/src/index.d.ts +81 -0
  28. package/lib/typescript/src/index.d.ts.map +1 -0
  29. package/package.json +132 -19
  30. package/src/NativeFlic2.ts +157 -0
  31. package/src/index.tsx +159 -0
  32. package/.editorconfig +0 -7
  33. package/.gitattributes +0 -1
  34. package/.idea/codeStyles/Project.xml +0 -116
  35. package/.idea/modules.xml +0 -8
  36. package/.idea/react-native-flic2.iml +0 -9
  37. package/.idea/vcs.xml +0 -6
  38. package/.idea/workspace.xml +0 -140
  39. package/android/.classpath +0 -6
  40. package/android/.gradle/5.4.1/executionHistory/executionHistory.bin +0 -0
  41. package/android/.gradle/5.4.1/executionHistory/executionHistory.lock +0 -0
  42. package/android/.gradle/5.4.1/fileChanges/last-build.bin +0 -0
  43. package/android/.gradle/5.4.1/fileContent/fileContent.lock +0 -0
  44. package/android/.gradle/5.4.1/fileHashes/fileHashes.bin +0 -0
  45. package/android/.gradle/5.4.1/fileHashes/fileHashes.lock +0 -0
  46. package/android/.gradle/5.4.1/fileHashes/resourceHashesCache.bin +0 -0
  47. package/android/.gradle/5.4.1/gc.properties +0 -0
  48. package/android/.gradle/5.4.1/javaCompile/classAnalysis.bin +0 -0
  49. package/android/.gradle/5.4.1/javaCompile/jarAnalysis.bin +0 -0
  50. package/android/.gradle/5.4.1/javaCompile/javaCompile.lock +0 -0
  51. package/android/.gradle/5.4.1/javaCompile/taskHistory.bin +0 -0
  52. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  53. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  54. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  55. package/android/.gradle/vcs-1/gc.properties +0 -0
  56. package/android/.idea/caches/build_file_checksums.ser +0 -0
  57. package/android/.idea/codeStyles/Project.xml +0 -116
  58. package/android/.idea/gradle.xml +0 -18
  59. package/android/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml +0 -11
  60. package/android/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml +0 -12
  61. package/android/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml +0 -11
  62. package/android/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml +0 -12
  63. package/android/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml +0 -12
  64. package/android/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml +0 -12
  65. package/android/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml +0 -12
  66. package/android/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml +0 -10
  67. package/android/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml +0 -13
  68. package/android/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml +0 -10
  69. package/android/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml +0 -9
  70. package/android/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml +0 -13
  71. package/android/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml +0 -10
  72. package/android/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml +0 -10
  73. package/android/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml +0 -10
  74. package/android/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml +0 -13
  75. package/android/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml +0 -10
  76. package/android/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml +0 -10
  77. package/android/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml +0 -10
  78. package/android/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml +0 -13
  79. package/android/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml +0 -10
  80. package/android/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml +0 -9
  81. package/android/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml +0 -13
  82. package/android/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml +0 -10
  83. package/android/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml +0 -10
  84. package/android/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml +0 -13
  85. package/android/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml +0 -10
  86. package/android/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml +0 -13
  87. package/android/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml +0 -10
  88. package/android/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml +0 -10
  89. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_1_10_0_aar.xml +0 -12
  90. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_1_10_0_aar.xml +0 -15
  91. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_1_10_0_aar.xml +0 -15
  92. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_1_10_0_aar.xml +0 -15
  93. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_1_10_0_aar.xml +0 -15
  94. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_1_10_0_aar.xml +0 -12
  95. package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2_jar.xml +0 -13
  96. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_59_10_aar.xml +0 -17
  97. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_6_0_aar.xml +0 -14
  98. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2_jar.xml +0 -13
  99. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_1_jar.xml +0 -13
  100. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_1_jar.xml +0 -13
  101. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0_jar.xml +0 -13
  102. package/android/.idea/libraries/Gradle__io_flic_flic2lib_android_1_1_0_aar.xml +0 -14
  103. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml +0 -13
  104. package/android/.idea/misc.xml +0 -14
  105. package/android/.idea/modules.xml +0 -8
  106. package/android/.idea/runConfigurations.xml +0 -12
  107. package/android/.idea/vcs.xml +0 -6
  108. package/android/.idea/workspace.xml +0 -348
  109. package/android/.project +0 -34
  110. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  111. package/android/README.md +0 -14
  112. package/android/android.iml +0 -139
  113. package/android/build/generated/source/buildConfig/debug/nl/xguard/flic2/BuildConfig.java +0 -13
  114. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +0 -46
  115. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json +0 -1
  116. package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +0 -1
  117. package/android/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  118. package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +0 -15
  119. package/android/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml +0 -4
  120. package/android/build/intermediates/incremental/packageDebugResources/merger.xml +0 -2
  121. package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +0 -46
  122. package/android/build/intermediates/merged_manifests/debug/output.json +0 -1
  123. package/android/build/intermediates/packaged_res/debug/drawable/ic_launcher_background.xml +0 -74
  124. package/android/build/intermediates/packaged_res/debug/drawable-v24/ic_launcher_foreground.xml +0 -34
  125. package/android/build/intermediates/packaged_res/debug/mipmap-anydpi-v26/ic_launcher.xml +0 -5
  126. package/android/build/intermediates/packaged_res/debug/mipmap-anydpi-v26/ic_launcher_round.xml +0 -5
  127. package/android/build/intermediates/packaged_res/debug/mipmap-hdpi-v4/ic_launcher.png +0 -0
  128. package/android/build/intermediates/packaged_res/debug/mipmap-hdpi-v4/ic_launcher_round.png +0 -0
  129. package/android/build/intermediates/packaged_res/debug/mipmap-mdpi-v4/ic_launcher.png +0 -0
  130. package/android/build/intermediates/packaged_res/debug/mipmap-mdpi-v4/ic_launcher_round.png +0 -0
  131. package/android/build/intermediates/packaged_res/debug/mipmap-xhdpi-v4/ic_launcher.png +0 -0
  132. package/android/build/intermediates/packaged_res/debug/mipmap-xhdpi-v4/ic_launcher_round.png +0 -0
  133. package/android/build/intermediates/packaged_res/debug/mipmap-xxhdpi-v4/ic_launcher.png +0 -0
  134. package/android/build/intermediates/packaged_res/debug/mipmap-xxhdpi-v4/ic_launcher_round.png +0 -0
  135. package/android/build/intermediates/packaged_res/debug/mipmap-xxxhdpi-v4/ic_launcher.png +0 -0
  136. package/android/build/intermediates/packaged_res/debug/mipmap-xxxhdpi-v4/ic_launcher_round.png +0 -0
  137. package/android/build/intermediates/packaged_res/debug/values/values.xml +0 -4
  138. package/android/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt +0 -989
  139. package/android/build/intermediates/symbols/debug/R.txt +0 -1302
  140. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -95
  141. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  142. package/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  143. package/android/gradlew +0 -172
  144. package/android/gradlew.bat +0 -84
  145. package/android/local.properties +0 -8
  146. package/android/src/main/ic_launcher-web.png +0 -0
  147. package/android/src/main/java/nl/xguard/flic2/Flic2.java +0 -213
  148. package/android/src/main/java/nl/xguard/flic2/Flic2Package.java +0 -28
  149. package/android/src/main/java/nl/xguard/flic2/communication/IReactEvent.java +0 -15
  150. package/android/src/main/java/nl/xguard/flic2/communication/NullReactEvent.java +0 -47
  151. package/android/src/main/java/nl/xguard/flic2/communication/ReactEvent.java +0 -230
  152. package/android/src/main/java/nl/xguard/flic2/model/IReactFlic2Manager.java +0 -27
  153. package/android/src/main/java/nl/xguard/flic2/model/NullReactFlic2Manager.java +0 -70
  154. package/android/src/main/java/nl/xguard/flic2/model/ReactAndroidHandler.java +0 -33
  155. package/android/src/main/java/nl/xguard/flic2/model/ReactFlic2ButtonListener.java +0 -106
  156. package/android/src/main/java/nl/xguard/flic2/model/ReactFlic2Manager.java +0 -168
  157. package/android/src/main/java/nl/xguard/flic2/model/ReactFlic2ScanCallback.java +0 -48
  158. package/android/src/main/java/nl/xguard/flic2/model/ReactLogger.java +0 -14
  159. package/android/src/main/java/nl/xguard/flic2/service/Flic2Service.java +0 -200
  160. package/android/src/main/java/nl/xguard/flic2/service/Flic2ServiceConnection.java +0 -41
  161. package/android/src/main/java/nl/xguard/flic2/service/IFlic2Service.java +0 -13
  162. package/android/src/main/java/nl/xguard/flic2/sharedpreferences/flic2SharedPreferences.java +0 -35
  163. package/android/src/main/java/nl/xguard/flic2/util/ActivityUtil.java +0 -29
  164. package/android/src/main/java/nl/xguard/flic2/util/Consumer.java +0 -12
  165. package/android/src/main/res/drawable/ic_launcher_background.xml +0 -74
  166. package/android/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -34
  167. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -5
  168. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -5
  169. package/android/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  170. package/android/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  171. package/android/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  172. package/android/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  173. package/android/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  174. package/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  175. package/android/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  176. package/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  177. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  178. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  179. package/android/src/main/res/values/ids.xml +0 -5
  180. package/build/generated/source/buildConfig/debug/com/flic2/BuildConfig.java +0 -13
  181. package/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -46
  182. package/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output.json +0 -1
  183. package/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +0 -1
  184. package/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt +0 -0
  185. package/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  186. package/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
  187. package/build/intermediates/incremental/debug-mergeJniLibs/merge-state +0 -0
  188. package/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  189. package/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  190. package/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
  191. package/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +0 -15
  192. package/build/intermediates/incremental/packageDebugResources/merger.xml +0 -2
  193. package/build/intermediates/intermediate-jars/debug/classes.jar +0 -0
  194. package/build/intermediates/intermediate-jars/debug/res.jar +0 -0
  195. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/BuildConfig.class +0 -0
  196. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/Flic2Module$1.class +0 -0
  197. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/Flic2Module.class +0 -0
  198. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/Flic2Package.class +0 -0
  199. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/callback/flic2ButtonCallback.class +0 -0
  200. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/communication/ReactEvent.class +0 -0
  201. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/service/Flic2Service$BootUpReceiver.class +0 -0
  202. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/service/Flic2Service$UpdateReceiver.class +0 -0
  203. package/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/flic2/service/Flic2Service.class +0 -0
  204. package/build/intermediates/library_manifest/debug/AndroidManifest.xml +0 -46
  205. package/build/intermediates/merged_manifests/debug/output.json +0 -1
  206. package/build/intermediates/packaged-classes/debug/classes.jar +0 -0
  207. package/build/intermediates/packaged_res/debug/drawable/ic_launcher_background.xml +0 -74
  208. package/build/intermediates/packaged_res/debug/drawable-v24/ic_launcher_foreground.xml +0 -34
  209. package/build/intermediates/packaged_res/debug/mipmap-anydpi-v26/ic_launcher.xml +0 -5
  210. package/build/intermediates/packaged_res/debug/mipmap-anydpi-v26/ic_launcher_round.xml +0 -5
  211. package/build/intermediates/packaged_res/debug/mipmap-hdpi-v4/ic_launcher.png +0 -0
  212. package/build/intermediates/packaged_res/debug/mipmap-hdpi-v4/ic_launcher_round.png +0 -0
  213. package/build/intermediates/packaged_res/debug/mipmap-mdpi-v4/ic_launcher.png +0 -0
  214. package/build/intermediates/packaged_res/debug/mipmap-mdpi-v4/ic_launcher_round.png +0 -0
  215. package/build/intermediates/packaged_res/debug/mipmap-xhdpi-v4/ic_launcher.png +0 -0
  216. package/build/intermediates/packaged_res/debug/mipmap-xhdpi-v4/ic_launcher_round.png +0 -0
  217. package/build/intermediates/packaged_res/debug/mipmap-xxhdpi-v4/ic_launcher.png +0 -0
  218. package/build/intermediates/packaged_res/debug/mipmap-xxhdpi-v4/ic_launcher_round.png +0 -0
  219. package/build/intermediates/packaged_res/debug/mipmap-xxxhdpi-v4/ic_launcher.png +0 -0
  220. package/build/intermediates/packaged_res/debug/mipmap-xxxhdpi-v4/ic_launcher_round.png +0 -0
  221. package/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt +0 -1290
  222. package/build/intermediates/symbols/debug/R.txt +0 -1764
  223. package/build/intermediates/transforms/mergeJavaRes/debug/0.jar +0 -0
  224. package/build/intermediates/transforms/mergeJavaRes/debug/__content__.json +0 -1
  225. package/build/intermediates/transforms/mergeJniLibs/debug/__content__.json +0 -1
  226. package/build/intermediates/transforms/stripDebugSymbol/debug/__content__.json +0 -1
  227. package/build/outputs/aar/react-native-flic2-debug.aar +0 -0
  228. package/build/outputs/logs/manifest-merger-debug-report.txt +0 -95
  229. package/flic2Button.js +0 -170
  230. package/index.js +0 -430
  231. package/ios/Flic2.m +0 -611
  232. package/ios/Flic2.xcodeproj/project.pbxproj +0 -320
  233. package/ios/Flic2.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -4
  234. package/ios/Flic2.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  235. package/ios/Flic2.xcodeproj/project.xcworkspace/xcuserdata/wesdewitte.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  236. package/ios/Flic2.xcodeproj/xcshareddata/xcschemes/Flic2.xcscheme +0 -66
  237. package/ios/Flic2.xcodeproj/xcuserdata/wesdewitte.xcuserdatad/xcschemes/xcschememanagement.plist +0 -22
  238. package/ios/Flic2.xcworkspace/contents.xcworkspacedata +0 -7
  239. package/ios/Flic2.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  240. package/ios/Flic2.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -5
  241. package/ios/Flic2.xcworkspace/xcuserdata/wesdewitte.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  242. package/ios/Flic2.xcworkspace/xcuserdata/wesdewitte.xcuserdatad/WorkspaceSettings.xcsettings +0 -14
  243. package/react-native-flic2.podspec +0 -26
@@ -1,149 +1,81 @@
1
- // android/build.gradle
2
-
3
- // based on:
4
- //
5
- // * https://github.com/facebook/react-native/blob/0.60-stable/template/android/build.gradle
6
- // original location:
7
- // - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/build.gradle
8
- //
9
- // * https://github.com/facebook/react-native/blob/0.60-stable/template/android/app/build.gradle
10
- // original location:
11
- // - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/app/build.gradle
12
-
13
- def DEFAULT_COMPILE_SDK_VERSION = 28
14
- def DEFAULT_BUILD_TOOLS_VERSION = '28.0.3'
15
- def DEFAULT_MIN_SDK_VERSION = 23
16
- def DEFAULT_TARGET_SDK_VERSION = 28
17
-
18
- def safeExtGet(prop, fallback) {
19
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
20
- }
21
-
22
1
  buildscript {
23
- // The Android Gradle plugin is only required when opening the android folder stand-alone.
24
- // This avoids unnecessary downloads and potential conflicts when the library is included as a
25
- // module dependency in an application project.
26
- // ref: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies
27
- if (project == rootProject) {
28
- repositories {
29
- google()
30
- }
31
- dependencies {
32
- classpath 'com.android.tools.build:gradle:3.4.1'
33
- }
34
- }
35
- }
36
-
37
- apply plugin: 'com.android.library'
38
- apply plugin: 'maven-publish'
39
-
40
- android {
41
- compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION)
42
- buildToolsVersion safeExtGet('buildToolsVersion', DEFAULT_BUILD_TOOLS_VERSION)
43
- defaultConfig {
44
- minSdkVersion safeExtGet('minSdkVersion', DEFAULT_MIN_SDK_VERSION)
45
- targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION)
46
- versionCode 1
47
- versionName "1.0"
48
- }
49
- lintOptions {
50
- abortOnError false
51
- }
52
- }
2
+ ext.getExtOrDefault = {name ->
3
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['Flic2_' + name]
4
+ }
53
5
 
54
- repositories {
55
- // ref: https://www.baeldung.com/maven-local-repository
56
- mavenLocal()
57
- maven {
58
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
59
- url "$rootDir/../node_modules/react-native/android"
60
- }
61
- maven {
62
- // Android JSC is installed from npm
63
- url "$rootDir/../node_modules/jsc-android/dist"
64
- }
65
- maven { url 'https://jitpack.io' }
6
+ repositories {
66
7
  google()
8
+ mavenCentral()
9
+ }
10
+
11
+ dependencies {
12
+ classpath "com.android.tools.build:gradle:8.7.2"
13
+ // noinspection DifferentKotlinGradleVersion
14
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
15
+ }
67
16
  }
68
17
 
69
- dependencies {
70
- //noinspection GradleDynamicVersion
71
- implementation 'com.facebook.react:react-native:+' // From node_modules
72
- implementation 'com.github.50ButtonsEach:flic2lib-android:1.3.1'
73
18
 
74
- implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
75
- implementation 'io.reactivex.rxjava2:rxjava:2.2.13'
76
- }
19
+ apply plugin: "com.android.library"
20
+ apply plugin: "kotlin-android"
77
21
 
78
- def configureReactNativePom(def pom) {
79
- def packageJson = new groovy.json.JsonSlurper().parseText(file('../package.json').text)
80
-
81
- pom.project {
82
- name packageJson.title
83
- artifactId packageJson.name
84
- version = packageJson.version
85
- group = "nl.xguard.flic2"
86
- description packageJson.description
87
- url packageJson.repository.baseUrl
88
-
89
- licenses {
90
- license {
91
- name packageJson.license
92
- url packageJson.repository.baseUrl + '/blob/master/' + packageJson.licenseFilename
93
- distribution 'repo'
94
- }
95
- }
96
-
97
- developers {
98
- developer {
99
- id packageJson.author
100
- name packageJson.author
101
- }
102
- }
103
- }
22
+ apply plugin: "com.facebook.react"
23
+
24
+ def getExtOrIntegerDefault(name) {
25
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["Flic2_" + name]).toInteger()
104
26
  }
105
27
 
106
- afterEvaluate { project ->
107
- // some Gradle build hooks ref:
108
- // https://www.oreilly.com/library/view/gradle-beyond-the/9781449373801/ch03.html
109
- task androidJavadoc(type: Javadoc) {
110
- source = android.sourceSets.main.java.srcDirs
111
- classpath += files(android.bootClasspath)
112
- project.getConfigurations().getByName('implementation').setCanBeResolved(true)
113
- classpath += files(project.getConfigurations().getByName('implementation').asList())
114
- include '**/*.java'
115
- }
28
+ android {
29
+ namespace "com.flic2"
116
30
 
117
- task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) {
118
- classifier = 'javadoc'
119
- from androidJavadoc.destinationDir
120
- }
31
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
121
32
 
122
- task androidSourcesJar(type: Jar) {
123
- classifier = 'sources'
124
- from android.sourceSets.main.java.srcDirs
125
- include '**/*.java'
126
- }
33
+ defaultConfig {
34
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
35
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
36
+ }
127
37
 
128
- android.libraryVariants.all { variant ->
129
- def name = variant.name.capitalize()
130
- def javaCompileTask = variant.javaCompileProvider.get()
38
+ buildFeatures {
39
+ buildConfig true
40
+ }
131
41
 
132
- task "jar${name}"(type: Jar, dependsOn: javaCompileTask) {
133
- from javaCompileTask.destinationDir
134
- }
42
+ buildTypes {
43
+ release {
44
+ minifyEnabled false
135
45
  }
136
-
137
- artifacts {
138
- archives androidSourcesJar
139
- archives androidJavadocJar
46
+ }
47
+
48
+ lintOptions {
49
+ disable "GradleCompatible"
50
+ }
51
+
52
+ compileOptions {
53
+ sourceCompatibility JavaVersion.VERSION_1_8
54
+ targetCompatibility JavaVersion.VERSION_1_8
55
+ }
56
+
57
+ sourceSets {
58
+ main {
59
+ java.srcDirs += [
60
+ "generated/java",
61
+ "generated/jni"
62
+ ]
140
63
  }
64
+ }
65
+ }
141
66
 
142
- publishing {
143
- repositories {
144
- maven {
145
- url = uri("${rootProject.projectDir}/maven-repo")
146
- }
147
- }
148
- }
67
+ repositories {
68
+ mavenCentral()
69
+ google()
70
+ maven { url 'https://jitpack.io' }
71
+ }
72
+
73
+ def kotlin_version = getExtOrDefault("kotlinVersion")
74
+
75
+ dependencies {
76
+ implementation "com.facebook.react:react-android"
77
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
78
+ implementation 'com.github.50ButtonsEach:flic2lib-android:1.+'
79
+ implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3'
80
+ implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3'
149
81
  }
@@ -0,0 +1,5 @@
1
+ Flic2_kotlinVersion=2.0.21
2
+ Flic2_minSdkVersion=24
3
+ Flic2_targetSdkVersion=34
4
+ Flic2_compileSdkVersion=35
5
+ Flic2_ndkVersion=27.1.12297006
@@ -1,39 +1,27 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
- package="nl.xguard.flic2">
2
+ xmlns:tools="http://schemas.android.com/tools">
3
3
 
4
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
4
+ <!-- Bluetooth permissions for API < 31 -->
5
+ <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
6
+ <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
7
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />
8
+
9
+ <!-- Bluetooth permissions for API >= 31 -->
10
+ <uses-permission android:name="android.permission.BLUETOOTH_SCAN"
11
+ android:usesPermissionFlags="neverForLocation"
12
+ tools:targetApi="s" />
13
+ <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
14
+
15
+ <!-- Foreground service permission -->
5
16
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
6
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
17
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
7
18
 
8
19
  <application>
9
20
  <service
10
- android:name="nl.xguard.flic2.service.Flic2Service"
11
- android:enabled="true"
12
- android:exported="false" />
13
-
14
- <receiver
15
- android:name="nl.xguard.flic2.service.Flic2Service$BootUpReceiver"
16
- android:enabled="true"
17
- android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
18
- android:exported="false">
19
- <intent-filter>
20
- <action android:name="android.intent.action.BOOT_COMPLETED" />
21
- <category android:name="android.intent.category.DEFAULT" />
22
- </intent-filter>
23
- </receiver>
24
-
25
- <receiver
26
- android:name="nl.xguard.flic2.service.Flic2Service$UpdateReceiver"
21
+ android:name=".Flic2Service"
27
22
  android:enabled="true"
28
- android:exported="false">
29
- <intent-filter>
30
- <action android:name="android.intent.action.PACKAGE_REPLACED" />
31
- <data
32
- android:path="nl.xguard.flic2"
33
- android:scheme="package" />
34
- <category android:name="android.intent.category.LAUNCHER" />
35
- </intent-filter>
36
- </receiver>
23
+ android:exported="false"
24
+ android:foregroundServiceType="connectedDevice" />
37
25
  </application>
38
26
 
39
27
  </manifest>
@@ -0,0 +1,132 @@
1
+ package com.flic2
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.WritableMap
5
+ import io.flic.flic2libandroid.BatteryLevel
6
+ import io.flic.flic2libandroid.Flic2Button
7
+ import io.flic.flic2libandroid.Flic2ButtonListener
8
+
9
+ class Flic2ButtonEventListener(
10
+ private val emitEvent: (WritableMap) -> Unit
11
+ ) : Flic2ButtonListener() {
12
+
13
+ // Map Android library's onConnect() to emit "connected" (matches iOS)
14
+ override fun onConnect(button: Flic2Button) {
15
+ emitEvent(createButtonEvent(button, "connected"))
16
+ }
17
+
18
+ // Map Android library's onReady() to emit "ready" (matches iOS)
19
+ override fun onReady(button: Flic2Button, timestamp: Long) {
20
+ emitEvent(createButtonEvent(button, "ready"))
21
+ }
22
+
23
+ // Map Android library's onDisconnect() to emit "disconnected" (matches iOS)
24
+ override fun onDisconnect(button: Flic2Button) {
25
+ emitEvent(createButtonEvent(button, "disconnected"))
26
+ }
27
+
28
+ // Map Android library's onFailure() to emit "connectionFailed" (matches iOS)
29
+ override fun onFailure(button: Flic2Button, errorCode: Int, subCode: Int) {
30
+ emitEvent(createButtonEvent(button, "connectionFailed").apply {
31
+ putMap("error", Arguments.createMap().apply {
32
+ putInt("code", errorCode)
33
+ putInt("subCode", subCode)
34
+ putString("message", "Connection failed: code=$errorCode, subCode=$subCode")
35
+ })
36
+ })
37
+ }
38
+
39
+ override fun onButtonUpOrDown(
40
+ button: Flic2Button,
41
+ wasQueued: Boolean,
42
+ lastQueued: Boolean,
43
+ timestamp: Long,
44
+ isUp: Boolean,
45
+ isDown: Boolean
46
+ ) {
47
+ val event = if (isDown) "buttonDown" else "buttonUp"
48
+ emitEvent(createButtonEvent(button, event).apply {
49
+ putBoolean("queued", wasQueued)
50
+ putDouble("age", System.currentTimeMillis() - timestamp.toDouble())
51
+ })
52
+ }
53
+
54
+ override fun onButtonClickOrHold(
55
+ button: Flic2Button,
56
+ wasQueued: Boolean,
57
+ lastQueued: Boolean,
58
+ timestamp: Long,
59
+ isClick: Boolean,
60
+ isHold: Boolean
61
+ ) {
62
+ val event = if (isClick) "click" else "hold"
63
+ emitEvent(createButtonEvent(button, event).apply {
64
+ putBoolean("queued", wasQueued)
65
+ putDouble("age", System.currentTimeMillis() - timestamp.toDouble())
66
+ })
67
+ }
68
+
69
+ override fun onButtonSingleOrDoubleClick(
70
+ button: Flic2Button,
71
+ wasQueued: Boolean,
72
+ lastQueued: Boolean,
73
+ timestamp: Long,
74
+ isSingleClick: Boolean,
75
+ isDoubleClick: Boolean
76
+ ) {
77
+ val event = if (isSingleClick) "click" else "doubleClick"
78
+ emitEvent(createButtonEvent(button, event).apply {
79
+ putBoolean("queued", wasQueued)
80
+ putDouble("age", System.currentTimeMillis() - timestamp.toDouble())
81
+ })
82
+ }
83
+
84
+ override fun onButtonSingleOrDoubleClickOrHold(
85
+ button: Flic2Button,
86
+ wasQueued: Boolean,
87
+ lastQueued: Boolean,
88
+ timestamp: Long,
89
+ isSingleClick: Boolean,
90
+ isDoubleClick: Boolean,
91
+ isHold: Boolean
92
+ ) {
93
+ val event = when {
94
+ isSingleClick -> "click"
95
+ isDoubleClick -> "doubleClick"
96
+ isHold -> "hold"
97
+ else -> "unknown"
98
+ }
99
+ emitEvent(createButtonEvent(button, event).apply {
100
+ putBoolean("queued", wasQueued)
101
+ putDouble("age", System.currentTimeMillis() - timestamp.toDouble())
102
+ })
103
+ }
104
+
105
+ // Map Android library's onUnpaired() to emit "unpaired" (matches iOS)
106
+ override fun onUnpaired(button: Flic2Button) {
107
+ emitEvent(createButtonEvent(button, "unpaired"))
108
+ }
109
+
110
+ // Map Android library's onBatteryLevelUpdated() to emit "batteryUpdate" (matches iOS)
111
+ override fun onBatteryLevelUpdated(button: Flic2Button, level: BatteryLevel) {
112
+ emitEvent(createButtonEvent(button, "batteryUpdate").apply {
113
+ putDouble("voltage", level.voltage.toDouble())
114
+ })
115
+ }
116
+
117
+ // Map Android library's onNameUpdated() to emit "nicknameUpdate" (matches iOS)
118
+ override fun onNameUpdated(button: Flic2Button, newName: String) {
119
+ emitEvent(createButtonEvent(button, "nicknameUpdate").apply {
120
+ putString("nickname", newName)
121
+ })
122
+ }
123
+
124
+ private fun createButtonEvent(button: Flic2Button, event: String): WritableMap {
125
+ return Arguments.createMap().apply {
126
+ putString("uuid", button.uuid)
127
+ putString("event", event)
128
+ putMap("button", Flic2Converter.buttonToMap(button))
129
+ }
130
+ }
131
+ }
132
+
@@ -0,0 +1,103 @@
1
+ package com.flic2
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.WritableArray
5
+ import com.facebook.react.bridge.WritableMap
6
+ import io.flic.flic2libandroid.Flic2Button
7
+
8
+ object Flic2Converter {
9
+
10
+ fun buttonToMap(button: Flic2Button): WritableMap {
11
+ return Arguments.createMap().apply {
12
+ putString("uuid", button.uuid)
13
+ putString("identifier", button.uuid) // Android uses UUID as identifier
14
+ putString("name", button.getName() ?: "")
15
+ putString("nickname", button.getName() ?: "")
16
+ putString("bluetoothAddress", button.getBdAddr() ?: "")
17
+ putString("serialNumber", button.getSerialNumber() ?: "")
18
+
19
+ // Use connection state constants instead of enum
20
+ val connState = button.getConnectionState()
21
+ putInt("state", connectionStateToInt(connState))
22
+ putString("stateName", connectionStateToString(connState))
23
+
24
+ // iOS-only: Return defaults for trigger/latency mode (not supported in Android v1.1.0+)
25
+ putInt("triggerMode", 0)
26
+ putString("triggerModeName", "")
27
+ putInt("latencyMode", 0)
28
+ putString("latencyModeName", "")
29
+
30
+ putInt("pressCount", button.getPressCount())
31
+ putInt("firmwareRevision", button.getFirmwareVersion())
32
+
33
+ // Check if ready by comparing connection state
34
+ val isReady = connState == Flic2Button.CONNECTION_STATE_CONNECTED_READY
35
+ putBoolean("isReady", isReady)
36
+
37
+ // Get battery level from BatteryLevel object
38
+ val batteryLevel = button.getLastKnownBatteryLevel()
39
+ putDouble("batteryVoltage", batteryLevel?.voltage?.toDouble() ?: 0.0)
40
+
41
+ putBoolean("isUnpaired", button.isUnpaired())
42
+ }
43
+ }
44
+
45
+ fun buttonsToArray(buttons: List<Flic2Button>): WritableArray {
46
+ return Arguments.createArray().apply {
47
+ buttons.forEach { button ->
48
+ pushMap(buttonToMap(button))
49
+ }
50
+ }
51
+ }
52
+
53
+ private fun connectionStateToInt(state: Int): Int {
54
+ return when (state) {
55
+ Flic2Button.CONNECTION_STATE_DISCONNECTED -> 0
56
+ Flic2Button.CONNECTION_STATE_CONNECTING -> 1
57
+ Flic2Button.CONNECTION_STATE_CONNECTED_STARTING -> 2
58
+ Flic2Button.CONNECTION_STATE_CONNECTED_READY -> 3
59
+ else -> 0
60
+ }
61
+ }
62
+
63
+ private fun connectionStateToString(state: Int): String {
64
+ return when (state) {
65
+ Flic2Button.CONNECTION_STATE_DISCONNECTED -> "disconnected"
66
+ Flic2Button.CONNECTION_STATE_CONNECTING -> "connecting"
67
+ Flic2Button.CONNECTION_STATE_CONNECTED_STARTING -> "connected"
68
+ Flic2Button.CONNECTION_STATE_CONNECTED_READY -> "connected"
69
+ else -> "disconnected"
70
+ }
71
+ }
72
+
73
+ // Trigger mode and latency mode are iOS-only features (removed from Android library v1.1.0+)
74
+
75
+ fun scanResultToString(result: Int): String {
76
+ return when (result) {
77
+ 0 -> "success"
78
+ 1 -> "alreadyRunning"
79
+ 2 -> "bluetoothNotActivated"
80
+ 3 -> "unknown"
81
+ 4 -> "noPublicButtonDiscovered"
82
+ 5 -> "alreadyConnectedToAnotherDevice"
83
+ 6 -> "connectionTimeout"
84
+ 7 -> "invalidVerifier"
85
+ 8 -> "blePairingFailedPreviousPairingAlreadyExisting"
86
+ 9 -> "blePairingFailedUserCanceled"
87
+ 10 -> "blePairingFailedUnknownReason"
88
+ 11 -> "appCredentialsDontMatch"
89
+ 12 -> "userCanceled"
90
+ 13 -> "invalidBluetoothAddress"
91
+ 14 -> "genuineCheckFailed"
92
+ 15 -> "tooManyApps"
93
+ 16 -> "couldNotSetBluetoothNotify"
94
+ 17 -> "couldNotDiscoverBluetoothServices"
95
+ 18 -> "buttonDisconnectedDuringVerification"
96
+ 19 -> "failedToEstablish"
97
+ 20 -> "connectionLimitReached"
98
+ 21 -> "notInPublicMode"
99
+ else -> "unknown"
100
+ }
101
+ }
102
+ }
103
+