Как отключить родные всплывающие сообщения

Я создаю приложение, которое реализует удаленный. Одна из кнопок на пульте увеличивает и уменьшает громкость. У меня эта кнопка на пульте делает что-то другое, потому что регулировка громкости в моем приложении не имеет значения. Итак, мой вопрос:

Можно ли отключить родное всплывающее сообщение либо в самом приложении, либо в прошивке устройства. Я встраиваю свое приложение в пользовательское ПЗУ, поэтому у меня должен быть полный доступ к всплывающим сообщениям, верно?

Всем спасибо! То, что я пытаюсь переопределить


person Ethan    schedule 06.04.2016    source источник
comment
Я плохо понимаю ваш вопрос. вы сказали переопределить стиль тоста по умолчанию или выполнение увеличения / уменьшения громкости?   -  person Youngjae    schedule 06.04.2016
comment
@Youngjae В идеале я хотел бы переопределить всплывающее всплывающее сообщение, чтобы показать изменение громкости.   -  person Ethan    schedule 06.04.2016
comment
@ user154248 Вы можете проверить это и это   -  person Soham    schedule 12.04.2016
comment
@Soham Вторая ссылка, которую вы мне прислали, может быть ответом, но мне все еще нужно попробовать.   -  person Ethan    schedule 12.04.2016
comment
Что мне интересно, так это: это громкое сообщение вообще тост?   -  person Csaba Toth    schedule 18.04.2016


Ответы (5)


Взгляните на AudioManager->FLAG_SHOW_UI Не используйте этот флаг, если вы не хотите показывать родной тост. Пример с AdjustStreamVolume

 AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
 audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_SAME, flags); 

РЕДАКТИРОВАТЬ: вы также можете прослушивать жесткую кнопку громкости

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){
        //set Volume without toast flag
    }
    return true;
}
person ugur    schedule 15.04.2016
comment
Но разве это не отменит тост, если я отрегулирую громкость программно? Мне нужно, чтобы он переопределял тост при нажатии кнопки громкости. - person Ethan; 16.04.2016
comment
Хорошо, я попробую это в ближайшее время. Спасибо - person Ethan; 16.04.2016

Вы сказали, что создаете приложение для пользовательского ПЗУ, поэтому я предлагаю вам посмотреть: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/media/AudioManager.java#AudioManager.handleKeyDown%28android.view.KeyEvent%2Cint%29

Я считаю, что исправление этой функции в вашем ПЗУ (например, очистка его тела) может избавиться от всех тостов громкости.

person Daniel    schedule 17.04.2016
comment
В какой части ПЗУ должен находиться Audio Manager? Я предполагаю, что он будет на изображении system.img, но я не знаю, где он будет. - person Ethan; 18.04.2016
comment
Если вы скомпилируете свой ПЗУ из AOSP, он находится в папке platform_frameworks_base/media/java/android/media/AudioManager.java. Если вы хотите пропатчить ПЗУ, я буду искать в framework.jar - person Daniel; 18.04.2016
comment
Вы знаете, как декомпилировать этот файл .jar? - person Ethan; 18.04.2016
comment
баксмали и смали - person Daniel; 18.04.2016
comment
Кстати, какую версию Android вы используете? Поскольку Android 5.0 framework.jar не содержит кода, системные классы находятся внутри Boot.oat (из-за ART). Я не знаю инструмента для декомпиляции и повторной компиляции этих файлов. Если вы используете новую версию Android, я рекомендую исправить код ПЗУ, а не его вывод. - person Daniel; 18.04.2016

да.. вы можете настроить его

 Toast customToast = new Toast(getBaseContext());
 customToast = Toast.makeText(getBaseContext(), val, Toast.LENGTH_LONG);
 customToast.setGravity(Gravity.CENTER | Gravity.CENTER, 0, 0);
 customToast.show();
person Nikhil Borad    schedule 12.04.2016
comment
Не пытаюсь его настроить, я пытаюсь избавиться от всех тостов вместе - person Ethan; 12.04.2016

Чтобы переопределить всплывающее сообщение, поп может использовать следующее:

Toast mToast = Toast.makeText( this  , "" , Toast.LENGTH_SHORT );
switch(id)

 {
 case 0:
       mToast.setText( "Volume UP" );
       mToast.setGravity(Gravity.TOP | Gravity.TOP, 0, 0);
       mToast.show();
           break;
 case 1:
      mToast.setText( "Stop" );
      mToast.setGravity(Gravity.CENTER | Gravity.CENTER, 0, 0);
      mToast.show();
           break;
 case 2:
      mToast.setText( "Volume Down" );
      mToast.setGravity(Gravity.END | Gravity.END, 0, 0);
      mToast.show();
           break;
        } 
  }
}); 
person Android007    schedule 12.04.2016
comment
Не приведет ли это к появлению пустого черного овала внизу экрана? И я не верю, что это сработает, потому что всплывающее уведомление о громкости появляется вверху и встроено непосредственно в систему, но я попробую - person Ethan; 12.04.2016

Согласно обсуждению в группе Google в том же здесь, ты не можешь.

Да, вы можете использовать службу специальных возможностей для обнаружения тостов, но вы определенно не можете их предотвратить.

Надеюсь, это будет иметь смысл.

person Hiren Patel    schedule 18.04.2016