音量が変わったか知りたいです。他の投稿を読んで、このコードが ContentObserver を登録し、何かが変更されたときにイベントを取得することがわかりました。私の問題は、何が変わったのかを知る方法がわからないことです。つまり、OnReceive() を取得しますが、追加情報 (たとえば、どのボリューム キーが押されたかなど) を取得するにはどうすればよいでしょうか。
また、多くの不要なイベントも発生します。たとえば、「メニュー」ボタンをクリックするとこのイベントもトリガーされますが、(まだ) 何も変更されていません。
これは私のコードです。
ありがとうございました
public class clsSettingsContentObserver extends ContentObserver
{
public Context Contexto=null; //This is for displaying Toasts
public clsSettingsContentObserver(Handler handler)
{ super(handler);
}
@Override public boolean deliverSelfNotifications()
{
return super.deliverSelfNotifications();
}
@Override public void onChange(boolean selfChange)
{ super.onChange(selfChange);
//How do I get more info here?????
ShowToast("Settings change detected");
}
private void ShowToast(String strMensaje)
{ Toast toast1 = Toast.makeText(Contexto, strMensaje, Toast.LENGTH_SHORT);
toast1.show();
};
}
そして、これは私がそれを登録する方法です:
clsSettingsContentObserver oSettingsContentObserver = new clsSettingsContentObserver( new Handler() );
oSettingsContentObserver.Contexto = this; //This is for displaying Toasts
getApplicationContext().getContentResolver().registerContentObserver(
android.provider.Settings.System.CONTENT_URI,
true,
oSettingsContentObserver);