@iternio/react-native-auto-play 0.3.11 → 0.3.12

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 (118) hide show
  1. package/README.md +60 -2
  2. package/android/src/automotive/AndroidManifest.xml +1 -0
  3. package/android/src/main/AndroidManifest.xml +1 -0
  4. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAutoPlay.kt +91 -0
  5. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/VoiceInputManager.kt +214 -0
  6. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/MapTemplate.kt +2 -1
  7. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/Parser.kt +108 -38
  8. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/utils/BitmapCache.kt +14 -0
  9. package/ios/extensions/NitroImageExtensions.swift +10 -1
  10. package/ios/hybrid/HybridAutoPlay.swift +51 -4
  11. package/ios/templates/GridTemplate.swift +7 -0
  12. package/ios/templates/MapTemplate.swift +14 -0
  13. package/ios/templates/Parser.swift +91 -4
  14. package/ios/utils/VoiceInputManager.swift +233 -0
  15. package/lib/specs/AutoPlay.nitro.d.ts +31 -1
  16. package/lib/types/Image.d.ts +13 -0
  17. package/lib/utils/NitroImage.d.ts +6 -1
  18. package/lib/utils/NitroImage.js +7 -0
  19. package/nitrogen/generated/android/ReactNativeAutoPlay+autolinking.cmake +1 -1
  20. package/nitrogen/generated/android/c++/JGridTemplateConfig.hpp +3 -1
  21. package/nitrogen/generated/android/c++/JHybridAutoPlaySpec.cpp +48 -1
  22. package/nitrogen/generated/android/c++/JHybridAutoPlaySpec.hpp +4 -0
  23. package/nitrogen/generated/android/c++/JHybridClusterSpec.cpp +4 -0
  24. package/nitrogen/generated/android/c++/JHybridGridTemplateSpec.cpp +5 -1
  25. package/nitrogen/generated/android/c++/JHybridInformationTemplateSpec.cpp +5 -1
  26. package/nitrogen/generated/android/c++/JHybridListTemplateSpec.cpp +5 -1
  27. package/nitrogen/generated/android/c++/JHybridMapTemplateSpec.cpp +5 -1
  28. package/nitrogen/generated/android/c++/JHybridMessageTemplateSpec.cpp +5 -1
  29. package/nitrogen/generated/android/c++/JHybridSearchTemplateSpec.cpp +5 -1
  30. package/nitrogen/generated/android/c++/JHybridSignInTemplateSpec.cpp +5 -1
  31. package/nitrogen/generated/android/c++/JImageLane.hpp +2 -0
  32. package/nitrogen/generated/android/c++/JInformationTemplateConfig.hpp +3 -1
  33. package/nitrogen/generated/android/c++/JLaneGuidance.hpp +2 -0
  34. package/nitrogen/generated/android/c++/JListTemplateConfig.hpp +3 -1
  35. package/nitrogen/generated/android/c++/JMapTemplateConfig.hpp +3 -1
  36. package/nitrogen/generated/android/c++/JMessageTemplateConfig.hpp +7 -5
  37. package/nitrogen/generated/android/c++/JNitroAction.hpp +7 -5
  38. package/nitrogen/generated/android/c++/JNitroAttributedString.hpp +2 -0
  39. package/nitrogen/generated/android/c++/JNitroAttributedStringImage.hpp +2 -0
  40. package/nitrogen/generated/android/c++/JNitroBaseMapTemplateConfig.hpp +3 -1
  41. package/nitrogen/generated/android/c++/JNitroGridButton.hpp +2 -0
  42. package/nitrogen/generated/android/c++/JNitroImage.cpp +6 -2
  43. package/nitrogen/generated/android/c++/JNitroImage.hpp +19 -2
  44. package/nitrogen/generated/android/c++/JNitroManeuver.hpp +3 -1
  45. package/nitrogen/generated/android/c++/JNitroMapButton.hpp +2 -0
  46. package/nitrogen/generated/android/c++/JNitroMessageManeuver.hpp +7 -5
  47. package/nitrogen/generated/android/c++/JNitroNavigationAlert.hpp +7 -5
  48. package/nitrogen/generated/android/c++/JNitroRoutingManeuver.hpp +7 -5
  49. package/nitrogen/generated/android/c++/JNitroRow.hpp +7 -5
  50. package/nitrogen/generated/android/c++/JNitroSection.hpp +3 -1
  51. package/nitrogen/generated/android/c++/JPreferredImageLane.hpp +2 -0
  52. package/nitrogen/generated/android/c++/JRemoteImage.hpp +68 -0
  53. package/nitrogen/generated/android/c++/JSearchTemplateConfig.hpp +3 -1
  54. package/nitrogen/generated/android/c++/JSignInTemplateConfig.hpp +3 -1
  55. package/nitrogen/generated/android/c++/JVariant_GlyphImage_AssetImage_RemoteImage.cpp +30 -0
  56. package/nitrogen/generated/android/c++/JVariant_GlyphImage_AssetImage_RemoteImage.hpp +92 -0
  57. package/nitrogen/generated/android/c++/JVariant_PreferredImageLane_ImageLane.hpp +2 -0
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAutoPlaySpec.kt +17 -0
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/MessageTemplateConfig.kt +3 -3
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroAction.kt +3 -3
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroImage.kt +14 -2
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroMessageManeuver.kt +2 -2
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroNavigationAlert.kt +3 -3
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroRoutingManeuver.kt +2 -2
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroRow.kt +3 -3
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/RemoteImage.kt +44 -0
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/{Variant_GlyphImage_AssetImage.kt → Variant_GlyphImage_AssetImage_RemoteImage.kt} +20 -8
  68. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.cpp +16 -8
  69. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.hpp +156 -79
  70. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Umbrella.hpp +4 -0
  71. package/nitrogen/generated/ios/c++/HybridAutoPlaySpecSwift.hpp +37 -0
  72. package/nitrogen/generated/ios/c++/HybridCarPlayDashboardSpecSwift.hpp +3 -0
  73. package/nitrogen/generated/ios/c++/HybridClusterSpecSwift.hpp +3 -0
  74. package/nitrogen/generated/ios/c++/HybridGridTemplateSpecSwift.hpp +3 -0
  75. package/nitrogen/generated/ios/c++/HybridInformationTemplateSpecSwift.hpp +3 -0
  76. package/nitrogen/generated/ios/c++/HybridListTemplateSpecSwift.hpp +3 -0
  77. package/nitrogen/generated/ios/c++/HybridMapTemplateSpecSwift.hpp +3 -0
  78. package/nitrogen/generated/ios/c++/HybridMessageTemplateSpecSwift.hpp +3 -0
  79. package/nitrogen/generated/ios/c++/HybridSearchTemplateSpecSwift.hpp +3 -0
  80. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_ArrayBuffer_.swift +46 -0
  81. package/nitrogen/generated/ios/swift/HybridAutoPlaySpec.swift +4 -0
  82. package/nitrogen/generated/ios/swift/HybridAutoPlaySpec_cxx.swift +82 -0
  83. package/nitrogen/generated/ios/swift/ImageLane.swift +9 -4
  84. package/nitrogen/generated/ios/swift/MessageTemplateConfig.swift +16 -11
  85. package/nitrogen/generated/ios/swift/NitroAction.swift +16 -11
  86. package/nitrogen/generated/ios/swift/NitroAttributedStringImage.swift +9 -4
  87. package/nitrogen/generated/ios/swift/NitroCarPlayDashboardButton.swift +9 -4
  88. package/nitrogen/generated/ios/swift/NitroGridButton.swift +9 -4
  89. package/nitrogen/generated/ios/swift/NitroImage.swift +2 -1
  90. package/nitrogen/generated/ios/swift/NitroMapButton.swift +9 -4
  91. package/nitrogen/generated/ios/swift/NitroMessageManeuver.swift +16 -11
  92. package/nitrogen/generated/ios/swift/NitroNavigationAlert.swift +16 -11
  93. package/nitrogen/generated/ios/swift/NitroRoutingManeuver.swift +25 -15
  94. package/nitrogen/generated/ios/swift/NitroRow.swift +16 -11
  95. package/nitrogen/generated/ios/swift/PreferredImageLane.swift +9 -4
  96. package/nitrogen/generated/ios/swift/RemoteImage.swift +58 -0
  97. package/nitrogen/generated/ios/swift/{Variant_GlyphImage_AssetImage.swift → Variant_GlyphImage_AssetImage_RemoteImage.swift} +4 -3
  98. package/nitrogen/generated/shared/c++/HybridAutoPlaySpec.cpp +4 -0
  99. package/nitrogen/generated/shared/c++/HybridAutoPlaySpec.hpp +5 -0
  100. package/nitrogen/generated/shared/c++/ImageLane.hpp +8 -5
  101. package/nitrogen/generated/shared/c++/MessageTemplateConfig.hpp +8 -5
  102. package/nitrogen/generated/shared/c++/NitroAction.hpp +8 -5
  103. package/nitrogen/generated/shared/c++/NitroAttributedStringImage.hpp +8 -5
  104. package/nitrogen/generated/shared/c++/NitroCarPlayDashboardButton.hpp +8 -5
  105. package/nitrogen/generated/shared/c++/NitroGridButton.hpp +8 -5
  106. package/nitrogen/generated/shared/c++/NitroMapButton.hpp +8 -5
  107. package/nitrogen/generated/shared/c++/NitroMessageManeuver.hpp +8 -5
  108. package/nitrogen/generated/shared/c++/NitroNavigationAlert.hpp +8 -5
  109. package/nitrogen/generated/shared/c++/NitroRoutingManeuver.hpp +12 -9
  110. package/nitrogen/generated/shared/c++/NitroRow.hpp +8 -5
  111. package/nitrogen/generated/shared/c++/PreferredImageLane.hpp +8 -5
  112. package/nitrogen/generated/shared/c++/RemoteImage.hpp +94 -0
  113. package/package.json +1 -1
  114. package/src/specs/AutoPlay.nitro.ts +39 -1
  115. package/src/types/Image.ts +14 -0
  116. package/src/utils/NitroImage.ts +15 -1
  117. package/nitrogen/generated/android/c++/JVariant_GlyphImage_AssetImage.cpp +0 -26
  118. package/nitrogen/generated/android/c++/JVariant_GlyphImage_AssetImage.hpp +0 -75
