diff --git a/Completed/app/build.gradle b/Completed/app/build.gradle index 58206f2..f16c558 100644 --- a/Completed/app/build.gradle +++ b/Completed/app/build.gradle @@ -16,14 +16,14 @@ limitations under the License. apply plugin: 'com.android.application' android { - compileSdkVersion 27 + compileSdkVersion 28 defaultConfig { applicationId "com.google.devrel.ar.codelab" minSdkVersion 24 - targetSdkVersion 27 + targetSdkVersion 28 versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { @@ -39,14 +39,14 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:27.1.1' - implementation 'com.android.support.constraint:constraint-layout:1.1.0' - implementation 'com.android.support:design:27.1.1' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'com.google.android.material:material:1.0.0' testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' - implementation "com.google.ar.sceneform.ux:sceneform-ux:1.8.0" - implementation "com.google.ar.sceneform:animation:1.8.0" + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.11.0' + implementation 'com.google.ar.sceneform:animation:1.11.0' } apply plugin: 'com.google.ar.sceneform.plugin' diff --git a/Completed/app/src/androidTest/java/com/google/devrel/ar/codelab/ExampleInstrumentedTest.java b/Completed/app/src/androidTest/java/com/google/devrel/ar/codelab/ExampleInstrumentedTest.java index 1cad292..661b4b1 100644 --- a/Completed/app/src/androidTest/java/com/google/devrel/ar/codelab/ExampleInstrumentedTest.java +++ b/Completed/app/src/androidTest/java/com/google/devrel/ar/codelab/ExampleInstrumentedTest.java @@ -16,8 +16,8 @@ package com.google.devrel.ar.codelab; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/Completed/app/src/main/AndroidManifest.xml b/Completed/app/src/main/AndroidManifest.xml index 3dff2f5..2e0738f 100644 --- a/Completed/app/src/main/AndroidManifest.xml +++ b/Completed/app/src/main/AndroidManifest.xml @@ -28,6 +28,9 @@ limitations under the License. android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> + + + - + diff --git a/Completed/app/src/main/assets/Cabin.sfb b/Completed/app/src/main/assets/Cabin.sfb index 3f23606..44c2581 100644 Binary files a/Completed/app/src/main/assets/Cabin.sfb and b/Completed/app/src/main/assets/Cabin.sfb differ diff --git a/Completed/app/src/main/assets/House.sfb b/Completed/app/src/main/assets/House.sfb index 0054b6d..00b984a 100644 Binary files a/Completed/app/src/main/assets/House.sfb and b/Completed/app/src/main/assets/House.sfb differ diff --git a/Completed/app/src/main/assets/andy.sfb b/Completed/app/src/main/assets/andy.sfb index deb2a40..82dcc25 100644 Binary files a/Completed/app/src/main/assets/andy.sfb and b/Completed/app/src/main/assets/andy.sfb differ diff --git a/Completed/app/src/main/assets/andy_dance.sfb b/Completed/app/src/main/assets/andy_dance.sfb index f5f973f..91b5c4c 100644 Binary files a/Completed/app/src/main/assets/andy_dance.sfb and b/Completed/app/src/main/assets/andy_dance.sfb differ diff --git a/Completed/app/src/main/assets/igloo.sfb b/Completed/app/src/main/assets/igloo.sfb index cb3e571..c57fbd2 100644 Binary files a/Completed/app/src/main/assets/igloo.sfb and b/Completed/app/src/main/assets/igloo.sfb differ diff --git a/Completed/app/src/main/java/com/google/devrel/ar/codelab/MainActivity.java b/Completed/app/src/main/java/com/google/devrel/ar/codelab/MainActivity.java index 16c681e..a1acdc4 100644 --- a/Completed/app/src/main/java/com/google/devrel/ar/codelab/MainActivity.java +++ b/Completed/app/src/main/java/com/google/devrel/ar/codelab/MainActivity.java @@ -24,12 +24,12 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v4.content.FileProvider; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.snackbar.Snackbar; +import androidx.core.content.FileProvider; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import android.view.PixelCopy; import android.view.SurfaceHolder; import android.view.View; @@ -80,10 +80,10 @@ public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); - FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -162,7 +162,6 @@ private void takePhoto() { intent.setDataAndType(photoURI, "image/*"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(intent); - }); snackbar.show(); } else { @@ -194,12 +193,15 @@ private void onUpdate() { } } } + private boolean updateTracking() { Frame frame = fragment.getArSceneView().getArFrame(); boolean wasTracking = isTracking; - isTracking = frame.getCamera().getTrackingState() == TrackingState.TRACKING; + isTracking = frame != null && + frame.getCamera().getTrackingState() == TrackingState.TRACKING; return isTracking != wasTracking; } + private boolean updateHitTest() { Frame frame = fragment.getArSceneView().getArFrame(); android.graphics.Point pt = getScreenCenter(); @@ -210,8 +212,8 @@ private boolean updateHitTest() { hits = frame.hitTest(pt.x, pt.y); for (HitResult hit : hits) { Trackable trackable = hit.getTrackable(); - if ((trackable instanceof Plane && - ((Plane) trackable).isPoseInPolygon(hit.getHitPose()))) { + if (trackable instanceof Plane && + ((Plane) trackable).isPoseInPolygon(hit.getHitPose())) { isHitting = true; break; } @@ -246,13 +248,14 @@ public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } + private void initializeGallery() { LinearLayout gallery = findViewById(R.id.gallery_layout); ImageView andy = new ImageView(this); andy.setImageResource(R.drawable.droid_thumb); andy.setContentDescription("andy"); - andy.setOnClickListener(view ->{addObject( Uri.parse("andy_dance.sfb"));}); + andy.setOnClickListener(view ->{addObject(Uri.parse("andy_dance.sfb"));}); gallery.addView(andy); ImageView cabin = new ImageView(this); @@ -311,7 +314,6 @@ public void addNodeToScene(Anchor anchor, ModelRenderable renderable) { startAnimation(node, renderable); } - public void startAnimation(TransformableNode node, ModelRenderable renderable){ if(renderable==null || renderable.getAnimationDataCount() == 0) { return; diff --git a/Completed/app/src/main/java/com/google/devrel/ar/codelab/PointerDrawable.java b/Completed/app/src/main/java/com/google/devrel/ar/codelab/PointerDrawable.java index c2e851c..53c7143 100644 --- a/Completed/app/src/main/java/com/google/devrel/ar/codelab/PointerDrawable.java +++ b/Completed/app/src/main/java/com/google/devrel/ar/codelab/PointerDrawable.java @@ -19,21 +19,23 @@ import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; +import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; public class PointerDrawable extends Drawable { private final Paint paint = new Paint(); private boolean enabled; + @Override public void draw(@NonNull Canvas canvas) { - float cx = canvas.getWidth()/2; - float cy = canvas.getHeight()/2; + float cx = canvas.getWidth() / 2; + float cy = canvas.getHeight() / 2; if (enabled) { paint.setColor(Color.GREEN); canvas.drawCircle(cx, cy, 10, paint); - }else { + } else { paint.setColor(Color.GRAY); canvas.drawText("X", cx, cy, paint); } @@ -51,8 +53,9 @@ public void setColorFilter(@Nullable ColorFilter colorFilter) { @Override public int getOpacity() { - return 0; + return PixelFormat.UNKNOWN; } + public boolean isEnabled() { return enabled; } diff --git a/Completed/app/src/main/res/layout/activity_main.xml b/Completed/app/src/main/res/layout/activity_main.xml index 09ae9fa..999e2e8 100644 --- a/Completed/app/src/main/res/layout/activity_main.xml +++ b/Completed/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,5 @@ - - - - + - - + diff --git a/Completed/app/src/main/res/layout/content_main.xml b/Completed/app/src/main/res/layout/content_main.xml index df2290b..1e2de95 100644 --- a/Completed/app/src/main/res/layout/content_main.xml +++ b/Completed/app/src/main/res/layout/content_main.xml @@ -1,5 +1,5 @@ - + app:layout_constraintVertical_weight="9"/> + - + diff --git a/Completed/build.gradle b/Completed/build.gradle index 295685b..cc5952f 100644 --- a/Completed/build.gradle +++ b/Completed/build.gradle @@ -22,11 +22,11 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.4.0' + classpath 'com.android.tools.build:gradle:3.5.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files - classpath 'com.google.ar.sceneform:plugin:1.8.0' + classpath 'com.google.ar.sceneform:plugin:1.11.0' } } allprojects { diff --git a/Completed/gradle.properties b/Completed/gradle.properties index 743d692..199d16e 100644 --- a/Completed/gradle.properties +++ b/Completed/gradle.properties @@ -11,3 +11,10 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true + diff --git a/Completed/gradle/wrapper/gradle-wrapper.jar b/Completed/gradle/wrapper/gradle-wrapper.jar index 7a3265e..f6b961f 100644 Binary files a/Completed/gradle/wrapper/gradle-wrapper.jar and b/Completed/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Completed/gradle/wrapper/gradle-wrapper.properties b/Completed/gradle/wrapper/gradle-wrapper.properties index 724f60c..383dfd9 100644 --- a/Completed/gradle/wrapper/gradle-wrapper.properties +++ b/Completed/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon May 06 10:47:02 PDT 2019 +#Sat Sep 07 21:33:18 PDT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip