aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/audiotvservice
diff options
context:
space:
mode:
authornchalko <nchalko@google.com>2018-09-11 10:56:08 -0700
committerCopybara-Service <copybara-piper@google.com>2018-09-11 10:58:45 -0700
commit1fd3650e8d70131e7484a13f065f0ce48826c675 (patch)
tree55e596c33df7544296f9fbfb7f7087082fb0d38b /src/com/android/tv/audiotvservice
parent5ba753e13844d2e0d36b8936c6cefde84b545348 (diff)
downloadTV-1fd3650e8d70131e7484a13f065f0ce48826c675.tar.gz
PARTIL: stub implemenation of audio only tv sevice
PiperOrigin-RevId: 212481708 Change-Id: Ic37db134007c97bba56b9b12f2f1ad87ec0ae093
Diffstat (limited to 'src/com/android/tv/audiotvservice')
-rw-r--r--src/com/android/tv/audiotvservice/AudioOnlyTvService.java52
-rw-r--r--src/com/android/tv/audiotvservice/AudioOnlyTvServiceUtil.java31
2 files changed, 78 insertions, 5 deletions
diff --git a/src/com/android/tv/audiotvservice/AudioOnlyTvService.java b/src/com/android/tv/audiotvservice/AudioOnlyTvService.java
index 06533ba8..fbbb2545 100644
--- a/src/com/android/tv/audiotvservice/AudioOnlyTvService.java
+++ b/src/com/android/tv/audiotvservice/AudioOnlyTvService.java
@@ -18,16 +18,27 @@ package com.android.tv.audiotvservice;
import android.app.Notification;
import android.app.Service;
import android.content.Intent;
+import android.media.session.MediaSession;
+import android.net.Uri;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
+import com.android.tv.data.StreamInfo;
+import com.android.tv.data.api.Channel;
+import com.android.tv.ui.TunableTvView;
+import com.android.tv.ui.TunableTvView.OnTuneListener;
/** Foreground service for audio-only TV inputs. */
-public class AudioOnlyTvService extends Service {
+public class AudioOnlyTvService extends Service implements OnTuneListener {
// TODO(b/110969180): implement this service.
private static final String TAG = "AudioOnlyTvService";
private static final int NOTIFICATION_ID = 1;
+ @Nullable private String mTvInputId;
+ private TunableTvView mTvView;
+ // TODO(b/110969180): perhaps use MediaSessionWrapper
+ private MediaSession mMediaSession;
+
@Nullable
@Override
public IBinder onBind(Intent intent) {
@@ -38,17 +49,54 @@ public class AudioOnlyTvService extends Service {
@Override
public void onCreate() {
Log.i(TAG, "onCreate");
+ // TODO(b/110969180): create TvView
+
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand. flags = " + flags + ", startId = " + startId);
+ // TODO(b/110969180): real notification and or media session
startForeground(NOTIFICATION_ID, new Notification());
- return super.onStartCommand(intent, flags, startId);
+ mTvInputId = AudioOnlyTvServiceUtil.getInputIdFromIntent(intent);
+ tune(mTvInputId);
+ return START_STICKY;
+ }
+
+ private void tune(String mTvInputId) {
+ // TODO(b/110969180): get proper channel
+ Channel channel = null;
+ mTvView.tuneTo(channel, null, this);
}
@Override
public void onDestroy() {
Log.i(TAG, "onDestroy");
+ mTvInputId = null;
+ // TODO(b/110969180): clear TvView
}
+
+ // TODO(b/110969180): figure out when to stop ourselves, mediaSession event?
+
+ // TODO(b/110969180): handle OnTuner Listener
+ @Override
+ public void onTuneFailed(Channel channel) {}
+
+ @Override
+ public void onUnexpectedStop(Channel channel) {}
+
+ @Override
+ public void onStreamInfoChanged(StreamInfo info, boolean allowAutoSelectionOfTrack) {}
+
+ @Override
+ public void onChannelRetuned(Uri channel) {}
+
+ @Override
+ public void onContentBlocked() {}
+
+ @Override
+ public void onContentAllowed() {}
+
+ @Override
+ public void onChannelSignalStrength() {}
}
diff --git a/src/com/android/tv/audiotvservice/AudioOnlyTvServiceUtil.java b/src/com/android/tv/audiotvservice/AudioOnlyTvServiceUtil.java
index dc4f41dd..7ffe8833 100644
--- a/src/com/android/tv/audiotvservice/AudioOnlyTvServiceUtil.java
+++ b/src/com/android/tv/audiotvservice/AudioOnlyTvServiceUtil.java
@@ -19,16 +19,22 @@ import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.MainThread;
+import android.support.annotation.Nullable;
import android.util.Log;
/** Utility methods to start and stop audio only TV Player. */
-public class AudioOnlyTvServiceUtil {
+public final class AudioOnlyTvServiceUtil {
private static final String TAG = "AudioOnlyTvServiceUtil";
+ private static final String EXTRA_INPUT_ID = "intputId";
@MainThread
public static void startAudioOnlyInput(Context context, String tvInputId) {
Log.i(TAG, "startAudioOnlyInput");
- Intent intent = new Intent(context, AudioOnlyTvService.class);
+ Intent intent = getIntent(context);
+ if (intent == null) {
+ return;
+ }
+ intent.putExtra(EXTRA_INPUT_ID, tvInputId);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(intent);
} else {
@@ -36,8 +42,27 @@ public class AudioOnlyTvServiceUtil {
}
}
+ @Nullable
+ private static Intent getIntent(Context context) {
+ try {
+ return new Intent(
+ context, Class.forName("com.android.tv.audiotvservice.AudioOnlyTvService"));
+ } catch (ClassNotFoundException e) {
+ Log.wtf(TAG, e);
+ return null;
+ }
+ }
+
@MainThread
- public static void stopAudioOnlyInput() {
+ public static void stopAudioOnlyInput(Context context) {
Log.i(TAG, "stopForegroundService");
+ context.stopService(getIntent(context));
}
+
+ @Nullable
+ public static String getInputIdFromIntent(Intent intent) {
+ return intent.getStringExtra(EXTRA_INPUT_ID);
+ }
+
+ private AudioOnlyTvServiceUtil() {}
}