Как я могу запустить приложение для Android при нажатии кнопки увеличения или уменьшения громкости?

У меня есть требования в приложении личной безопасности, где пользователь должен запустить приложение как можно скорее, нажав кнопку увеличения или уменьшения громкости. Какова процедура добавления этой функции?


person Muhammad Maqsoodur Rehman    schedule 13.01.2014    source источник
comment
действительно интересный вопрос!!   -  person Jitesh Upadhyay    schedule 13.01.2014
comment
если мой ответ возможен, поднимите и примите, что мы можем закрыть его.   -  person Jitesh Upadhyay    schedule 13.01.2014


Ответы (2)


Нет широковещательного события для изменения громкости.

Однако существует недокументированное действие под названием "android.media.VOLUME_CHANGED_ACTION", который вы могли бы использовать, но он, вероятно, выиграл не работает на всех устройствах/версиях, поэтому не рекомендуется.

Однако использование других кнопок (например, кнопок мультимедиа) возможно.

EDIT: пример кода (с использованием недокументированного действия):

AndroidManifest.xml

...
<receiver android:name="VolumeChangeReceiver" >
    <intent-filter>
        <action android:name="android.media.VOLUME_CHANGED_ACTION" />
    </intent-filter>
</receiver>
...

VolumeChangeReceiver.java

public class VolumeChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) {
            int newVolume = intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_VALUE", 0);
            int oldVolume = intent.getIntExtra("android.media.EXTRA_PREV_VOLUME_STREAM_VALUE", 0);
            if (newVolume != oldVolume) {
                Intent i = new Intent();
                i.setClass(context, YourActivity.class);
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(i);
            }
        }
    }
}

См. этот вопрос, если вы хотите разблокировать экран при запуске приложения. .

person molnarm    schedule 13.01.2014
comment
@MuhammadMaqsoodurRehman Я добавил образец кода (на основе моих первой и второй ссылок), сейчас у меня нет SDK, поэтому он не тестировался. Имейте в виду, что, поскольку это неофициальный метод, он не будет работать на всех устройствах/версиях. - person molnarm; 20.01.2014

Я использовал этот код для прослушивания кнопки громкости раньше,

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){
        //Do something
    }
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)){
        //Do something
    }
    return true;
}

Этот метод получает событие увеличения и уменьшения громкости.

person dipali    schedule 13.01.2014
comment
привет Дивали, он хочет запустить само приложение, в то время как этот код может работать изнутри, а до запуска приложения это возможно?? - person Jitesh Upadhyay; 13.01.2014
comment
@MuhammadMaqsoodurRehman, чем есть две возможности: либо вам нужно что-то сделать с прошивкой, либо вы можете запустить приложение в первый раз в обычном режиме, а в следующий раз вы можете запустить его с помощью широковещательного приемника. - person Jitesh Upadhyay; 13.01.2014