Add service for connecting to media sources
Bug: 136594775
Test: Manual
Change-Id: I5bcef41f0a4b5d7071b2321250fee4aac388bf45
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ff324f6..d702bcd 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -53,5 +53,12 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
+
+ <service
+ android:name=".service.MediaConnectorService">
+ <intent-filter>
+ <action android:name="com.android.car.media.MEDIA_CONNECTION"/>
+ </intent-filter>
+ </service>
</application>
</manifest>
diff --git a/src/com/android/car/media/service/MediaConnectorService.java b/src/com/android/car/media/service/MediaConnectorService.java
new file mode 100644
index 0000000..917da96
--- /dev/null
+++ b/src/com/android/car/media/service/MediaConnectorService.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2019 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.car.media.service;
+
+import android.content.Intent;
+import android.os.IBinder;
+
+import androidx.lifecycle.LifecycleService;
+import com.android.car.media.common.playback.PlaybackViewModel;
+
+/**
+ * This service is started by CarMediaService when a new user is unlocked. It connects to the
+ * media source provided by CarMediaService and calls prepare() on the active MediaSession.
+ *
+ * TODO(b/139497602): merge this class into CarMediaService, so it doesn't depend on Media Center
+ */
+public class MediaConnectorService extends LifecycleService {
+ @Override
+ public IBinder onBind(Intent intent) {
+ return super.onBind(intent);
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ super.onStartCommand(intent, flags, startId);
+
+ PlaybackViewModel playbackViewModel = PlaybackViewModel.get(getApplication());
+ playbackViewModel.getPlaybackController().observe(this,
+ playbackController -> {
+ if (playbackController != null) playbackController.prepare();
+ });
+
+ return START_NOT_STICKY;
+ }
+}