@@ -34,7 +34,8 @@ export interface AutoPlay extends HybridObject<{ android: 'kotlin'; ios: 'swift'
34
34
  ): CleanupCallback;
35
35
 
36
36
  /**
37
- * Adds a listener for voice input events. Not implemented on iOS.
37
+ * Adds a listener for voice input events fired by the OS (Android Auto only).
38
+ * On iOS this is a no-op — use startVoiceInput instead.
38
39
  * @param callback the callback to receive the voice input
39
40
  * @returns callback to remove the listener
40
41
  * @namespace Android
@@ -43,6 +44,43 @@ export interface AutoPlay extends HybridObject<{ android: 'kotlin'; ios: 'swift'
43
44
  callback: (coordinates: Location | undefined, query: string | undefined) => void
44
45
  ): CleanupCallback;
45
46
 
47
+ /**
48
+ * Returns true if microphone permission has already been granted.
49
+ */
50
+ hasVoiceInputPermission(): boolean;
51
+
52
+ /**
53
+ * Request microphone permission from the user.
54
+ * On Android: uses the car context when Android Auto is connected, otherwise
55
+ * falls back to the React Native application context.
56
+ * On iOS: uses AVAudioApplication (iOS 17+) or AVAudioSession (iOS 15–16).
57
+ * Returns true if permission was granted, false if denied.
58
+ */
59
+ requestVoiceInputPermission(): Promise<boolean>;
60
+
61
+ /**
62
+ * Start an in-app voice recording session.
63
+ * On Android: acquires audio focus and captures via CarAudioRecord when
64
+ * Android Auto is connected, otherwise uses standard AudioRecord.
65
+ * On iOS: presents CPVoiceControlTemplate (when a car is connected) and
66
+ * captures audio via AVAudioEngine.
67
+ * Resolves with the complete raw PCM buffer (16 kHz, 16-bit, mono) when
68
+ * silence is detected, the max duration is reached, or stopVoiceInput() is called.
69
+ * Rejects if microphone permission has not been granted or recording fails to start.
70
+ */
71
+ startVoiceInput(
72
+ silenceThresholdMs?: number,
73
+ maxDurationMs?: number,
74
+ listeningText?: string
75
+ ): Promise<ArrayBuffer>;
76
+
77
+ /**
78
+ * Stop the active voice recording session early. Causes the Promise returned
79
+ * by startVoiceInput() to resolve with the audio captured so far.
80
+ * No-op if no recording is in progress.
81
+ */
82
+ stopVoiceInput(): void;
83
+
46
84
  /**
47
85
  * sets the specified template as root template, initializes a new stack
48
86
  * Promise might contain an error message in case setting root template failed
@@ -29,4 +29,18 @@ export type AutoImage =
29
29
  */
