Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何禁用本机Toast消息_Android_Android Toast_Rom - Fatal编程技术网

Android 如何禁用本机Toast消息

Android 如何禁用本机Toast消息,android,android-toast,rom,Android,Android Toast,Rom,我正在创建一个应用程序,该应用程序实现远程控制。遥控器上的一个按钮可上下调节音量。我用遥控器上的这个按钮做一些不同的事情,因为在我的应用程序中调整音量是不相关的。所以,我的问题是: 是否可以在应用程序本身或设备固件中禁用本机toast消息。我正在将我的应用程序构建到一个自定义ROM中,所以我应该可以完全访问toast消息,对吗 谢谢大家! 是的。。您可以自定义它 Toast customToast = new Toast(getBaseContext()); customToast = To

我正在创建一个应用程序,该应用程序实现远程控制。遥控器上的一个按钮可上下调节音量。我用遥控器上的这个按钮做一些不同的事情,因为在我的应用程序中调整音量是不相关的。所以,我的问题是:

是否可以在应用程序本身或设备固件中禁用本机toast消息。我正在将我的应用程序构建到一个自定义ROM中,所以我应该可以完全访问toast消息,对吗

谢谢大家!
是的。。您可以自定义它

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