phones - android update




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

حجم زر الاستخدام في شظايا

إذا كنت ترغب في تنفيذ ذلك في الأجزاء المرتبطة بالنشاط ، فيمكنك استخدامه كـ:

ملاحظة: fragment_words هو مجرد اسم تخطيط يستخدم بشكل تعسفي

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_words, container, false);
rootView.requestFocus();
    rootView.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if( keyCode == KeyEvent.KEYCOD_VOLUME_DOWN ) {

                    //TODO SOMETHING
                    return true;
                } else {
                    return false;
                }
            }
        });}

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

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

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


سيكون التالي أفضل لأن النقر طويل لـ 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;
    }

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

@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);
        }
    }




android