gpt4 book ai didi

android - 不断检查 Android 服务中的音量变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:04 25 4
gpt4 key购买 nike

我写了这段代码,它显然有缺陷。我如何着手创建一个不断检查音量变化的服务?服务中不能使用按键监听器,请不要发布带有音量按键监听器的答案。

我的代码是错误的,因为我为 while 循环提供了虚拟条件。我的服务检查音量变化而不是崩溃的条件是什么?它不能是 isScreenOn(),因为可以在听音乐和屏幕关闭时更改音量。

代码

AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
int newVolume=0;
while(1==1)
{
newVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
if(currentVolume!=newVolume)
{
Toast.makeText(this, "Volume change detected!", Toast.LENGTH_LONG).show();
}

}

最佳答案

如果您想查看设置何时更改,您可以向设置提供程序注册一个 ContentObserver 以监视它。例如,这是设置应用程序中的观察者:

    private ContentObserver mVolumeObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
if (mSeekBar != null && mAudioManager != null) {
int volume = mAudioManager.getStreamVolume(mStreamType);
mSeekBar.setProgress(volume);
}
}
};

并且它被注册到观察者这样的设置:

        import android.provider.Settings;
import android.provider.Settings.System;

mContext.getContentResolver().registerContentObserver(
System.getUriFor(System.VOLUME_SETTINGS[mStreamType]),
false, mVolumeObserver);

关于android - 不断检查 Android 服务中的音量变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com