diff --git a/LICENSE b/LICENSE index 91b5699615..6fede1936b 100644 --- a/LICENSE +++ b/LICENSE @@ -3740,6 +3740,95 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +------------------ + +Creative Commons CC0 1.0 Universal + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL +SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT +RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. +CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE +INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES +RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED +HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator and +subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later +claims of infringement build upon, modify, incorporate in other works, reuse +and redistribute as freely as possible in any form whatsoever and for any +purposes, including without limitation commercial purposes. These owners may +contribute to the Commons to promote the ideal of a free culture and the +further production of creative, cultural and scientific works, or to gain +reputation or greater distribution for their Work in part through the use and +efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with a +Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or her +Copyright and Related Rights in the Work and the meaning and intended legal +effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: + +i. the right to reproduce, adapt, distribute, perform, display, communicate, +and translate a Work; + +ii. moral rights retained by the original author(s) and/or performer(s); + +iii. publicity and privacy rights pertaining to a person's image or +likeness depicted in a Work; + +iv. rights protecting against unfair competition in regards to a Work, subject +to the limitations in paragraph 4(a), below; + +v. rights protecting the extraction, dissemination, use and reuse of data in a +Work; + +vi. database rights (such as those arising under Directive 96/9/EC of the +European Parliament and of the Council of 11 March 1996 on the legal +protection of databases, and under any national implementation thereof, +including any amended or successor version of such directive); and + +vii. other similar, equivalent or corresponding rights throughout the world +based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. + +a. No trademark or patent rights held by Affirmer are waived, abandoned, +surrendered, licensed or otherwise affected by this document. + +b. Affirmer offers the Work as-is and makes no representations or warranties +of any kind concerning the Work, express, implied, statutory or otherwise, +including without limitation warranties of title, merchantability, fitness for +a particular purpose, non infringement, or the absence of latent or other +defects, accuracy, or the present or absence of errors, whether or not +discoverable, all to the greatest extent permissible under applicable law. + +c. Affirmer disclaims responsibility for clearing rights of other persons that +may apply to the Work or any use thereof, including without limitation any +person's Copyright and Related Rights in the Work. Further, Affirmer +disclaims responsibility for obtaining any necessary consents, permissions or +other rights required for any use of the Work. + +d. Affirmer understands and acknowledges that Creative Commons is not a party +to this document and has no duty or obligation with respect to this CC0 or use +of the Work. + ******************************************************************************* Protocol Buffers ******************************************************************************* diff --git a/libraries/include/arcore_c_api.h b/libraries/include/arcore_c_api.h index 1c0f91caba..9b74c82da7 100644 --- a/libraries/include/arcore_c_api.h +++ b/libraries/include/arcore_c_api.h @@ -1938,6 +1938,41 @@ AR_DEFINE_ENUM(ArFutureState){ AR_FUTURE_STATE_DONE = 2, }; +// Describe the Geospatial anchor type. Do not use. For internal use only. +AR_DEFINE_ENUM(ArGeospatialAnchorType){ + AR_GEOSPATIAL_ANCHOR_TYPE_UNKNOWN = 0, + // Anchor with altitude relative to WGS84 Earth ellipsoid's mean sea level. + AR_GEOSPATIAL_ANCHOR_TYPE_WGS84 = 1, + // Anchor with altitude relative to ground floors or ground terrain. + AR_GEOSPATIAL_ANCHOR_TYPE_TERRAIN = 2, + // Anchor with altitude relative to building rooftops. + AR_GEOSPATIAL_ANCHOR_TYPE_ROOFTOP = 3, +}; + +// Describe the Geospatial Creator Platform. Do not use. For internal use only. +AR_DEFINE_ENUM(ArGeospatialCreatorPlatform){ + // The platform cannot be determined, because the client did not explicitly + // report this field. This is the default value. + AR_GEOSPATIAL_CREATOR_PLATFORM_UNKNOWN = 0, + + // Geospatial Creator is available on the platform, but was not used for + // this AR application. + AR_GEOSPATIAL_CREATOR_PLATFORM_DISABLED = 1, + + // Geospatial Creator was used, but the platform is not defined in an enum. + // This is useful for implementing backwards compatibility for 3rd party + // partners, though subsequent ARCore releases should have an appropriate + // enum value exposed. + AR_GEOSPATIAL_CREATOR_PLATFORM_OTHER = 2, + + // Geospatial Creator for the ARCore Extensions SDK was used to build this + // this AR application. + AR_GEOSPATIAL_CREATOR_PLATFORM_ARCORE_EXTENSIONS_UNITY = 3, + + // Geospatial Creator for Adobe Aero was used to build this AR application. + AR_GEOSPATIAL_CREATOR_PLATFORM_ADOBE_AERO = 4, +}; + /// @ingroup ArHostCloudAnchorFuture /// Handle to an asynchronous operation launched by /// @c ::ArSession_hostCloudAnchorAsync. See the the /// Depth API developer guide. /// @@ -4919,8 +4955,8 @@ ArStatus ArFrame_acquireDepthImage(const ArSession *session, /// href="https://developer.android.com/reference/android/hardware/HardwareBuffer#D_16"> /// HardwareBuffer.D_16, which is a single 16-bit plane at index 0, /// stored in little-endian format. Each pixel contains the distance in -/// millimeters to the camera plane, with the representable depth range between -/// 0 millimeters and 65535 millimeters, or about 65 meters. +/// millimeters along the camera principal axis, with the representable depth +/// range between 0 millimeters and 65535 millimeters, or about 65 meters. /// /// To extract distance from a depth map, see the @@ -4995,10 +5031,11 @@ ArStatus ArFrame_acquireDepthImage16Bits(const ArSession *session, /// @c ::ArFrame_acquireRawDepthConfidenceImage). /// /// The depth image has a single 16-bit plane at index 0, stored in -/// little-endian format. Each pixel contains the distance in millimeters to the -/// camera plane. Currently, the three most significant bits are always set to -/// 000. The remaining thirteen bits express values from 0 to 8191, representing -/// depth in millimeters. To extract distance from a depth map, see the /// Depth API developer guide. /// @@ -5087,8 +5124,8 @@ ArStatus ArFrame_acquireRawDepthImage(const ArSession *session, /// href="https://developer.android.com/reference/android/hardware/HardwareBuffer#D_16"> /// HardwareBuffer.D_16, which is a single 16-bit plane at index 0, /// stored in little-endian format. Each pixel contains the distance in -/// millimeters to the camera plane, with the representable depth range between -/// 0 millimeters and 65535 millimeters, or about 65 meters. +/// millimeters along the camera principal axis, with the representable depth +/// range between 0 millimeters and 65535 millimeters, or about 65 meters. /// /// To extract distance from a depth map, see the diff --git a/samples/augmented_faces_java/app/build.gradle b/samples/augmented_faces_java/app/build.gradle index 4ce8070ccf..52dd78dfe1 100644 --- a/samples/augmented_faces_java/app/build.gradle +++ b/samples/augmented_faces_java/app/build.gradle @@ -41,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/augmented_image_c/app/build.gradle b/samples/augmented_image_c/app/build.gradle index f9b876b6f1..79ea5ea6c2 100644 --- a/samples/augmented_image_c/app/build.gradle +++ b/samples/augmented_image_c/app/build.gradle @@ -68,8 +68,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' - natives 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' + natives 'com.google.ar:core:1.42.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' diff --git a/samples/augmented_image_java/app/build.gradle b/samples/augmented_image_java/app/build.gradle index b14c0b7d4a..e8affbeeeb 100644 --- a/samples/augmented_image_java/app/build.gradle +++ b/samples/augmented_image_java/app/build.gradle @@ -41,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/cloud_anchor_java/app/build.gradle b/samples/cloud_anchor_java/app/build.gradle index a1142a4e70..6fc40dcd1f 100644 --- a/samples/cloud_anchor_java/app/build.gradle +++ b/samples/cloud_anchor_java/app/build.gradle @@ -41,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/computervision_c/app/build.gradle b/samples/computervision_c/app/build.gradle index 5d4c17c10a..b1fe3e27cd 100644 --- a/samples/computervision_c/app/build.gradle +++ b/samples/computervision_c/app/build.gradle @@ -68,8 +68,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' - natives 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' + natives 'com.google.ar:core:1.42.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' diff --git a/samples/computervision_java/app/build.gradle b/samples/computervision_java/app/build.gradle index e71209d7f3..89a5ffd6db 100644 --- a/samples/computervision_java/app/build.gradle +++ b/samples/computervision_java/app/build.gradle @@ -41,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/geospatial_java/app/build.gradle b/samples/geospatial_java/app/build.gradle index 0a72b1b5af..3c6300e5be 100644 --- a/samples/geospatial_java/app/build.gradle +++ b/samples/geospatial_java/app/build.gradle @@ -41,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' implementation 'com.google.android.gms:play-services-location:19.0.1' implementation 'com.google.android.gms:play-services-auth:19.0.0' diff --git a/samples/hardwarebuffer_c/app/build.gradle b/samples/hardwarebuffer_c/app/build.gradle index 6f8674fe85..f8cd3c13ae 100644 --- a/samples/hardwarebuffer_c/app/build.gradle +++ b/samples/hardwarebuffer_c/app/build.gradle @@ -70,8 +70,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' - natives 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' + natives 'com.google.ar:core:1.42.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' diff --git a/samples/hardwarebuffer_java/app/build.gradle b/samples/hardwarebuffer_java/app/build.gradle index 1b9ca5eb16..15243530e3 100644 --- a/samples/hardwarebuffer_java/app/build.gradle +++ b/samples/hardwarebuffer_java/app/build.gradle @@ -66,8 +66,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' - natives 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' + natives 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/hello_ar_c/app/build.gradle b/samples/hello_ar_c/app/build.gradle index dfe148f0f3..63306cd66e 100644 --- a/samples/hello_ar_c/app/build.gradle +++ b/samples/hello_ar_c/app/build.gradle @@ -68,8 +68,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' - natives 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' + natives 'com.google.ar:core:1.42.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' diff --git a/samples/hello_ar_java/app/build.gradle b/samples/hello_ar_java/app/build.gradle index 60d4b82345..877a8c45a5 100644 --- a/samples/hello_ar_java/app/build.gradle +++ b/samples/hello_ar_java/app/build.gradle @@ -41,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/hello_ar_kotlin/app/build.gradle b/samples/hello_ar_kotlin/app/build.gradle index c76d149424..42366ff853 100644 --- a/samples/hello_ar_kotlin/app/build.gradle +++ b/samples/hello_ar_kotlin/app/build.gradle @@ -45,7 +45,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/hello_ar_vulkan_c/app/build.gradle b/samples/hello_ar_vulkan_c/app/build.gradle index 60e29007f9..1981654454 100644 --- a/samples/hello_ar_vulkan_c/app/build.gradle +++ b/samples/hello_ar_vulkan_c/app/build.gradle @@ -69,8 +69,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' - natives 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' + natives 'com.google.ar:core:1.42.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' diff --git a/samples/hello_eis_kotlin/app/build.gradle b/samples/hello_eis_kotlin/app/build.gradle index 21857add80..b4a4bd2882 100644 --- a/samples/hello_eis_kotlin/app/build.gradle +++ b/samples/hello_eis_kotlin/app/build.gradle @@ -45,7 +45,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/hello_eis_kotlin/app/src/main/AndroidManifest.xml b/samples/hello_eis_kotlin/app/src/main/AndroidManifest.xml index 9bb300ef06..ab4c218cfe 100644 --- a/samples/hello_eis_kotlin/app/src/main/AndroidManifest.xml +++ b/samples/hello_eis_kotlin/app/src/main/AndroidManifest.xml @@ -37,7 +37,7 @@ android:configChanges="orientation|screenSize" android:exported="true" android:theme="@style/Theme.AppCompat.NoActionBar" - android:screenOrientation="sensor"> + android:screenOrientation="user"> diff --git a/samples/ml_kotlin/app/build.gradle b/samples/ml_kotlin/app/build.gradle index 3144954c7e..46b3616a1d 100644 --- a/samples/ml_kotlin/app/build.gradle +++ b/samples/ml_kotlin/app/build.gradle @@ -62,14 +62,14 @@ dependencies { // Google Cloud Vision API via REST. implementation 'com.google.code.gson:gson:2.8.8' - implementation 'com.squareup.okhttp3:okhttp:3.12.0' + implementation 'com.squareup.okhttp3:okhttp:4.10.0' // MLKit implementation 'com.google.mlkit:object-detection:16.2.3' implementation 'com.google.mlkit:object-detection-custom:16.3.1' // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/kotlin/ml/classification/GoogleCloudVisionDetector.kt b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/kotlin/ml/classification/GoogleCloudVisionDetector.kt index d975db65e9..1ddd739636 100644 --- a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/kotlin/ml/classification/GoogleCloudVisionDetector.kt +++ b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/kotlin/ml/classification/GoogleCloudVisionDetector.kt @@ -29,7 +29,7 @@ import com.google.ar.core.examples.kotlin.ml.classification.utils.VertexUtils.to import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.JsonParser -import okhttp3.MediaType +import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.RequestBody @@ -61,13 +61,13 @@ class GoogleCloudVisionDetector(val activity: MainActivity, val apiKey: String) httpClient.newCall( Request.Builder() .url("https://vision.googleapis.com/v1/images:annotate?key=$apiKey") - .post(RequestBody.create(MediaType.parse("text/json"), body.toString())) + .post(RequestBody.create("text/json".toMediaType(), body.toString())) .build() ) // Execute Google Cloud Vision request and parse response body. req.execute().use { response -> - val responseBody = response.body()?.string() + val responseBody = response.body?.string() if (responseBody == null) { Log.e(TAG, "Failed to parse result body.") return emptyList() @@ -81,31 +81,37 @@ class GoogleCloudVisionDetector(val activity: MainActivity, val apiKey: String) // https://cloud.google.com/vision/docs/reference/rest/v1/AnnotateImageResponse#LocalizedObjectAnnotation val localisedObjectAnnotationsList = responseObject.getAsJsonArray("localizedObjectAnnotations") ?: return emptyList() - return localisedObjectAnnotationsList.map { it.asJsonObject }.map { annotation -> - // https://cloud.google.com/vision/docs/reference/rest/v1/projects.locations.products.referenceImages#BoundingPoly - val boundingPoly = annotation.get("boundingPoly").asJsonObject - val centerCoordinateNormalized = - VertexUtils.calculateCenterOfPoly(boundingPolyToCoordinateList(boundingPoly)) - val centerCoordinateAbsolute = - centerCoordinateNormalized.toAbsoluteCoordinates(rotatedImage.width, rotatedImage.height) - val rotatedCoordinates = - centerCoordinateAbsolute.rotateCoordinates( - rotatedImage.width, - rotatedImage.height, - imageRotation + return localisedObjectAnnotationsList + .map { it.asJsonObject } + .map { annotation -> + // https://cloud.google.com/vision/docs/reference/rest/v1/projects.locations.products.referenceImages#BoundingPoly + val boundingPoly = annotation.get("boundingPoly").asJsonObject + val centerCoordinateNormalized = + VertexUtils.calculateCenterOfPoly(boundingPolyToCoordinateList(boundingPoly)) + val centerCoordinateAbsolute = + centerCoordinateNormalized.toAbsoluteCoordinates( + rotatedImage.width, + rotatedImage.height + ) + val rotatedCoordinates = + centerCoordinateAbsolute.rotateCoordinates( + rotatedImage.width, + rotatedImage.height, + imageRotation + ) + DetectedObjectResult( + confidence = annotation.get("score").asFloat, + label = annotation.get("name").asString, + centerCoordinate = rotatedCoordinates ) - DetectedObjectResult( - confidence = annotation.get("score").asFloat, - label = annotation.get("name").asString, - centerCoordinate = rotatedCoordinates - ) - } + } } } /** * Creates an * [`images.annotate` request body](https://cloud.google.com/vision/docs/reference/rest/v1/images/annotate#request-body) + * * @param image a [ByteArray] representation of the image to upload to Google Cloud Vision API. */ fun createRequestBody(image: ByteArray): JsonObject { @@ -141,8 +147,12 @@ class GoogleCloudVisionDetector(val activity: MainActivity, val apiKey: String) * to [List]. */ fun boundingPolyToCoordinateList(boundingPoly: JsonObject): List { - return boundingPoly.get("normalizedVertices").asJsonArray.map { it.asJsonObject }.mapNotNull { - if (it["x"] == null || it["y"] == null) null else PointF(it["x"].asFloat, it["y"].asFloat) - } + return boundingPoly + .get("normalizedVertices") + .asJsonArray + .map { it.asJsonObject } + .mapNotNull { + if (it["x"] == null || it["y"] == null) null else PointF(it["x"].asFloat, it["y"].asFloat) + } } } diff --git a/samples/persistent_cloud_anchor_java/app/build.gradle b/samples/persistent_cloud_anchor_java/app/build.gradle index 38ca8296a3..04091ced8a 100644 --- a/samples/persistent_cloud_anchor_java/app/build.gradle +++ b/samples/persistent_cloud_anchor_java/app/build.gradle @@ -45,7 +45,7 @@ repositories { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/raw_depth_java/app/build.gradle b/samples/raw_depth_java/app/build.gradle index 0aa7d6f05c..8f2ba30491 100644 --- a/samples/raw_depth_java/app/build.gradle +++ b/samples/raw_depth_java/app/build.gradle @@ -42,7 +42,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/recording_playback_java/app/build.gradle b/samples/recording_playback_java/app/build.gradle index 0f1f01932c..1fc62106fd 100644 --- a/samples/recording_playback_java/app/build.gradle +++ b/samples/recording_playback_java/app/build.gradle @@ -41,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/semantics_java/app/build.gradle b/samples/semantics_java/app/build.gradle index d3f3d04376..b6f79113b2 100644 --- a/samples/semantics_java/app/build.gradle +++ b/samples/semantics_java/app/build.gradle @@ -41,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/shared_camera_java/app/build.gradle b/samples/shared_camera_java/app/build.gradle index 515d504d53..39c3653a53 100644 --- a/samples/shared_camera_java/app/build.gradle +++ b/samples/shared_camera_java/app/build.gradle @@ -42,7 +42,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.41.0' + implementation 'com.google.ar:core:1.42.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj