VolumeProvider的onAdjustVolume上的步骤有多大?
我正在实施一个VolumeProvider
但我不知道一旦onAdjustVolume
被调用,我应该设置我的播放器的音量。 它给我的只是方向。 现在我正在使用getCurrentVolume() + direction
但只有在步骤等于AudioManager.ADJUST_LOWER
或AudioManager.ADJUST_RAISE
或AudioManager.ADJUST_SAME
时才有效。
那么我怎么知道这些步骤会是什么?
谢谢。
编辑:我创建了一个示例以显示与@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);
}
}
这是屏幕上发生的事情:
最好使用VolumeProviderCompat,因为VolumeProvider要求最小sdk为21。
顺便说一下,规范中没有任何内容表明音量控制必须是线性的,您可以决定以小间隔变化开始并在每个连续音量按下时增加跳跃...
链接地址: http://www.djcxy.com/p/96849.html上一篇: How large are the steps on onAdjustVolume of the VolumeProvider?