PlayerViewModel.java
3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.ys.yslibrary.viewmodel;
import android.content.Context;
import android.media.AudioManager;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModel;
import com.iflytek.aiui.player.common.data.MetaItem;
import com.ys.yslibrary.TTSManager;
import com.ys.yslibrary.common.SingleLiveEvent;
import com.ys.yslibrary.player.AIUIPlayerWrapper;
import com.ys.yslibrary.player.PlayerState;
import org.json.JSONArray;
/**
* 播放器ViewModel
* 获得播放器状态
* 控制播放器播放,停止
*/
public class PlayerViewModel extends ViewModel {
private AudioManager mAudioManager;
private AIUIPlayerWrapper mPlayer;
private TTSManager mTTSManager;
private SingleLiveEvent<String> mPlayerTips = new SingleLiveEvent<>();
public PlayerViewModel(Context context, AIUIPlayerWrapper player, TTSManager ttsManager) {
mPlayer = player;
mTTSManager = ttsManager;
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
}
public LiveData<PlayerState> getPlayState() {
return mPlayer.getLiveState();
}
public LiveData<String> getPlayerTips() {
return mPlayerTips;
}
public LiveData<String> getLiveError() {
return mPlayer.getError();
}
public boolean playList(JSONArray list, String service) {
return mPlayer.playList(list, service);
}
public boolean anyAvailablePlay(JSONArray data, String service) {
return mPlayer.anyAvailablePlay(data, service);
}
public MetaItem play() {
return mPlayer.play();
}
//自动暂停 唤醒后自动暂停或按住说话自动暂停
public MetaItem autoPause() {
return mPlayer.autoPause();
}
public MetaItem manualPause() {
return mPlayer.manualPause();
}
public void resumeIfNeed() {
mPlayer.resumeIfNeed();
}
public MetaItem prev() {
MetaItem prev = mPlayer.prev();
if(prev == null) {
mPlayerTips.setValue("当前已经是播放列表第一项");
}
return prev;
}
public MetaItem next() {
MetaItem next = mPlayer.next();
if(next == null) {
mPlayerTips.setValue("当前已经是播放列表最后一项");
}
return next;
}
public MetaItem current() {
return mPlayer.currentMedia();
}
public boolean stop() {
mPlayer.stop();
return true;
}
public boolean isActive() {
return mPlayer.isActive();
}
public void volumeMinus() {
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER,
AudioManager.FLAG_SHOW_UI);
}
public void volumePlus() {
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE,
AudioManager.FLAG_SHOW_UI);
}
public void volumePercent(float percent) {
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
(int) (mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) * percent), AudioManager.FLAG_SHOW_UI);
}
public void startTTS(String text, Runnable callback, boolean resume) {
mTTSManager.startTTS(text, callback, resume);
}
public void pauseTTS() {
mTTSManager.pauseTTS();
}
}