From f69ee368c7640817fcc21e1082bfe64d04ef9a7a Mon Sep 17 00:00:00 2001 From: Ansh Gandhi Date: Tue, 15 Apr 2025 18:32:31 -0400 Subject: [PATCH 1/2] fix getCameraPose() error for android --- .DS_Store | Bin 8196 -> 0 bytes .gitignore | 2 +- android/.DS_Store | Bin 6148 -> 0 bytes android/src/.DS_Store | Bin 6148 -> 0 bytes android/src/main/.DS_Store | Bin 6148 -> 0 bytes android/src/main/assets/.DS_Store | Bin 6148 -> 0 bytes android/src/main/kotlin/.DS_Store | Bin 6148 -> 0 bytes android/src/main/res/.DS_Store | Bin 6148 -> 0 bytes examples/.DS_Store | Bin 6148 -> 0 bytes lib/.DS_Store | Bin 6148 -> 0 bytes lib/managers/ar_session_manager.dart | 22 +++++++++++++++------- 11 files changed, 16 insertions(+), 8 deletions(-) delete mode 100644 .DS_Store delete mode 100644 android/.DS_Store delete mode 100644 android/src/.DS_Store delete mode 100644 android/src/main/.DS_Store delete mode 100644 android/src/main/assets/.DS_Store delete mode 100644 android/src/main/kotlin/.DS_Store delete mode 100644 android/src/main/res/.DS_Store delete mode 100644 examples/.DS_Store delete mode 100644 lib/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 026f01b94cb7d8942c2d711422adf6555aa534ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHMON$dh5U$>gX2K%mppcUci0EO^y!OSy5@Yrc7#|0fnAr)*;AA=^6C;F`+yn(5 z2L=Ct_&5vRTn~yzPl5-PL2aGRYo1$YQ#n`|Ihdny&tOx+gUO08;L|Ie-iR zm{=I57qOZmOwUS87G%$HM1ua{H*?i3+U~?Gb%$m^GoTsJ3}^;40|$ixd}lK;XT0}? zR@a&V&A?nTz|IE?3&WDckwAWQV8v4aL<76IU^~qkh?c~X#F0SMpb+7TC|rq5F^F)- zeoNYwB#s0McOWwPAaZ0PGZex{$NO8{97su^t~CRifj9#!cQ@b+G{J)~n!h)ntGYI= zR2-i=*k?X_XZ-s9`s2B%-rZNutZ1xLT zNEn9>C(Wd}XkM?j=%5u6OJE*ow_7!Zaz`(`;0(H=SVPcaw7+yO+xLes&SQ$s-nE>|VF3-N2_o z6LoAp34CDa0a%5VCEF^jX4x{V<+HX`EG+-UD#+Q4Hvl6*c14%t^tU~Yx(Gi%ojkQJ z_M`MusgG-;gzqTh#c1}CXeSZ{e0{~E;2JfGJ8yO_z3B2sA%U9&{nRMp+GrFb7KH&J z+gy_;(ZYtRQ^#Dp`*`)q!w=#llD_Jw)AW&X<hG7EHtqIh8{5 zcp$8)Kuu*UF<8@K4;B{yPcpT^rEu&_pCIivoc@dIaD@&XMclRDTd1anUd< U$|zzl=|F!76hgdn2F}312j*QZ{Qv*} diff --git a/android/src/.DS_Store b/android/src/.DS_Store deleted file mode 100644 index 94b858a8ab1ddd78dbd523b4fc8ce4a7d69be461..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!A`?447FL2DskD7V{RO{us;Y>cjLAjC+I5Jq?SxV6W9I{Kf!nL92?Y%irbKe zY$um_9c`bkh5=ows=7@zY~||i{r>vx<96(Ce)aFSgWS8Dyo7hofHU9> zI0MeWaT%~{y1Y2FU1MR*{r zp+F5~D=}EZVGlMh8up4BPHe>o+sa?X3+L65Kji7eQPF#6z!?}bFw@~&?*A2jnaLu5 z9O5Hqz!~^w3~*7ct0gvNck7Ss$z2=J9?(Q&UM~s+`sfjWft(|k*{S{@I_5>gUQx1$ SJ%^r diff --git a/android/src/main/.DS_Store b/android/src/main/.DS_Store deleted file mode 100644 index 6636fe1eab09f0f53a8551b2cdd2a970193cacdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%Wl&^6ur}gcG3zdk&4viNNkV@B2A&ZHf{(%P@}Q{6ztkctU8`xJ9rUA@}{Z; zzrq@^X2B=$32fmLxbvvu!Bi|NAymzcX3qFNW{yu{PX++UU>@uOv;lx(6WH9u?hhv7 zqSb6odpd|j&XGgr7un2@xnIk+4y%Aw;D1v-Q(nD@l7JTj zK2L&7*19S{TeLN5?<^Mm2lu;d?_q!0Ws67sUYFh5+g~nQ^v2D*PYy>X@igJ@m52o2 zInu6cJckcBFzzYHj$4k9TgG#5@_JUvWGEj$cL$5ui?0@|A!=o^*c7Nh|Rx`R|i2pO&d6Z{)1V zUzB5zCnYWe4M_3Vl2xf`mq7|{JzgbO>4e*dXSbD>x^Bu>MCwt40yu(#wM#3YpC7t) z>6z>VRspNPRZ~E`9~d@)j>b}0;D-~hXcGNy|>nGPVBV|+Z$}cL|&;-mSCs1V>u98@eVd=7-M39=x8hzq6f|X O5s)(2&MNRv75D`_^tT59 diff --git a/android/src/main/assets/.DS_Store b/android/src/main/assets/.DS_Store deleted file mode 100644 index dcde3ddb3b91d33ad93efc61bbfc88af7a56df48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK&5qMB5Vm*Q-IOj;4~w+oWQl7enl`&#;1WuC0fOKFs5B(njY#6ENt;7dksA^} z55R*UAszs60GQ0{Y=?83QLL7oly1oplW8SUMN(|4&yUnPN*YM*O~#%K$U?_`Psqy|8D*J zzv`sFGy|G}|B32A9H|%Do$p;3>R-JKyW7Xa>iv zic~@OtFBLf9!&R?i0JaZU5Ly@WQImmDkDPksB7ZEr$FT#P0k$@naHiX{ycE++-`37 zo9=l3xw~GhHhH_VBfPyH0=K!Yn=UsP&t5K`9v|+WFF$?lx4zxY(R{i_N=Pse34+esPVBmuR-VX_lSUL8FMx!vUrviaK_zA#(_sDs1nmL-14uot#F3~?Q+|rLm^8cqM(v@6VAoM=;drCi!9pRD&+rNy zc?ezrt{jk1AEz_B+mhf^;)DRrNVDJW?2LE(NjqZ$fap%59e^ePNL0f5O&pd8?UPod z<}B-o!aO5@5E2-KMK-E+)M>ZWz1;`1Swr5wv;Fv4|8+7<^?OUC zz`A2(!{H@-z)9u3qU3Jx7fE^kx6u-Qw$$<$lp` z`Hjxz&!i$;&FhUnP7|G;;vVI_iUl@+x1eDH`C`tsm%r}M=lkvZ$MY?l@4_>N`e&}! z`7Fs3k7D_^8E|(;QVn2X2ABb6V4eZ04+@pgb68q5r2_}^3xHThvk{z|HioFkfap0a zEusZQ*ib|pDzNccy9r0Ta%<0FY0-v*Fel@4+{wcIp$HoeLK$}uo<$y+0cK#4ffc)K zQvZK?{r~@B5U-d4X5hbKK-7DFuZyqbdTZt7sMjjgSEwZ9S6Vb7IJkCfCe(^IQH|i9 Yq6wnsu(XI46#ft}H1NO-{80uj0327AQ2+n{ diff --git a/examples/.DS_Store b/examples/.DS_Store deleted file mode 100644 index 5d56837e1c7a9a138988ffceba3ffc4985fd702d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKO-}+b5Pd}s5HB1(?k|w|4_2~759&dpM-gO26JZG~e%$t_`(`>Jl7*Ww#LR5k z*G}iP+t*}g3n28?lQWyv7kD!EoIIJ~0 z?rv;%JNABv$K>zi3b+EUz^^L6oGsQmj_9>3;0m|`8wKS1kgy1*hE+uUbgBmPc$4Mjp(&2 z;0kOja1^^8$^ZTR_y28@_gn#2;9n^an%N-haZ8q4Ynzi?o3K2xh)G-(aYJE4Q!!&D d6`!!E(Vs|zm>O0Q>7n_LfXd*NEAXcZd;{_#K;!@b diff --git a/lib/.DS_Store b/lib/.DS_Store deleted file mode 100644 index 8d81c566934498e7c88781ec24d4cd25f597c737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHLu}%U(6nqP)s0|gdyhb|{=_pTv#-7S(AqW8tcmyFvt7|Pxto#WJ3o8ptt^5bS zz<+Sw+ZA^2fLIw~_9eS>w>xilZn)dMgNRgR)GQGdh$xT3m|H_NCAgnUDl(>J1E^$- zAzf3ST6EcMr`W#1JK!ByGza+EU8N?~X((m<{FZ8`QLnG%W}m0CdQr97=td3n@&ZwM z?7!{KVm5!t?04*$Lkx$pJJ5Ckm0heY172Nh4pY(`TieU|_VWJVowcRL>O~V}^LVZ< zGiOh9)u}yA*U^*Am*CjCwu-lh-7oPhPbuC+*F2u9>z;)zW2^{nwcuC6tMY5I-_}!p z82jXmVS6--W9t#LHKGNfbShA%DtUw8c1Z^Yh8G%)HR^OyGBfyQW@WxmlujoV z2%S`@(bwJq?||z-R-YDl|KFSa{qH9EGw*Px-irBu1qt*8d;km$#v0Lr@Gk;lgRi^;f9k+D^q0xK diff --git a/lib/managers/ar_session_manager.dart b/lib/managers/ar_session_manager.dart index deee08b..f60a06d 100644 --- a/lib/managers/ar_session_manager.dart +++ b/lib/managers/ar_session_manager.dart @@ -1,5 +1,6 @@ import 'dart:math' show sqrt; import 'dart:typed_data'; +import 'dart:io'; import 'package:ar_flutter_plugin_2/datatypes/config_planedetection.dart'; import 'package:ar_flutter_plugin_2/models/ar_anchor.dart'; @@ -49,9 +50,18 @@ class ARSessionManager { /// Returns the camera pose in Matrix4 format with respect to the world coordinate system of the [ARView] Future getCameraPose() async { try { - final serializedCameraPose = - await _channel.invokeMethod>('getCameraPose', {}); - return MatrixConverter().fromJson(serializedCameraPose!); + if (Platform.isAndroid) { + final serializedCameraPose = await _channel.invokeMethod>('getCameraPose', {}); + final position = serializedCameraPose!['position']; + final rotation = serializedCameraPose!['rotation']; + + final translation = Vector3(position!['x'], position!['y'], position!['z']); + final quaternion = Quaternion(rotation!['x'], rotation!['y'], rotation!['z'], rotation!['w']); + return Matrix4.compose(translation, quaternion, Vector3.all(1.0)); + } else { + final serializedCameraPose = await _channel.invokeMethod>('getCameraPose', {}); + return MatrixConverter().fromJson(serializedCameraPose!); + } } catch (e) { print('Error caught: ' + e.toString()); return null; @@ -122,7 +132,7 @@ class ARSessionManager { } //Show or hide planes - void showPlanes(bool showPlanes){ + void showPlanes(bool showPlanes) { _channel.invokeMethod('showPlanes', { "showPlanes": showPlanes, }); @@ -138,8 +148,7 @@ class ARSessionManager { if (onError != null) { onError!(call.arguments[0]); print(call.arguments); - } - else{ + } else { ScaffoldMessenger.of(buildContext).showSnackBar(SnackBar( content: Text(call.arguments[0]), action: SnackBarAction( @@ -207,7 +216,6 @@ class ARSessionManager { }); } - /// Dispose the AR view on the platforms to pause the scenes and disconnect the platform handlers. /// You should call this before removing the AR view to prevent out of memory erros dispose() async { From 0e41ce86da34e51cb04860e1c51edd7a2b454ce5 Mon Sep 17 00:00:00 2001 From: Ansh Gandhi Date: Sun, 28 Sep 2025 19:10:17 -0700 Subject: [PATCH 2/2] Fix Android bug --- lib/managers/ar_session_manager.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/managers/ar_session_manager.dart b/lib/managers/ar_session_manager.dart index f60a06d..6a73497 100644 --- a/lib/managers/ar_session_manager.dart +++ b/lib/managers/ar_session_manager.dart @@ -51,7 +51,7 @@ class ARSessionManager { Future getCameraPose() async { try { if (Platform.isAndroid) { - final serializedCameraPose = await _channel.invokeMethod>('getCameraPose', {}); + final serializedCameraPose = await _channel.invokeMethod>('getCameraPose', {}); final position = serializedCameraPose!['position']; final rotation = serializedCameraPose!['rotation'];