1/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package android.car.cluster.demorenderer;
17
18import android.car.cluster.renderer.DisplayConfiguration;
19import android.car.cluster.renderer.InstrumentClusterRenderer;
20import android.car.cluster.renderer.NavigationRenderer;
21import android.car.navigation.CarNavigationInstrumentCluster;
22import android.content.Context;
23import android.view.View;
24
25/**
26 * Demo implementation of {@code InstrumentClusterRenderer}.
27 */
28public class DemoInstrumentClusterRenderer extends InstrumentClusterRenderer {
29
30    private DemoInstrumentClusterView mView;
31    private Context mContext;
32    private CallStateMonitor mPhoneStatusMonitor;
33    private MediaStateMonitor mMediaStateMonitor;
34    private DemoPhoneRenderer mPhoneRenderer;
35    private DemoMediaRenderer mMediaRenderer;
36
37    @Override
38    public void onCreate(Context context) {
39        mContext = context;
40    }
41
42    @Override
43    public View onCreateView(DisplayConfiguration displayConfiguration) {
44        mView = new DemoInstrumentClusterView(mContext);
45        mPhoneRenderer = new DemoPhoneRenderer(mView);
46        mMediaRenderer = new DemoMediaRenderer(mView);
47        return mView;
48    }
49
50    @Override
51    public void onStart() {
52        mPhoneStatusMonitor = new CallStateMonitor(mContext, mPhoneRenderer);
53        mMediaStateMonitor = new MediaStateMonitor(mContext, mMediaRenderer);
54    }
55
56    @Override
57    public void onStop() {
58        if (mPhoneStatusMonitor != null) {
59            mPhoneStatusMonitor.release();
60            mPhoneStatusMonitor = null;
61        }
62
63        if (mMediaStateMonitor != null) {
64            mMediaStateMonitor.release();
65            mMediaStateMonitor = null;
66        }
67        mPhoneRenderer = null;
68        mMediaRenderer = null;
69    }
70
71    @Override
72    protected NavigationRenderer createNavigationRenderer() {
73        return new DemoNavigationRenderer(mView);
74    }
75
76    @Override
77    public CarNavigationInstrumentCluster getNavigationProperties() {
78        // TODO
79        return null;
80    }
81}
82