summaryrefslogtreecommitdiffstats
path: root/tests/Assist/src
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2015-04-01 13:37:39 -0700
committerJorim Jaggi <jjaggi@google.com>2015-04-03 11:12:44 -0700
commit6e9fa1a4b74dc4e35470739cfd64881cb9bcc7b1 (patch)
tree1da9f58bf17952a7657bcc4d727102cfd94d539b /tests/Assist/src
parent2fdeeabe78b0f54f3163b1b3741ac813828b3511 (diff)
downloadframeworks_base-6e9fa1a4b74dc4e35470739cfd64881cb9bcc7b1.zip
frameworks_base-6e9fa1a4b74dc4e35470739cfd64881cb9bcc7b1.tar.gz
frameworks_base-6e9fa1a4b74dc4e35470739cfd64881cb9bcc7b1.tar.bz2
Add test assist to implement motion study
This change introduces another test VoiceInteractionService, Assist, to test the full SystemUI -> assist layer motion when invoking assist. The old assist test project was renamed to LegacyAssist. Change-Id: Iddf8a36a76083625f8aa4faecef1930e9952d05b
Diffstat (limited to 'tests/Assist/src')
-rw-r--r--tests/Assist/src/com/android/test/assist/AssistInteractionService.java23
-rw-r--r--tests/Assist/src/com/android/test/assist/AssistInteractionSession.java181
-rw-r--r--tests/Assist/src/com/android/test/assist/AssistInteractionSessionService.java28
-rw-r--r--tests/Assist/src/com/android/test/assist/AssistRecognitionService.java38
-rw-r--r--tests/Assist/src/com/android/test/assist/ScrimView.java42
5 files changed, 312 insertions, 0 deletions
diff --git a/tests/Assist/src/com/android/test/assist/AssistInteractionService.java b/tests/Assist/src/com/android/test/assist/AssistInteractionService.java
new file mode 100644
index 0000000..e6a6713
--- /dev/null
+++ b/tests/Assist/src/com/android/test/assist/AssistInteractionService.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2015 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.
+ * 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
+ */
+
+package com.android.test.assist;
+
+import android.service.voice.VoiceInteractionService;
+
+public class AssistInteractionService extends VoiceInteractionService {
+
+}
diff --git a/tests/Assist/src/com/android/test/assist/AssistInteractionSession.java b/tests/Assist/src/com/android/test/assist/AssistInteractionSession.java
new file mode 100644
index 0000000..0b522c0
--- /dev/null
+++ b/tests/Assist/src/com/android/test/assist/AssistInteractionSession.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2015 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.
+ * 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
+ */
+
+package com.android.test.assist;
+
+import android.animation.Animator;
+import android.animation.RevealAnimator;
+import android.animation.ValueAnimator;
+import android.app.VoiceInteractor;
+import android.content.Context;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Handler;
+import android.service.voice.VoiceInteractionService;
+import android.service.voice.VoiceInteractionSession;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewAnimationUtils;
+import android.view.ViewTreeObserver;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+
+/**
+ * Sample session to show test assist transition.
+ */
+public class AssistInteractionSession extends VoiceInteractionSession {
+
+ private View mScrim;
+ private View mBackground;
+ private View mNavbarScrim;
+ private View mCard1;
+ private View mCard2;
+
+ private float mDensity;
+
+ public AssistInteractionSession(Context context) {
+ super(context);
+ }
+
+ public AssistInteractionSession(Context context, Handler handler) {
+ super(context, handler);
+ }
+
+ @Override
+ public void onConfirm(Caller caller,
+ Request request, CharSequence prompt, Bundle extras) {
+
+ }
+
+ @Override
+ public void onPickOption(Caller caller,
+ Request request, CharSequence prompt,
+ VoiceInteractor.PickOptionRequest.Option[] options, Bundle extras) {
+
+ }
+
+ @Override
+ public void onCommand(Caller caller,
+ Request request, String command, Bundle extras) {
+
+ }
+
+ @Override
+ public void onCreate(Bundle args) {
+ super.onCreate(args);
+
+ // Simulate slowness of Assist app
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onCancel(Request request) {
+
+ }
+
+ @Override
+ public View onCreateContentView() {
+ View v = getLayoutInflater().inflate(R.layout.assist, null);
+ mScrim = v.findViewById(R.id.scrim);
+ mBackground = v.findViewById(R.id.background);
+ mDensity = mScrim.getResources().getDisplayMetrics().density;
+ mCard1 = v.findViewById(R.id.card1);
+ mCard2 = v.findViewById(R.id.card2);
+ mNavbarScrim = v.findViewById(R.id.navbar_scrim);
+ return v;
+ }
+
+ @Override
+ public void onShow(Bundle args, int showFlags) {
+ super.onShow(args, showFlags);
+ if ((showFlags & VoiceInteractionService.START_SOURCE_ASSIST_GESTURE) != 0) {
+ mBackground.getViewTreeObserver().addOnPreDrawListener(
+ new ViewTreeObserver.OnPreDrawListener() {
+ @Override
+ public boolean onPreDraw() {
+ mBackground.getViewTreeObserver().removeOnPreDrawListener(this);
+ playAssistAnimation();
+ return true;
+ }
+ });
+ }
+ }
+
+ private void playAssistAnimation() {
+ Interpolator linearOutSlowIn = AnimationUtils.loadInterpolator(mBackground.getContext(),
+ android.R.interpolator.linear_out_slow_in);
+ Interpolator fastOutSlowIn = AnimationUtils.loadInterpolator(mBackground.getContext(),
+ android.R.interpolator.fast_out_slow_in);
+ mScrim.setAlpha(0f);
+ mScrim.animate()
+ .alpha(1f)
+ .setStartDelay(100)
+ .setDuration(500);
+ mBackground.setTranslationY(50 * mDensity);
+ mBackground.animate()
+ .translationY(0)
+ .setDuration(300)
+ .setInterpolator(linearOutSlowIn);
+ int centerX = mBackground.getWidth()/2;
+ int centerY = (int) (mBackground.getHeight()/5*3.8f);
+ int radius = (int) Math.sqrt(centerX*centerX + centerY*centerY) + 1;
+ Animator animator = ViewAnimationUtils.createCircularReveal(mBackground, centerX, centerY,
+ 0, radius);
+ animator.setDuration(300);
+ animator.setInterpolator(fastOutSlowIn);
+ animator.start();
+
+ ValueAnimator colorAnim = ValueAnimator.ofArgb(Color.WHITE, 0xffe0e0e0);
+ colorAnim.setDuration(300);
+ colorAnim.setInterpolator(fastOutSlowIn);
+ colorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ mBackground.setBackgroundColor((Integer) animation.getAnimatedValue());
+ }
+ });
+ colorAnim.start();
+
+
+ mCard1.setY(mBackground.getHeight());
+ mCard2.setTranslationY(mCard1.getTranslationY());
+ mCard1.animate()
+ .translationY(0)
+ .setDuration(500)
+ .setInterpolator(linearOutSlowIn)
+ .setStartDelay(100);
+ mCard2.animate()
+ .translationY(0)
+ .setInterpolator(linearOutSlowIn)
+ .setStartDelay(150)
+ .setDuration(500);
+
+ mNavbarScrim.setAlpha(0f);
+ mNavbarScrim.animate()
+ .alpha(1f)
+ .setDuration(500)
+ .setStartDelay(100);
+ }
+
+ @Override
+ public void onHide() {
+ super.onHide();
+ }
+}
diff --git a/tests/Assist/src/com/android/test/assist/AssistInteractionSessionService.java b/tests/Assist/src/com/android/test/assist/AssistInteractionSessionService.java
new file mode 100644
index 0000000..3c483d6
--- /dev/null
+++ b/tests/Assist/src/com/android/test/assist/AssistInteractionSessionService.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2015 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.
+ * 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
+ */
+
+package com.android.test.assist;
+
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionSession;
+import android.service.voice.VoiceInteractionSessionService;
+
+public class AssistInteractionSessionService extends VoiceInteractionSessionService {
+ @Override
+ public VoiceInteractionSession onNewSession(Bundle args) {
+ return new AssistInteractionSession(this);
+ }
+}
diff --git a/tests/Assist/src/com/android/test/assist/AssistRecognitionService.java b/tests/Assist/src/com/android/test/assist/AssistRecognitionService.java
new file mode 100644
index 0000000..6e5faa1
--- /dev/null
+++ b/tests/Assist/src/com/android/test/assist/AssistRecognitionService.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2015 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.
+ * 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
+ */
+
+package com.android.test.assist;
+
+import android.content.Intent;
+import android.speech.RecognitionService;
+
+/**
+ * Stub recognition service needed to be a complete voice interactor.
+ */
+public class AssistRecognitionService extends RecognitionService {
+
+ @Override
+ protected void onStartListening(Intent recognizerIntent, Callback listener) {
+ }
+
+ @Override
+ protected void onCancel(Callback listener) {
+ }
+
+ @Override
+ protected void onStopListening(Callback listener) {
+ }
+}
diff --git a/tests/Assist/src/com/android/test/assist/ScrimView.java b/tests/Assist/src/com/android/test/assist/ScrimView.java
new file mode 100644
index 0000000..1b7387b
--- /dev/null
+++ b/tests/Assist/src/com/android/test/assist/ScrimView.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2015 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.
+ * 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
+ */
+
+package com.android.test.assist;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+
+public class ScrimView extends View {
+
+ public ScrimView(Context context) {
+ super(context);
+ }
+
+ public ScrimView(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public ScrimView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return false;
+ }
+}