aboutsummaryrefslogtreecommitdiff
path: root/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster
diff options
context:
space:
mode:
authorPavel Maltsev <pavelm@google.com>2016-05-27 12:22:36 -0700
committerPavel Maltsev <pavelm@google.com>2016-06-08 15:52:44 -0700
commit0477e29bb17ee8ec99acfa5fa966889cd45ebf34 (patch)
treea0c5a9ad22b3fab8446c9eaa1d1f26092e16a621 /tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster
parentc1098ce241313e359f1e4d9997ecfcdb52af41b5 (diff)
downloadCar-0477e29bb17ee8ec99acfa5fa966889cd45ebf34.tar.gz
Refactor Instrument Cluster API
- separate Car Service and Inst Cluster Renderer proccesses - remove DemoInstrumentClusterRendering (we probably will make reference Renderer based on work we did for I/O) - deprecate instrument cluster listeners in CarNavigationManager Change-Id: Id24142b5811b22477177b2bbcb4cc0e463023b18 Bug:28719314
Diffstat (limited to 'tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster')
-rw-r--r--tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java64
1 files changed, 56 insertions, 8 deletions
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
index bd013ab120..a24c122bc9 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
@@ -16,12 +16,16 @@
package com.google.android.car.kitchensink.cluster;
import android.app.AlertDialog;
+import android.content.ComponentName;
import android.os.Bundle;
import android.support.annotation.Nullable;
+import android.support.car.Car;
import android.support.car.CarAppFocusManager;
import android.support.car.CarAppFocusManager.AppFocusChangeListener;
import android.support.car.CarAppFocusManager.AppFocusOwnershipChangeListener;
import android.support.car.CarNotConnectedException;
+import android.support.car.CarNotSupportedException;
+import android.support.car.ServiceConnectionListener;
import android.support.car.navigation.CarNavigationStatusManager;
import android.support.v4.app.Fragment;
import android.util.Log;
@@ -39,14 +43,49 @@ public class InstrumentClusterFragment extends Fragment {
private CarNavigationStatusManager mCarNavigationStatusManager;
private CarAppFocusManager mCarAppFocusManager;
+ private Car mCarApi;
- public void setCarNavigationStatusManager(
- CarNavigationStatusManager carNavigationStatusManager) {
- mCarNavigationStatusManager = carNavigationStatusManager;
- }
+ private final ServiceConnectionListener mServiceConnectionListener =
+ new ServiceConnectionListener() {
+ @Override
+ public void onServiceConnected(ComponentName name) {
+ Log.d(TAG, "Connected to Car Service");
+ try {
+ mCarNavigationStatusManager = (CarNavigationStatusManager) mCarApi.getCarManager(
+ android.car.Car.CAR_NAVIGATION_SERVICE);
+ mCarAppFocusManager =
+ (CarAppFocusManager) mCarApi.getCarManager(Car.APP_FOCUS_SERVICE);
+ } catch (CarNotConnectedException e) {
+ Log.e(TAG, "Car is not connected!", e);
+ } catch (CarNotSupportedException e) {
+ Log.e(TAG, "Car is not supported!", e);
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ Log.d(TAG, "Disconnect from Car Service");
+ }
+
+ @Override
+ public void onServiceSuspended(int cause) {
+ Log.d(TAG, "Car Service connection suspended");
+ }
- public void setCarAppFocusManager(CarAppFocusManager carAppFocusManager) {
- mCarAppFocusManager = carAppFocusManager;
+ @Override
+ public void onServiceConnectionFailed(int cause) {
+ Log.d(TAG, "Car Service connection failed");
+ }
+ };
+
+ private void initCarApi() {
+ if (mCarApi != null && mCarApi.isConnected()) {
+ mCarApi.disconnect();
+ mCarApi = null;
+ }
+
+ mCarApi = Car.createCar(getContext(), mServiceConnectionListener);
+ mCarApi.connect();
}
@Nullable
@@ -58,7 +97,14 @@ public class InstrumentClusterFragment extends Fragment {
view.findViewById(R.id.cluster_start_button).setOnClickListener(v -> initCluster());
view.findViewById(R.id.cluster_turn_left_button).setOnClickListener(v -> turnLeft());
- return super.onCreateView(inflater, container, savedInstanceState);
+ return view;
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ initCarApi();
+
+ super.onCreate(savedInstanceState);
}
private void turnLeft() {
@@ -70,6 +116,7 @@ public class InstrumentClusterFragment extends Fragment {
CarNavigationStatusManager.DISTANCE_METERS);
} catch (CarNotConnectedException e) {
e.printStackTrace();
+ initCarApi(); // This might happen due to inst cluster renderer crash.
}
}
@@ -117,7 +164,8 @@ public class InstrumentClusterFragment extends Fragment {
mCarNavigationStatusManager
.sendNavigationStatus(CarNavigationStatusManager.STATUS_ACTIVE);
} catch (CarNotConnectedException e) {
- Log.e(TAG, "Failed to set navigation status", e);
+ Log.e(TAG, "Failed to set navigation status, reconnecting to the car", e);
+ initCarApi(); // This might happen due to inst cluster renderer crash.
}
}
}