私は、アプリケーションでユーザーイベントを追跡するためのライブラリを作成しています。ユーザーがライブラリのアプリのホーム画面でボリュームボタンを2回押したときにコールバックしたいアクティビティを延長せずにコールバックを取得するにはどうすればよいですか。 onKeyDownはアクティビティでのみ動作します。
私は音量に変化がないとき、これはのonChangeを呼び出していない音量ボタンのキーイベントのリスナー
public class SettingsContentObserver extends ContentObserver
{
int previousVolume;
Context context;
public SettingsContentObserver(Context c, Handler handler)
{
super(handler);
context = c;
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
previousVolume = audio.getStreamVolume(AudioManager.RINGER_MODE_NORMAL);
Log.i("myTag", "SettingsContentObserver previousVolume = " + previousVolume);
}
@Override
public boolean deliverSelfNotifications()
{
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.RINGER_MODE_NORMAL);
Log.d("myTag", currentVolume + " currentVolume");
int delta = previousVolume - currentVolume;
if (delta > 0)
{
Log.i("myTag", delta + " Decreased");
previousVolume = currentVolume;
}
else if (delta < 0)
{
Log.i("myTag", delta + " Increased");
previousVolume = currentVolume;
}
}
}
を試してみました。例えば、ユーザが音量アップボタンを押したときに音量が満杯になると、音量が上がらない。同様に、ボリュームが0の場合、ユーザーがボリュームを押し下げると、呼び出されません。どのようにコールバックを得ることができますか?
あなたは、このクラスではdispatchKeyEventを使用することができますか? –
いいえ、できません。同じようなonKeyDown –