私はこのコードを書きましたが、明らかに欠陥があります。ボリュームの変化を常にチェックするサービスを作成するにはどうすればよいですか? キー リスナーはサービスでは使用できません。ボリューム キー リスナーを含む回答を投稿しないでください。
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();
}
}