このリンク:AndroidのMediaPlayerのスピード再生は、再生速度を調整します
今、市場は、このような再生速度などのオーディオおよびビデオアプリケーションの高速再生機能の多くがそうで0.5,1.5,2倍に調整されています。
AndroidのAPI 23から(アンドロイドM)を起動し、MediaPlayerのサポートは、再生速度を調整します。
使用される方法は、着信クラス選手の代表PlaybackParams属性、setPlaybackParamsあります。
この記事では、再生速度を調整するためのMediaPlayerを使用する方法について説明します。
MediaPlayer.setPlaybackParams説明
再生速度はPlaybackParamsオブジェクトを設定して、このオブジェクトはsetPlaybackParamsを通過しました。
setPlaybackParamsはネイティブメソッドです。
(準備前)MediaPlayerの準備ができていない場合は、このメソッドを呼び出すと、MediaPlayerの状態を変更しません。
メディア・プレイヤーが正常に準備した後、速度が0に設定されている場合、休止メソッドを呼び出すのと等価、速度が0に開始メソッドを呼び出すのと等価に設定されていない場合。
例外
MediaPlayerのは初期化されていないか、解放された、またはそれがアイドル状態の終了コールsetPlaybackParams方法である場合はIllegalStateExceptionをスローします。
入ってくるPlaybackParamsがサポートされていない場合は、IllegalArgumentExceptionをスローします。
速度が0未満の場合は、java.lang.IllegalArgumentExceptionが例外がスローされます。
実施例MediaPlayer.setPlaybackParams方法
再生速度を設定します。まず、現在のシステムのバージョンを確認します。
private boolean setPlaySpeed(float speed) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
PlaybackParams params = mediaPlayer.getPlaybackParams();
params.setSpeed(speed);
mediaPlayer.setPlaybackParams(params);
return true;
}
return false;
}
getPlaybackParamsは、MediaPlayerの現在のPlaybackParamsオブジェクトを取得することができます。
この方法はまた、キャッチ、組み合わせリターン成功率が提供されているかどうかを決定するブール値を試すために結合することができます。
private boolean setPlaySpeed(float speed) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
try {
PlaybackParams params = mediaPlayer.getPlaybackParams();
params.setSpeed(speed);
mediaPlayer.setPlaybackParams(params);
return true;
} catch (Exception e) {
Log.e(TAG, "setPlaySpeed: ", e);
return false;
}
}
return false;
}
リファレンスコードhttps://github.com/RustFisher/android-MediaPlayer
速度値はPlaybackParamsが含まれてい
MediaPlayerの再生速度の調整は、我々はPlaybackParamsオブジェクトを使用します。AudioTrackは、このクラスを使用します。
PlaybackParamsは、再生時間の属性の一部が含まれています。例えば、速度が高速です。
PlaybackParams.setSpeed(フロートスピード)
受信速度オーバライド値。これは、スピードオーバー、現在の設定をマークします。
public PlaybackParams setSpeed(float speed) {
mSpeed = speed;
mSet |= SET_SPEED;
return this;
}
PlaybackParams.getSpeed()
取得速度は、値を設定します。あなたはIllegalStateExceptionが例外をスローする前に速度をオフに設定しない場合。
public float getSpeed() {
if ((mSet & SET_SPEED) == 0) {
throw new IllegalStateException("speed not set");
}
return mSpeed;
}