phones - Android-أزرار الصوت المستخدمة في طلبي




update apps (5)

أحتاج إلى استخدام أزرار حجم للتحكم في معلمة متغير في التطبيق الخاص بي. يمكنني استخدام Activity.onKeyDown لتلقي الإشعارات عند الضغط على الزر ولكن يتم زيادة مستوى صوت الوسائط أيضًا.
يقوم Android بشيء مثل أدناه عند الضغط على مفتاح مستوى الصوت:

  1. زيادة حجم الوسائط / نغمة الرنين
  2. مرر الحدث إلى طلبي

هل هناك طريقة لتجنب زيادة حجم النظام واستخدام مفتاح مستوى الصوت فقط للتطبيق الخاص بي؟


Answers

فقط لإكمال الإجابات السابقة ، إذا كنت تريد الحصول على دعم طويل ، فعليك التحقق من طول المفتاح الذي استخدمته:

event.getEventTime() - event.getDownTime() > ViewConfiguration.getLongPressTimeout() 

في النهاية سيبدو الرمز على النحو التالي:

    @Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
    switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            if (action == KeyEvent.ACTION_UP) {
                if (event.getEventTime() - event.getDownTime() > ViewConfiguration.getLongPressTimeout()) {
                    //TODO long click action
                } else {
                    //TODO click action
                }
            }
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (action == KeyEvent.ACTION_UP) {
                if (event.getEventTime() - event.getDownTime() > ViewConfiguration.getLongPressTimeout()) {
                    //TODO long click action
                } else {
                    //TODO click action
                }
            }
            return true;
        default:
            return super.dispatchKeyEvent(event);
    }
}

يجب التقاط جميع الإجراءات:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            if (action == KeyEvent.ACTION_DOWN) {
                //TODO
            }
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (action == KeyEvent.ACTION_DOWN) {
                //TODO
            }
            return true;
        default:
            return super.dispatchKeyEvent(event);
        }
    }

سيكون التالي أفضل لأن النقر طويل لـ KeyEvent.KEYCODE_VOLUME_UP لا يعمل بشكل صحيح في الإجابة السابقة.

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
    switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            if (action == KeyEvent.ACTION_DOWN) {
                //TODO
            }
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (action == KeyEvent.ACTION_DOWN) {
                //TODO
            }
            return true;
        default:
            return super.dispatchKeyEvent(event);
    }
}

لقد استخدمت هذا الرمز للاستماع إلى زر مستوى الصوت من قبل.

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

شيء واحد سأضيف - لدي واحدة من تلك الحالات الفريدة.

عن طريق:

deviceId = Secure.getString(this.getContext().getContentResolver(), Secure.ANDROID_ID);

تبين أنه على الرغم من أن جهاز Viewsonic G Tablet الخاص به قد أبلغ عن DeviceID غير خالية ، فإن كل جهاز G Tablet نفسه يقوم بالإبلاغ عن نفس الرقم.

يجعلها مثيرة للاهتمام لعب "Pocket Empires" التي تمنحك الوصول الفوري إلى حساب شخص ما استنادًا إلى DeviceID "الفريد".

لا يحتوي جهازي على راديو خلية.







android