Fri*_*ich 4 linux android overlay framebuffer
有没有办法在任何Android应用程序之上绘制一个覆盖窗口?
我使用Android x86端口并拥有系统权限.
@Edit:叠加层下面的视图应该接收所有事件.
可以通过创建一个Service在当前添加视图的方式来实现WindowManager:
public class OverlayService extends Service {
@Override
public void onCreate() {
super.onCreate();
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
View overlay = /* create your overlay here */;
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
windowManager.addView(overlay , params);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
但是你需要这个额外的许可:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Run Code Online (Sandbox Code Playgroud)
然后只需在清单中注册服务:
<service android:name=".OverlayService" ></service>
Run Code Online (Sandbox Code Playgroud)
然后开始吧:
startService(new Intent(this, OverlayService.class));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3454 次 |
| 最近记录: |