0
我在零售应用程序,需要发挥环路的视频全屏,并限制了设备本身的控制,因此应用程序不能被客户关闭,篡改设备工作等真正的全屏活动
我已经研究了Android的沉浸式模式,但那只能让我走到一半。我需要能够从根本上禁用软键和硬键导航键,并防止打开状态栏下拉菜单。
我完全错过了一些沉浸式模式,这使得这可能或有任何黑客可以完成这项任务?谢谢。
我在零售应用程序,需要发挥环路的视频全屏,并限制了设备本身的控制,因此应用程序不能被客户关闭,篡改设备工作等真正的全屏活动
我已经研究了Android的沉浸式模式,但那只能让我走到一半。我需要能够从根本上禁用软键和硬键导航键,并防止打开状态栏下拉菜单。
我完全错过了一些沉浸式模式,这使得这可能或有任何黑客可以完成这项任务?谢谢。
您可以尝试禁用硬背面按键和音量键的硬件导航键(声音键,背按等)。
要禁用后退按钮
@Override
public void onBackPressed() {
// Leave it blank to disable it;
}
要禁用声音键
@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_UP) {
//do nothing
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_DOWN) {
//do nothing
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}
禁用状态栏下拉
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
setContentView(R.layout.your_layout);
编辑
要禁用状态下拉,请使用method。这是覆盖状态栏并消耗所有输入事件。它阻止了状态的扩展。
注:
Android清单
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
customViewGroup实施
WindowManager manager = ((WindowManager) getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE));
WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();
localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
localLayoutParams.gravity = Gravity.TOP;
localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
// this is to enable the notification to recieve touch events
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
// Draws over status bar
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
localLayoutParams.height = (int) (50 * getResources()
.getDisplayMetrics().scaledDensity);
localLayoutParams.format = PixelFormat.TRANSPARENT;
customViewGroup view = new customViewGroup(this);
manager.addView(view, localLayoutParams);
要禁用软键
禁用软键的最佳方法是通过固定应用程序(App Pinning)。最后以沉浸式模式创建应用程序。您也可以将您的应用设置为启动器。然后当主页按钮被点击时,你的应用程序将被调用,保持你的应用程序打开。
要做到这一点,添加两个类别。
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
的TYPE_SYSTEM_OVERLAY标志似乎使我VideoView没用,它播放音频,但完全是黑色的。另外,我已经解决了后退按钮的情况,更重要的是我在“禁用”时遇到了问题。 – Hybrid
您是否尝试过应用程序固定?也请附上您的活动。 – Abhi
不会应用固定要求5.0+以及必须手动启用每个设备上? – Hybrid