diff options
author | Pavel Maltsev <pavelm@google.com> | 2016-05-27 12:22:36 -0700 |
---|---|---|
committer | Pavel Maltsev <pavelm@google.com> | 2016-06-08 15:52:44 -0700 |
commit | 0477e29bb17ee8ec99acfa5fa966889cd45ebf34 (patch) | |
tree | a0c5a9ad22b3fab8446c9eaa1d1f26092e16a621 /tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster | |
parent | c1098ce241313e359f1e4d9997ecfcdb52af41b5 (diff) | |
download | Car-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.java | 64 |
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. } } } |