2016-04-06 10 views
4

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

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

Спасибо всем! The exact thing I am trying to override

+0

Я почти не понимаю ваш вопрос. вы сказали переопределить стиль тоста по умолчанию или объем вверх/вниз? – Youngjae

+0

@Youngjae В идеале я хотел бы переопределить тост-сообщение, чтобы всплывать, чтобы показать изменение громкости. – Ethan

+0

@ user154248 Вы можете щекотать [это] (http://stackoverflow.com/a/30411107/3967525) и [это] (http://stackoverflow.com/a/8991519/3967525) – Soham

ответ

0

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

Toast customToast = new Toast(getBaseContext()); 
customToast = Toast.makeText(getBaseContext(), val, Toast.LENGTH_LONG); 
customToast.setGravity(Gravity.CENTER | Gravity.CENTER, 0, 0); 
customToast.show(); 
+0

Не пытайтесь настроить его, я пытаюсь избавиться от всех тостов все вместе – Ethan

0

Чтобы отменить сообщение Тост щелчки можно использовать так:

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; 
     } 
    } 
}); 
+0

Не будет ли это результатом пустой черный овал, появляющийся в нижней части экрана? И я не верю, что это сработает, потому что тост тоста появится наверху и встроен непосредственно в систему, но я дам ему попробовать – Ethan

0
Toast CustomToast = new Toast(getBaseContext()); 

CustomToast = Toast.makeText(getBaseContext(), val, Toast.LENGTH_LONG); 

CustomToast.setGravity(Gravity.CENTER | Gravity.CENTER, 0, 0); 

CustomToast.show(); 
2

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

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

EDIT: Вы также можете слушать жесткий объем действий кнопок

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){ 
     //set Volume without toast flag 
    } 
    return true; 
} 
+0

Но разве это не будет отменять тост, если бы я должен был регулировать объем программным путем ? Мне нужно, чтобы переопределить тост, когда кнопка громкости нажата слишком – Ethan

+0

Я отредактировал мой вопрос – uguboz

+0

Хорошо, я попробую это в ближайшее время. Спасибо – Ethan

1

Вы сказали, что вы строите приложение к пользовательскому ROM, поэтому я предлагаю вам взглянуть на: 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

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

+0

В какой части ПЗУ будет находиться Audio Manager? Я предполагаю, что это будет в образ 'system.img', но я не знаю, где это будет – Ethan

+0

Если вы скомпилируете свое ПЗУ из AOSP, оно находится под платформой platform_frameworks_base/media/java/android/media/AudioManager.java.Если вы хотите исправить ПЗУ, я буду искать в framework.jar – Daniel

+0

Знаете ли вы, как декомпилировать этот .jar-файл? – Ethan

0

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^