android AudioManagerを使用してSTREAM_SYSTEMやSTREAM_NOTIFICATIONなどのストリームをミュートおよびミュート解除しています。ミュートは、setStreamMuteを呼び出すのは簡単ですが、isStreamMutedメソッドが見つかりません。
ソースコードの内部を見ると、それが存在することがわかります。問題は、「ストリームがミュートされているかどうかをどのように確認できるか」です。
私はAndroid4.0.4に取り組んでいます
android AudioManagerを使用してSTREAM_SYSTEMやSTREAM_NOTIFICATIONなどのストリームをミュートおよびミュート解除しています。ミュートは、setStreamMuteを呼び出すのは簡単ですが、isStreamMutedメソッドが見つかりません。
ソースコードの内部を見ると、それが存在することがわかります。問題は、「ストリームがミュートされているかどうかをどのように確認できるか」です。
私はAndroid4.0.4に取り組んでいます
反射はあなたの友達です。これは私にとってはうまくいきました。
try {
Method m = AudioManager.class.getMethod("isStreamMute", int.class);
isMuted = (Boolean) m.invoke(am, AudioManager.STREAM_MUSIC);
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
System.out.println(e);
}
更新: メソッドpublic boolean isStreamMute (int streamType)
は、リフレクションを使用せずに API 23 でアクセスできるようになりました。
不快な答えは、ストリーム ミュートがプロセス単位で動作することです。したがって、ミュート状態を静的変数に安全に保存し、適切にラップして、ミュート状態を自分で追跡できます。苦い経験から言えば。しなければならないことをすることもあります。なぜ彼らはそれをしたのですか?それはもっと難しい質問です....
hide を使用して、android.jar からメソッドを取り除きました。
/**
* get stream mute state.
*
* @hide
*/
public boolean isStreamMute(int streamType) {