Android 如何禁用本机Toast消息
我正在创建一个应用程序,该应用程序实现远程控制。遥控器上的一个按钮可上下调节音量。我用遥控器上的这个按钮做一些不同的事情,因为在我的应用程序中调整音量是不相关的。所以,我的问题是: 是否可以在应用程序本身或设备固件中禁用本机toast消息。我正在将我的应用程序构建到一个自定义ROM中,所以我应该可以完全访问toast消息,对吗 谢谢大家!Android 如何禁用本机Toast消息,android,android-toast,rom,Android,Android Toast,Rom,我正在创建一个应用程序,该应用程序实现远程控制。遥控器上的一个按钮可上下调节音量。我用遥控器上的这个按钮做一些不同的事情,因为在我的应用程序中调整音量是不相关的。所以,我的问题是: 是否可以在应用程序本身或设备固件中禁用本机toast消息。我正在将我的应用程序构建到一个自定义ROM中,所以我应该可以完全访问toast消息,对吗 谢谢大家! 是的。。您可以自定义它 Toast customToast = new Toast(getBaseContext()); customToast = To
是的。。您可以自定义它
Toast customToast = new Toast(getBaseContext());
customToast = Toast.makeText(getBaseContext(), val, Toast.LENGTH_LONG);
customToast.setGravity(Gravity.CENTER | Gravity.CENTER, 0, 0);
customToast.show();
要覆盖toast消息,pops可以使用以下命令:
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;
}
}
});
请看AudioManager-> 如果不想显示土司,请不要使用此标志。 使用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;
}
您说您正在为自定义ROM构建应用程序,因此我建议您查看:
我相信在你的ROM中修补这个功能(例如清空它的主体)可以消除所有的音量祝酒。根据谷歌小组在同一天的讨论,你不能 是的,您可以使用可访问性服务来检测祝酒词,但绝对不能阻止它们
希望这会有意义。我几乎听不懂你的问题。您说过要覆盖默认的toast样式或音量上升/下降执行?@Youngjae理想情况下,我想覆盖弹出的toast消息,以显示音量的变化。@user154248您可以检查和@Soham您发送给我的第二个链接可能就是答案,但我还是要试试。我想知道的是:那条音量信息到底是不是一个祝酒词?不是要定制它,而是要把所有祝酒词都去掉。这难道不会导致屏幕底部出现一个空白的黑色椭圆形吗?我不相信这会起作用,因为音量toast显示在顶部,并且直接内置到系统中,但我会尝试一下,但是如果我通过编程方式调整音量,这不会覆盖toast吗?当音量按钮按下时,我需要它来覆盖烤面包好的,我很快就会试试。谢谢您音频管理器将在ROM的哪一部分?我假设它会在
system.img
图像中,但我不知道它会在哪里如果你从AOSP编译你的ROM,它会在platform\u frameworks\u base/media/java/android/media/AudioManager.java下。如果你想修补一个ROM,我会在framework.jar中搜索。你知道如何反编译这个.jar文件吗?Baksmali和smaliBTW,你使用哪个Android版本?由于Android 5.0 framework.jar不包含代码,所以系统“类”位于Boot.oat内(因为ART)。我不知道有什么工具可以反编译然后重新编译这些文件。如果你使用新的Android版本,我建议你修补ROM的代码,而不是它的输出
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){
//set Volume without toast flag
}
return true;
}