From 429ee466244f7f804bea5dd9040c2886ecfc8cec Mon Sep 17 00:00:00 2001 From: Jeremy Van Cuylenburg Date: Thu, 2 Mar 2023 20:28:29 +0000 Subject: [PATCH] ARCore Android SDK v1.36.0 --- .allstar/binary_artifacts.yaml | 17 + LICENSE | 419 ++++++++++++++++++ libraries/include/arcore_c_api.h | 5 +- samples/augmented_faces_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- samples/augmented_faces_java/build.gradle | 17 +- samples/augmented_faces_java/settings.gradle | 15 + samples/augmented_image_c/app/build.gradle | 19 +- samples/augmented_image_c/build.gradle | 17 +- samples/augmented_image_c/settings.gradle | 15 + samples/augmented_image_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- samples/augmented_image_java/build.gradle | 17 +- samples/augmented_image_java/settings.gradle | 15 + samples/cloud_anchor_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- samples/cloud_anchor_java/build.gradle | 17 +- samples/cloud_anchor_java/settings.gradle | 15 + samples/computervision_c/app/build.gradle | 19 +- samples/computervision_c/build.gradle | 17 +- samples/computervision_c/settings.gradle | 15 + samples/computervision_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- samples/computervision_java/build.gradle | 17 +- samples/computervision_java/settings.gradle | 15 + samples/geospatial_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- .../java/common/samplerender/Mesh.java | 13 +- .../java/common/samplerender/Shader.java | 19 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 15 + samples/geospatial_java/build.gradle | 17 +- samples/geospatial_java/settings.gradle | 15 + samples/hello_ar_c/app/build.gradle | 19 +- .../app/src/main/res/menu/settings_menu.xml | 15 + samples/hello_ar_c/build.gradle | 17 +- samples/hello_ar_c/settings.gradle | 15 + samples/hello_ar_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- .../java/common/samplerender/Mesh.java | 13 +- .../java/common/samplerender/Shader.java | 19 + .../app/src/main/res/menu/settings_menu.xml | 15 + samples/hello_ar_java/build.gradle | 17 +- samples/hello_ar_java/settings.gradle | 15 + samples/hello_ar_kotlin/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- .../java/common/samplerender/Mesh.java | 13 +- .../java/common/samplerender/Shader.java | 19 + samples/hello_ar_kotlin/build.gradle | 17 +- samples/hello_ar_kotlin/settings.gradle | 15 + samples/ml_kotlin/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- .../java/common/samplerender/Mesh.java | 13 +- .../java/common/samplerender/Shader.java | 19 + .../ml/classification/MLKitObjectDetector.kt | 4 +- samples/ml_kotlin/build.gradle | 17 +- samples/ml_kotlin/settings.gradle | 15 + .../app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- .../app/src/main/res/layout/anchor_item.xml | 15 + .../persistent_cloud_anchor_java/build.gradle | 17 +- .../settings.gradle | 15 + samples/raw_depth_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- samples/raw_depth_java/build.gradle | 17 +- samples/raw_depth_java/settings.gradle | 15 + .../recording_playback_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- samples/recording_playback_java/build.gradle | 17 +- .../recording_playback_java/settings.gradle | 15 + samples/shared_camera_java/app/build.gradle | 17 +- .../java/common/helpers/SnackbarHelper.java | 23 +- samples/shared_camera_java/build.gradle | 17 +- samples/shared_camera_java/settings.gradle | 15 + 73 files changed, 1559 insertions(+), 91 deletions(-) create mode 100644 .allstar/binary_artifacts.yaml diff --git a/.allstar/binary_artifacts.yaml b/.allstar/binary_artifacts.yaml new file mode 100644 index 000000000..b32757e12 --- /dev/null +++ b/.allstar/binary_artifacts.yaml @@ -0,0 +1,17 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +ignorePaths: +- tools/arcoreimg/linux/arcoreimg +- tools/arcoreimg/macos/arcoreimg +- tools/arcoreimg/windows/arcoreimg.exe diff --git a/LICENSE b/LICENSE index c31ff6482..98aa4a86f 100644 --- a/LICENSE +++ b/LICENSE @@ -444,6 +444,198 @@ Abseil limitations under the License. +******************************************************************************* +AndroidX annotation jvm library +******************************************************************************* + + Copyright (c) 2005-2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS ******************************************************************************* AndroidX annotation library ******************************************************************************* @@ -2363,6 +2555,27 @@ EXHIBIT A -Mozilla Public License. ------------------ +Files: + +Copyright (c) 2005-2010 Sam Stephenson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +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. + +------------------ + Files: kotlinc/lib/kotlin-compiler.jar The MIT License @@ -3193,6 +3406,212 @@ SUCH DAMAGE. $Id: execinfo.c,v 1.3 2004/07/19 05:21:09 sobomax Exp $ +******************************************************************************* +program_image_remapper +******************************************************************************* + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ******************************************************************************* tz database ******************************************************************************* diff --git a/libraries/include/arcore_c_api.h b/libraries/include/arcore_c_api.h index d8b8a6de5..81ac07253 100644 --- a/libraries/include/arcore_c_api.h +++ b/libraries/include/arcore_c_api.h @@ -193,7 +193,6 @@ /// - Orientation approximates the direction the user is facing in the EUS /// coordinate system. The EUS coordinate system has X+ pointing east, Y+ /// pointing up, and Z+ pointing south. - /// - Accuracy of the latitude, longitude, altitude, and heading are available /// as numeric confidence intervals where a large value (large interval) means /// low confidence and small value (small interval) means high confidence. @@ -2138,7 +2137,7 @@ void ArCameraConfigFilter_destroy(ArCameraConfigFilter *filter); /// @c ::ArCameraConfigTargetFps values, bitwise-or'd together void ArCameraConfigFilter_setTargetFps(const ArSession *session, ArCameraConfigFilter *filter, - const uint32_t fps_filters); + uint32_t fps_filters); /// @ingroup ArCameraConfigFilter /// Gets the desired framerates to allow. @@ -5187,8 +5186,6 @@ void ArAugmentedFace_getRegionPose(const ArSession *session, const ArAugmentedFaceRegionType region_type, ArPose *out_pose); -/// @} - /// @ingroup ArAugmentedFace /// Returns the pose of the center of the face. /// diff --git a/samples/augmented_faces_java/app/build.gradle b/samples/augmented_faces_java/app/build.gradle index aa95291af..c318ac82a 100644 --- a/samples/augmented_faces_java/app/build.gradle +++ b/samples/augmented_faces_java/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' android { @@ -26,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/augmented_faces_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java b/samples/augmented_faces_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/augmented_faces_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/augmented_faces_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/augmented_faces_java/build.gradle b/samples/augmented_faces_java/build.gradle index 7716e6a35..69a8ac13e 100644 --- a/samples/augmented_faces_java/build.gradle +++ b/samples/augmented_faces_java/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/augmented_faces_java/settings.gradle b/samples/augmented_faces_java/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/augmented_faces_java/settings.gradle +++ b/samples/augmented_faces_java/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/augmented_image_c/app/build.gradle b/samples/augmented_image_c/app/build.gradle index 8a95d5280..0ab2c8892 100644 --- a/samples/augmented_image_c/app/build.gradle +++ b/samples/augmented_image_c/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' /* @@ -53,8 +68,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' - natives 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' + natives 'com.google.ar:core:1.36.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' diff --git a/samples/augmented_image_c/build.gradle b/samples/augmented_image_c/build.gradle index 7716e6a35..69a8ac13e 100644 --- a/samples/augmented_image_c/build.gradle +++ b/samples/augmented_image_c/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/augmented_image_c/settings.gradle b/samples/augmented_image_c/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/augmented_image_c/settings.gradle +++ b/samples/augmented_image_c/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/augmented_image_java/app/build.gradle b/samples/augmented_image_java/app/build.gradle index e9a99e52d..86a302a14 100644 --- a/samples/augmented_image_java/app/build.gradle +++ b/samples/augmented_image_java/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' android { @@ -26,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/augmented_image_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java b/samples/augmented_image_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/augmented_image_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/augmented_image_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/augmented_image_java/build.gradle b/samples/augmented_image_java/build.gradle index 7716e6a35..69a8ac13e 100644 --- a/samples/augmented_image_java/build.gradle +++ b/samples/augmented_image_java/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/augmented_image_java/settings.gradle b/samples/augmented_image_java/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/augmented_image_java/settings.gradle +++ b/samples/augmented_image_java/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/cloud_anchor_java/app/build.gradle b/samples/cloud_anchor_java/app/build.gradle index 87b111a4c..0936f636f 100644 --- a/samples/cloud_anchor_java/app/build.gradle +++ b/samples/cloud_anchor_java/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' android { @@ -26,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/cloud_anchor_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java b/samples/cloud_anchor_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/cloud_anchor_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/cloud_anchor_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/cloud_anchor_java/build.gradle b/samples/cloud_anchor_java/build.gradle index 942acf54c..f3da2974f 100644 --- a/samples/cloud_anchor_java/build.gradle +++ b/samples/cloud_anchor_java/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/cloud_anchor_java/settings.gradle b/samples/cloud_anchor_java/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/cloud_anchor_java/settings.gradle +++ b/samples/cloud_anchor_java/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/computervision_c/app/build.gradle b/samples/computervision_c/app/build.gradle index 6bab7c940..312d21f0b 100644 --- a/samples/computervision_c/app/build.gradle +++ b/samples/computervision_c/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' /* @@ -53,8 +68,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' - natives 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' + natives 'com.google.ar:core:1.36.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' diff --git a/samples/computervision_c/build.gradle b/samples/computervision_c/build.gradle index 7716e6a35..69a8ac13e 100644 --- a/samples/computervision_c/build.gradle +++ b/samples/computervision_c/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/computervision_c/settings.gradle b/samples/computervision_c/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/computervision_c/settings.gradle +++ b/samples/computervision_c/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/computervision_java/app/build.gradle b/samples/computervision_java/app/build.gradle index abb3d120c..8072114ac 100644 --- a/samples/computervision_java/app/build.gradle +++ b/samples/computervision_java/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' android { @@ -26,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/computervision_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java b/samples/computervision_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/computervision_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/computervision_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/computervision_java/build.gradle b/samples/computervision_java/build.gradle index 7716e6a35..69a8ac13e 100644 --- a/samples/computervision_java/build.gradle +++ b/samples/computervision_java/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/computervision_java/settings.gradle b/samples/computervision_java/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/computervision_java/settings.gradle +++ b/samples/computervision_java/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/geospatial_java/app/build.gradle b/samples/geospatial_java/app/build.gradle index aff79f871..f471b2c25 100644 --- a/samples/geospatial_java/app/build.gradle +++ b/samples/geospatial_java/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' android { @@ -26,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.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/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java b/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java b/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java index c7b5ed917..eeff6da64 100644 --- a/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java +++ b/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java @@ -171,13 +171,18 @@ public void lowLevelDraw() { GLError.maybeThrowGLException("Failed to bind vertex array object", "glBindVertexArray"); if (indexBuffer == null) { // Sanity check for debugging - int numberOfVertices = vertexBuffers[0].getNumberOfVertices(); + int vertexCount = vertexBuffers[0].getNumberOfVertices(); for (int i = 1; i < vertexBuffers.length; ++i) { - if (vertexBuffers[i].getNumberOfVertices() != numberOfVertices) { - throw new IllegalStateException("Vertex buffers have mismatching numbers of vertices"); + int iterCount = vertexBuffers[i].getNumberOfVertices(); + if (iterCount != vertexCount) { + throw new IllegalStateException( + String.format( + "Vertex buffers have mismatching numbers of vertices ([0] has %d but [%d] has" + + " %d)", + vertexCount, i, iterCount)); } } - GLES30.glDrawArrays(primitiveMode.glesEnum, 0, numberOfVertices); + GLES30.glDrawArrays(primitiveMode.glesEnum, 0, vertexCount); GLError.maybeThrowGLException("Failed to draw vertex array object", "glDrawArrays"); } else { GLES30.glDrawElements( diff --git a/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java b/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java index daa049875..92fe162b9 100644 --- a/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java +++ b/samples/geospatial_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java @@ -75,6 +75,7 @@ private BlendFactor(int glesEnum) { private boolean depthTest = true; private boolean depthWrite = true; + private boolean cullFace = true; private BlendFactor sourceRgbBlend = BlendFactor.ONE; private BlendFactor destRgbBlend = BlendFactor.ZERO; private BlendFactor sourceAlphaBlend = BlendFactor.ONE; @@ -187,6 +188,17 @@ public Shader setDepthWrite(boolean depthWrite) { return this; } + /** + * Sets cull face state. + * + * @see glEnable(GL_CULL_FACE). + */ + public Shader setCullFace(boolean cullFace) { + this.cullFace = cullFace; + return this; + } + /** * Sets blending function. * @@ -411,6 +423,13 @@ public void lowLevelUse() { GLES30.glDisable(GLES30.GL_DEPTH_TEST); GLError.maybeThrowGLException("Failed to disable depth test", "glDisable"); } + if (cullFace) { + GLES30.glEnable(GLES30.GL_CULL_FACE); + GLError.maybeThrowGLException("Failed to enable backface culling", "glEnable"); + } else { + GLES30.glDisable(GLES30.GL_CULL_FACE); + GLError.maybeThrowGLException("Failed to disable backface culling", "glDisable"); + } try { // Remove all non-texture uniforms from the map after setting them, since they're stored as // part of the program. diff --git a/samples/geospatial_java/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/samples/geospatial_java/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 96cb96e03..c23385030 100644 --- a/samples/geospatial_java/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/samples/geospatial_java/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,4 +1,19 @@ + diff --git a/samples/geospatial_java/build.gradle b/samples/geospatial_java/build.gradle index 7716e6a35..69a8ac13e 100644 --- a/samples/geospatial_java/build.gradle +++ b/samples/geospatial_java/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/geospatial_java/settings.gradle b/samples/geospatial_java/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/geospatial_java/settings.gradle +++ b/samples/geospatial_java/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/hello_ar_c/app/build.gradle b/samples/hello_ar_c/app/build.gradle index c2634963f..ddeb321f4 100644 --- a/samples/hello_ar_c/app/build.gradle +++ b/samples/hello_ar_c/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' /* @@ -53,8 +68,8 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' - natives 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' + natives 'com.google.ar:core:1.36.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' diff --git a/samples/hello_ar_c/app/src/main/res/menu/settings_menu.xml b/samples/hello_ar_c/app/src/main/res/menu/settings_menu.xml index 249d7b4f8..e97c915e9 100644 --- a/samples/hello_ar_c/app/src/main/res/menu/settings_menu.xml +++ b/samples/hello_ar_c/app/src/main/res/menu/settings_menu.xml @@ -1,4 +1,19 @@ + diff --git a/samples/hello_ar_c/build.gradle b/samples/hello_ar_c/build.gradle index 7716e6a35..69a8ac13e 100644 --- a/samples/hello_ar_c/build.gradle +++ b/samples/hello_ar_c/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/hello_ar_c/settings.gradle b/samples/hello_ar_c/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/hello_ar_c/settings.gradle +++ b/samples/hello_ar_c/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/hello_ar_java/app/build.gradle b/samples/hello_ar_java/app/build.gradle index 10b22cc90..e7b438f38 100644 --- a/samples/hello_ar_java/app/build.gradle +++ b/samples/hello_ar_java/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' android { @@ -26,7 +41,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java b/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java b/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java index c7b5ed917..eeff6da64 100644 --- a/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java +++ b/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java @@ -171,13 +171,18 @@ public void lowLevelDraw() { GLError.maybeThrowGLException("Failed to bind vertex array object", "glBindVertexArray"); if (indexBuffer == null) { // Sanity check for debugging - int numberOfVertices = vertexBuffers[0].getNumberOfVertices(); + int vertexCount = vertexBuffers[0].getNumberOfVertices(); for (int i = 1; i < vertexBuffers.length; ++i) { - if (vertexBuffers[i].getNumberOfVertices() != numberOfVertices) { - throw new IllegalStateException("Vertex buffers have mismatching numbers of vertices"); + int iterCount = vertexBuffers[i].getNumberOfVertices(); + if (iterCount != vertexCount) { + throw new IllegalStateException( + String.format( + "Vertex buffers have mismatching numbers of vertices ([0] has %d but [%d] has" + + " %d)", + vertexCount, i, iterCount)); } } - GLES30.glDrawArrays(primitiveMode.glesEnum, 0, numberOfVertices); + GLES30.glDrawArrays(primitiveMode.glesEnum, 0, vertexCount); GLError.maybeThrowGLException("Failed to draw vertex array object", "glDrawArrays"); } else { GLES30.glDrawElements( diff --git a/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java b/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java index daa049875..92fe162b9 100644 --- a/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java +++ b/samples/hello_ar_java/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java @@ -75,6 +75,7 @@ private BlendFactor(int glesEnum) { private boolean depthTest = true; private boolean depthWrite = true; + private boolean cullFace = true; private BlendFactor sourceRgbBlend = BlendFactor.ONE; private BlendFactor destRgbBlend = BlendFactor.ZERO; private BlendFactor sourceAlphaBlend = BlendFactor.ONE; @@ -187,6 +188,17 @@ public Shader setDepthWrite(boolean depthWrite) { return this; } + /** + * Sets cull face state. + * + * @see glEnable(GL_CULL_FACE). + */ + public Shader setCullFace(boolean cullFace) { + this.cullFace = cullFace; + return this; + } + /** * Sets blending function. * @@ -411,6 +423,13 @@ public void lowLevelUse() { GLES30.glDisable(GLES30.GL_DEPTH_TEST); GLError.maybeThrowGLException("Failed to disable depth test", "glDisable"); } + if (cullFace) { + GLES30.glEnable(GLES30.GL_CULL_FACE); + GLError.maybeThrowGLException("Failed to enable backface culling", "glEnable"); + } else { + GLES30.glDisable(GLES30.GL_CULL_FACE); + GLError.maybeThrowGLException("Failed to disable backface culling", "glDisable"); + } try { // Remove all non-texture uniforms from the map after setting them, since they're stored as // part of the program. diff --git a/samples/hello_ar_java/app/src/main/res/menu/settings_menu.xml b/samples/hello_ar_java/app/src/main/res/menu/settings_menu.xml index 249d7b4f8..e97c915e9 100644 --- a/samples/hello_ar_java/app/src/main/res/menu/settings_menu.xml +++ b/samples/hello_ar_java/app/src/main/res/menu/settings_menu.xml @@ -1,4 +1,19 @@ + diff --git a/samples/hello_ar_java/build.gradle b/samples/hello_ar_java/build.gradle index 7716e6a35..69a8ac13e 100644 --- a/samples/hello_ar_java/build.gradle +++ b/samples/hello_ar_java/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() diff --git a/samples/hello_ar_java/settings.gradle b/samples/hello_ar_java/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/hello_ar_java/settings.gradle +++ b/samples/hello_ar_java/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/hello_ar_kotlin/app/build.gradle b/samples/hello_ar_kotlin/app/build.gradle index 2a033ce1f..972867dd4 100644 --- a/samples/hello_ar_kotlin/app/build.gradle +++ b/samples/hello_ar_kotlin/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' @@ -30,7 +45,7 @@ android { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java b/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java b/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java index c7b5ed917..eeff6da64 100644 --- a/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java +++ b/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java @@ -171,13 +171,18 @@ public void lowLevelDraw() { GLError.maybeThrowGLException("Failed to bind vertex array object", "glBindVertexArray"); if (indexBuffer == null) { // Sanity check for debugging - int numberOfVertices = vertexBuffers[0].getNumberOfVertices(); + int vertexCount = vertexBuffers[0].getNumberOfVertices(); for (int i = 1; i < vertexBuffers.length; ++i) { - if (vertexBuffers[i].getNumberOfVertices() != numberOfVertices) { - throw new IllegalStateException("Vertex buffers have mismatching numbers of vertices"); + int iterCount = vertexBuffers[i].getNumberOfVertices(); + if (iterCount != vertexCount) { + throw new IllegalStateException( + String.format( + "Vertex buffers have mismatching numbers of vertices ([0] has %d but [%d] has" + + " %d)", + vertexCount, i, iterCount)); } } - GLES30.glDrawArrays(primitiveMode.glesEnum, 0, numberOfVertices); + GLES30.glDrawArrays(primitiveMode.glesEnum, 0, vertexCount); GLError.maybeThrowGLException("Failed to draw vertex array object", "glDrawArrays"); } else { GLES30.glDrawElements( diff --git a/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java b/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java index daa049875..92fe162b9 100644 --- a/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java +++ b/samples/hello_ar_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java @@ -75,6 +75,7 @@ private BlendFactor(int glesEnum) { private boolean depthTest = true; private boolean depthWrite = true; + private boolean cullFace = true; private BlendFactor sourceRgbBlend = BlendFactor.ONE; private BlendFactor destRgbBlend = BlendFactor.ZERO; private BlendFactor sourceAlphaBlend = BlendFactor.ONE; @@ -187,6 +188,17 @@ public Shader setDepthWrite(boolean depthWrite) { return this; } + /** + * Sets cull face state. + * + * @see glEnable(GL_CULL_FACE). + */ + public Shader setCullFace(boolean cullFace) { + this.cullFace = cullFace; + return this; + } + /** * Sets blending function. * @@ -411,6 +423,13 @@ public void lowLevelUse() { GLES30.glDisable(GLES30.GL_DEPTH_TEST); GLError.maybeThrowGLException("Failed to disable depth test", "glDisable"); } + if (cullFace) { + GLES30.glEnable(GLES30.GL_CULL_FACE); + GLError.maybeThrowGLException("Failed to enable backface culling", "glEnable"); + } else { + GLES30.glDisable(GLES30.GL_CULL_FACE); + GLError.maybeThrowGLException("Failed to disable backface culling", "glDisable"); + } try { // Remove all non-texture uniforms from the map after setting them, since they're stored as // part of the program. diff --git a/samples/hello_ar_kotlin/build.gradle b/samples/hello_ar_kotlin/build.gradle index 151dadbb6..a2e77d06e 100644 --- a/samples/hello_ar_kotlin/build.gradle +++ b/samples/hello_ar_kotlin/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.5.30' repositories { diff --git a/samples/hello_ar_kotlin/settings.gradle b/samples/hello_ar_kotlin/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/hello_ar_kotlin/settings.gradle +++ b/samples/hello_ar_kotlin/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/ml_kotlin/app/build.gradle b/samples/ml_kotlin/app/build.gradle index cb7f68613..6fa994711 100644 --- a/samples/ml_kotlin/app/build.gradle +++ b/samples/ml_kotlin/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ plugins { id 'com.android.application' id 'kotlin-android' @@ -54,7 +69,7 @@ dependencies { implementation 'com.google.mlkit:object-detection-custom:16.3.1' // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.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/java/common/helpers/SnackbarHelper.java b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java index c7b5ed917..eeff6da64 100644 --- a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java +++ b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Mesh.java @@ -171,13 +171,18 @@ public void lowLevelDraw() { GLError.maybeThrowGLException("Failed to bind vertex array object", "glBindVertexArray"); if (indexBuffer == null) { // Sanity check for debugging - int numberOfVertices = vertexBuffers[0].getNumberOfVertices(); + int vertexCount = vertexBuffers[0].getNumberOfVertices(); for (int i = 1; i < vertexBuffers.length; ++i) { - if (vertexBuffers[i].getNumberOfVertices() != numberOfVertices) { - throw new IllegalStateException("Vertex buffers have mismatching numbers of vertices"); + int iterCount = vertexBuffers[i].getNumberOfVertices(); + if (iterCount != vertexCount) { + throw new IllegalStateException( + String.format( + "Vertex buffers have mismatching numbers of vertices ([0] has %d but [%d] has" + + " %d)", + vertexCount, i, iterCount)); } } - GLES30.glDrawArrays(primitiveMode.glesEnum, 0, numberOfVertices); + GLES30.glDrawArrays(primitiveMode.glesEnum, 0, vertexCount); GLError.maybeThrowGLException("Failed to draw vertex array object", "glDrawArrays"); } else { GLES30.glDrawElements( diff --git a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java index daa049875..92fe162b9 100644 --- a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java +++ b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/java/common/samplerender/Shader.java @@ -75,6 +75,7 @@ private BlendFactor(int glesEnum) { private boolean depthTest = true; private boolean depthWrite = true; + private boolean cullFace = true; private BlendFactor sourceRgbBlend = BlendFactor.ONE; private BlendFactor destRgbBlend = BlendFactor.ZERO; private BlendFactor sourceAlphaBlend = BlendFactor.ONE; @@ -187,6 +188,17 @@ public Shader setDepthWrite(boolean depthWrite) { return this; } + /** + * Sets cull face state. + * + * @see glEnable(GL_CULL_FACE). + */ + public Shader setCullFace(boolean cullFace) { + this.cullFace = cullFace; + return this; + } + /** * Sets blending function. * @@ -411,6 +423,13 @@ public void lowLevelUse() { GLES30.glDisable(GLES30.GL_DEPTH_TEST); GLError.maybeThrowGLException("Failed to disable depth test", "glDisable"); } + if (cullFace) { + GLES30.glEnable(GLES30.GL_CULL_FACE); + GLError.maybeThrowGLException("Failed to enable backface culling", "glEnable"); + } else { + GLES30.glDisable(GLES30.GL_CULL_FACE); + GLError.maybeThrowGLException("Failed to disable backface culling", "glDisable"); + } try { // Remove all non-texture uniforms from the map after setting them, since they're stored as // part of the program. diff --git a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/kotlin/ml/classification/MLKitObjectDetector.kt b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/kotlin/ml/classification/MLKitObjectDetector.kt index 432b6a249..0d2b76a11 100644 --- a/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/kotlin/ml/classification/MLKitObjectDetector.kt +++ b/samples/ml_kotlin/app/src/main/java/com/google/ar/core/examples/kotlin/ml/classification/MLKitObjectDetector.kt @@ -25,7 +25,7 @@ import com.google.mlkit.vision.common.InputImage import com.google.mlkit.vision.objects.ObjectDetection import com.google.mlkit.vision.objects.custom.CustomObjectDetectorOptions import com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions -import kotlinx.coroutines.tasks.asDeferred +import kotlinx.coroutines.tasks.await /** Analyzes an image using ML Kit. */ class MLKitObjectDetector(context: Activity) : ObjectDetector(context) { @@ -55,7 +55,7 @@ class MLKitObjectDetector(context: Activity) : ObjectDetector(context) { val inputImage = InputImage.fromBitmap(rotatedImage, 0) - val mlKitDetectedObjects = detector.process(inputImage).asDeferred().await() + val mlKitDetectedObjects = detector.process(inputImage).await() return mlKitDetectedObjects.mapNotNull { obj -> val bestLabel = obj.labels.maxByOrNull { label -> label.confidence } ?: return@mapNotNull null val coords = diff --git a/samples/ml_kotlin/build.gradle b/samples/ml_kotlin/build.gradle index 151dadbb6..a2e77d06e 100644 --- a/samples/ml_kotlin/build.gradle +++ b/samples/ml_kotlin/build.gradle @@ -1,5 +1,20 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.5.30' repositories { diff --git a/samples/ml_kotlin/settings.gradle b/samples/ml_kotlin/settings.gradle index e7b4def49..67f33c68b 100644 --- a/samples/ml_kotlin/settings.gradle +++ b/samples/ml_kotlin/settings.gradle @@ -1 +1,16 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ include ':app' diff --git a/samples/persistent_cloud_anchor_java/app/build.gradle b/samples/persistent_cloud_anchor_java/app/build.gradle index 08855bec7..f227df5eb 100644 --- a/samples/persistent_cloud_anchor_java/app/build.gradle +++ b/samples/persistent_cloud_anchor_java/app/build.gradle @@ -1,3 +1,18 @@ +/* + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ apply plugin: 'com.android.application' android { @@ -30,7 +45,7 @@ repositories { dependencies { // ARCore (Google Play Services for AR) library. - implementation 'com.google.ar:core:1.35.0' + implementation 'com.google.ar:core:1.36.0' // Obj - a simple Wavefront OBJ file loader // https://github.com/javagl/Obj diff --git a/samples/persistent_cloud_anchor_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java b/samples/persistent_cloud_anchor_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java index f83e9eb0b..cc493013e 100644 --- a/samples/persistent_cloud_anchor_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java +++ b/samples/persistent_cloud_anchor_java/app/src/main/java/com/google/ar/core/examples/java/common/helpers/SnackbarHelper.java @@ -50,6 +50,16 @@ public void showMessageWithDismiss(Activity activity, String message) { show(activity, message, DismissBehavior.SHOW); } + /** Shows a snackbar with a given message for Snackbar.LENGTH_SHORT milliseconds */ + public void showMessageForShortDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_SHORT); + } + + /** Shows a snackbar with a given message for Snackbar.LENGTH_LONG milliseconds */ + public void showMessageForLongDuration(Activity activity, String message) { + show(activity, message, DismissBehavior.SHOW, Snackbar.LENGTH_LONG); + } + /** * Shows a snackbar with a given error message. When dismissed, will finish the activity. Useful * for notifying errors, where no further interaction with the activity is possible. @@ -96,8 +106,15 @@ public void setParentView(View snackbarView) { this.snackbarView = snackbarView; } + private void show(Activity activity, String message, DismissBehavior dismissBehavior) { + show(activity, message, dismissBehavior, Snackbar.LENGTH_INDEFINITE); + } + private void show( - final Activity activity, final String message, final DismissBehavior dismissBehavior) { + final Activity activity, + final String message, + final DismissBehavior dismissBehavior, + int duration) { activity.runOnUiThread( new Runnable() { @Override @@ -108,9 +125,9 @@ public void run() { ? activity.findViewById(android.R.id.content) : snackbarView, message, - Snackbar.LENGTH_INDEFINITE); + duration); messageSnackbar.getView().setBackgroundColor(BACKGROUND_COLOR); - if (dismissBehavior != DismissBehavior.HIDE) { + if (dismissBehavior != DismissBehavior.HIDE && duration == Snackbar.LENGTH_INDEFINITE) { messageSnackbar.setAction( "Dismiss", new View.OnClickListener() { diff --git a/samples/persistent_cloud_anchor_java/app/src/main/res/layout/anchor_item.xml b/samples/persistent_cloud_anchor_java/app/src/main/res/layout/anchor_item.xml index 23245bed2..d18cfbea8 100644 --- a/samples/persistent_cloud_anchor_java/app/src/main/res/layout/anchor_item.xml +++ b/samples/persistent_cloud_anchor_java/app/src/main/res/layout/anchor_item.xml @@ -1,4 +1,19 @@ +