• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  */
16 
17 package com.android.bluetooth.avrcpcontroller;
18 
19 import android.bluetooth.BluetoothAvrcpPlayerSettings;
20 import android.media.session.PlaybackState;
21 import android.util.Log;
22 
23 import java.util.ArrayList;
24 
25 /*
26  * Contains information about remote player
27  */
28 class AvrcpPlayer {
29     private static final String TAG = "AvrcpPlayer";
30     private static final boolean DBG = true;
31 
32     public static final int INVALID_ID = -1;
33 
34     private int mPlayStatus = PlaybackState.STATE_NONE;
35     private long mPlayTime   = PlaybackState.PLAYBACK_POSITION_UNKNOWN;
36     private int mId;
37     private String mName = "";
38     private int mPlayerType;
39     private TrackInfo mCurrentTrack = new TrackInfo();
40 
AvrcpPlayer()41     AvrcpPlayer() {
42         mId = INVALID_ID;
43     }
44 
AvrcpPlayer(int id, String name, int transportFlags, int playStatus, int playerType)45     AvrcpPlayer(int id, String name, int transportFlags, int playStatus, int playerType) {
46         mId = id;
47         mName = name;
48         mPlayerType = playerType;
49     }
50 
getId()51     public int getId() {
52         return mId;
53     }
54 
getName()55     public String getName() {
56       return mName;
57     }
58 
setPlayTime(int playTime)59     public void setPlayTime(int playTime) {
60         mPlayTime = playTime;
61     }
62 
getPlayTime()63     public long getPlayTime() {
64         return mPlayTime;
65     }
66 
setPlayStatus(int playStatus)67     public void setPlayStatus(int playStatus) {
68         mPlayStatus = playStatus;
69     }
70 
getPlaybackState()71     public PlaybackState getPlaybackState() {
72         if (DBG) {
73             Log.d(TAG, "getPlayBackState state " + mPlayStatus + " time " + mPlayTime);
74         }
75 
76         long position = mPlayTime;
77         float speed = 1;
78         switch (mPlayStatus) {
79             case PlaybackState.STATE_STOPPED:
80                 position = 0;
81                 speed = 0;
82                 break;
83             case PlaybackState.STATE_PAUSED:
84                 speed = 0;
85                 break;
86             case PlaybackState.STATE_FAST_FORWARDING:
87                 speed = 3;
88                 break;
89             case PlaybackState.STATE_REWINDING:
90                 speed = -3;
91                 break;
92         }
93         return new PlaybackState.Builder().setState(mPlayStatus, position, speed).build();
94     }
95 
updateCurrentTrack(TrackInfo update)96     synchronized public void updateCurrentTrack(TrackInfo update) {
97         mCurrentTrack = update;
98     }
99 
getCurrentTrack()100     synchronized public TrackInfo getCurrentTrack() {
101         return mCurrentTrack;
102     }
103 }
104