7
我正在實施VolumeProvider
,但我不知道我應該將我的播放器設置爲什麼音量,一旦onAdjustVolume
被調用。它給我的只是方向。現在我正在使用getCurrentVolume() + direction
,但只有在步驟等於AudioManager.ADJUST_LOWER
或AudioManager.ADJUST_RAISE
或AudioManager.ADJUST_SAME
時纔有效。VolumeProvider的onAdjustVolume上的步驟有多大?
那麼我怎麼能知道這些步驟是什麼?
謝謝。
編輯:我創建了一個示例來顯示與@auval響應的問題。
public class MainActivity extends AppCompatActivity {
private String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ProgressBar volumeBar = (ProgressBar) findViewById(R.id.progress);
final VolumeProviderCompat volumeProviderCompat = new VolumeProviderCompat(VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE, 100, 100) {
@Override
public void onAdjustVolume(int direction) {
Log.i(TAG, "onAdjustVolume " + direction);
if (direction > 0) {
setCurrentVolume(getCurrentVolume() + 5);
} else if (direction < 0) {
setCurrentVolume(getCurrentVolume() - 5);
}
}
@Override
public void onSetVolumeTo(int volume) {
super.onSetVolumeTo(volume);
Log.i(TAG, "onSetVolumeTo " + volume);
}
};
volumeProviderCompat.setCallback(new VolumeProviderCompat.Callback() {
@Override
public void onVolumeChanged(VolumeProviderCompat volumeProvider) {
volumeBar.setMax(volumeProvider.getMaxVolume());
int currentVolume = volumeProvider.getCurrentVolume();
Log.i(TAG,"onVolumeChanged " + currentVolume);
volumeBar.setProgress(currentVolume);
}
});
final MediaSessionCompat test = new MediaSessionCompat(this, "Test");
PlaybackStateCompat.Builder stateBuilder = new PlaybackStateCompat.Builder();
stateBuilder.setActions(PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PLAY_PAUSE | PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_REWIND | PlaybackState.ACTION_FAST_FORWARD);
stateBuilder.setState(PlaybackState.STATE_PLAYING, PlaybackState.PLAYBACK_POSITION_UNKNOWN, 1.0f);
test.setPlaybackState(stateBuilder.build());
test.setActive(true);
test.setPlaybackToRemote(volumeProviderCompat);
}
}
這是在屏幕上會發生什麼:
你是說我是一個控制步長?按下音量按鈕時顯示的面板是否已經具有使用的步長? – casolorz
是的,你在控制。沒有預先定義的「步驟」 - 您通過將當前位置轉換爲下一個位置來定義它們,這是音量提高事件的結果。 UI知道把槓桿放在哪裏,以你設定的值和最大值的百分比 – auval
對不起,我想我只是不理解。我想這是你告訴我要做的。覆蓋'onAdjustVolume()'。然後在裏面用'getCurrentVolume()+ - step'調用'setCurrentVolume()'我自己,但是當我這樣做時,雖然這一步工作正常,但手機面板首先顯示一個微小的步驟,然後基於我的步驟。 – casolorz