Kar*_*nan 8 audio android android-service android-audiomanager
我写了这段代码,显然有缺陷.我如何创建一个不断检查数量变化的服务?关键监听器不能在服务中使用,请不要使用卷密钥监听器发布答案.
我的代码错了,因为我为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();
}
}
Run Code Online (Sandbox Code Playgroud)
如果要查看设置何时更改,可以使用设置提供程序注册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);
}
}
};
Run Code Online (Sandbox Code Playgroud)
它被注册到观察者这样的设置:
import android.provider.Settings;
import android.provider.Settings.System;
mContext.getContentResolver().registerContentObserver(
System.getUriFor(System.VOLUME_SETTINGS[mStreamType]),
false, mVolumeObserver);
Run Code Online (Sandbox Code Playgroud)