30
30
  color?: ThemedColor | string;
31
31
  type: 'asset';
32
+ }
33
+ | {
34
+ /** HTTPS URL to a remote image. HTTP is not supported (blocked by App Transport Security). */
35
+ uri: string;
36
+ /**
37
+ * if specified the image gets tinted, if not it will just use the original image
38
+ */
39
+ color?: ThemedColor | string;
40
+ /**
41
+ * Network timeout in milliseconds before the remote fetch is abandoned and `null` is returned.
42
+ * Defaults to 500ms when not specified.
43
+ */
44
+ timeoutMs?: number;
45
+ type: 'remote';
32
46
  };
@@ -15,11 +15,17 @@ interface GlyphImage {
15
15
  fontScale?: number;
16
16
  }
17
17
 
18
+ interface RemoteImage {
19
+ uri: string;
20
+ color?: NitroColor;
21
+ timeoutMs?: number;
22
+ }
23
+
18
24
  /**
19
25
  * we need to map the ButtonImage.name from GlyphName to
20
26
  * the actual numeric value so we need a nitro specific type
21
27
  */
22
- export type NitroImage = GlyphImage | AssetImage;
28
+ export type NitroImage = GlyphImage | AssetImage | RemoteImage;
23
29
 
24
30
  function convert(image: AutoImage): NitroImage;
