Ich mache eine Bibliothek zum Verfolgen von Benutzerereignissen in App. Ich möchte einen Rückruf erhalten, wenn der Benutzer die Lautstärketaste zweimal auf dem Startbildschirm der App in meine Bibliothek drückt. Wie kann ich den Rückruf erhalten, ohne die Aktivität zu verlängern? onKeyDown funktioniert nur für die Aktivität.
Ich versuchteListener für Lautstärke Tastenereignisse
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;
}
}
}
Diese nicht onChange ruft, wenn keine Änderung des Volumens ist. Wenn die Lautstärke beispielsweise voll ist, wenn der Benutzer die Lauter-Taste drückt, wird er nicht angerufen. Wenn die Lautstärke gleich 0 ist und der Benutzer die Lautstärke herunterdrückt, wird er nicht aufgerufen. Wie kann ich den Rückruf erhalten?
können Sie dispatchKeyEvent in dieser Klasse verwenden? –
Nein, wir können nicht. Das gleiche wie onKeyDown –