25
31
  function convert(image?: AutoImage): NitroImage | undefined;
@@ -44,6 +50,14 @@ function convert(image?: AutoImage): NitroImage | undefined {
44
50
  };
45
51
  }
46
52
 
53
+ if (image.type === 'remote') {
54
+ return {
55
+ uri: image.uri,
56
+ color: NitroColorUtil.convert(image.color),
57
+ timeoutMs: image.timeoutMs,
58
+ };
59
+ }
60
+
47
61
  // Image.resolveAssetSource is pretty terrible, it will simply return whatever object you pass it is not a number [require(...)]
48
62
  // so the input allows all optional parameters which are returned as is even though
49
63
  // the return type claims to not have any optional parameters...
@@ -1,26 +0,0 @@
1
- ///
2
- /// JVariant_GlyphImage_AssetImage.cpp
3
- /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
- /// https://github.com/mrousavy/nitro
5
- /// Copyright © Marc Rousavy @ Margelo
6
- ///
7
-
8
- #include "JVariant_GlyphImage_AssetImage.hpp"
9
-
10
- namespace margelo::nitro::swe::iternio::reactnativeautoplay {
11
- /**
12
- * Converts JVariant_GlyphImage_AssetImage to std::variant<GlyphImage, AssetImage>
13
- */
14
- std::variant<GlyphImage, AssetImage> JVariant_GlyphImage_AssetImage::toCpp() const {
15
- if (isInstanceOf(JVariant_GlyphImage_AssetImage_impl::First::javaClassStatic())) {
16
- // It's a `GlyphImage`
17
- auto jniValue = static_cast<const JVariant_GlyphImage_AssetImage_impl::First*>(this)->getValue();
18
- return jniValue->toCpp();
19
- } else if (isInstanceOf(JVariant_GlyphImage_AssetImage_impl::Second::javaClassStatic())) {
20
- // It's a `AssetImage`
21
- auto jniValue = static_cast<const JVariant_GlyphImage_AssetImage_impl::Second*>(this)->getValue();
22
- return jniValue->toCpp();
23
- }
24
- throw std::invalid_argument("Variant is unknown Kotlin instance!");
25
- }
26
- } // namespace margelo::nitro::swe::iternio::reactnativeautoplay
@@ -1,75 +0,0 @@
1
- ///
2
- /// JVariant_GlyphImage_AssetImage.hpp
3
- /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
- /// https://github.com/mrousavy/nitro
5
- /// Copyright © Marc Rousavy @ Margelo
6
- ///
7
-
8
- #pragma once
9
-
10
- #include <fbjni/fbjni.h>
11
- #include <variant>
12
-
13
- #include "GlyphImage.hpp"
14
- #include "AssetImage.hpp"
15
- #include <variant>
16
- #include "JGlyphImage.hpp"
17
- #include "NitroColor.hpp"
18
- #include "JNitroColor.hpp"
19
- #include <optional>
20
- #include "JAssetImage.hpp"
21
- #include <string>
22
-
23
- namespace margelo::nitro::swe::iternio::reactnativeautoplay {
24
-
25
- using namespace facebook;
26
-
27
- /**
28
- * The C++ JNI bridge between the C++ std::variant and the Java class "Variant_GlyphImage_AssetImage".
29
- */
30
- class JVariant_GlyphImage_AssetImage: public jni::JavaClass<JVariant_GlyphImage_AssetImage> {
31
- public:
32
- static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/swe/iternio/reactnativeautoplay/Variant_GlyphImage_AssetImage;";
33
-
34
- static jni::local_ref<JVariant_GlyphImage_AssetImage> create_0(jni::alias_ref<JGlyphImage> value) {
35
- static const auto method = javaClassStatic()->getStaticMethod<JVariant_GlyphImage_AssetImage(jni::alias_ref<JGlyphImage>)>("create");
36
- return method(javaClassStatic(), value);
37
- }
38
- static jni::local_ref<JVariant_GlyphImage_AssetImage> create_1(jni::alias_ref<JAssetImage> value) {
39
- static const auto method = javaClassStatic()->getStaticMethod<JVariant_GlyphImage_AssetImage(jni::alias_ref<JAssetImage>)>("create");
40
- return method(javaClassStatic(), value);
41
- }
42
-
43
- static jni::local_ref<JVariant_GlyphImage_AssetImage> fromCpp(const std::variant<GlyphImage, AssetImage>& variant) {
44
- switch (variant.index()) {
45
- case 0: return create_0(JGlyphImage::fromCpp(std::get<0>(variant)));
46
- case 1: return create_1(JAssetImage::fromCpp(std::get<1>(variant)));
47
- default: throw std::invalid_argument("Variant holds unknown index! (" + std::to_string(variant.index()) + ")");
48
- }
49
- }
50
-
51
- [[nodiscard]] std::variant<GlyphImage, AssetImage> toCpp() const;
52
- };
53
-
54
- namespace JVariant_GlyphImage_AssetImage_impl {
55
- class First final: public jni::JavaClass<First, JVariant_GlyphImage_AssetImage> {
56
- public:
57
- static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/swe/iternio/reactnativeautoplay/Variant_GlyphImage_AssetImage$First;";
58
-
59
- [[nodiscard]] jni::local_ref<JGlyphImage> getValue() const {
60
- static const auto field = javaClassStatic()->getField<JGlyphImage>("value");
61
- return getFieldValue(field);
62
- }
63
- };
64
-
65
- class Second final: public jni::JavaClass<Second, JVariant_GlyphImage_AssetImage> {
66
- public:
67
- static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/swe/iternio/reactnativeautoplay/Variant_GlyphImage_AssetImage$Second;";
68
-
69
- [[nodiscard]] jni::local_ref<JAssetImage> getValue() const {
70
- static const auto field = javaClassStatic()->getField<JAssetImage>("value");
71
- return getFieldValue(field);
72
- }
73
- };
74
- } // namespace JVariant_GlyphImage_AssetImage_impl
75
- } // namespace margelo::nitro::swe::iternio::reactnativeautoplay