

Android:在service中实现悬浮窗效果时启动Unityplayer,画面无法正常显示
,4 年前
发布于技术交流
0
现象:在Service中通过将 UnityPlayer 作为一个view 添加到WindowManager中,然后通过命令行启动service,此时只能启动一个黑色的悬浮窗,但是无法显示Unity画面。
Unity:2019.4.27f1 平台: Android p void Unity() {
mWindowManager = (WindowManager) getApplication().getSystemService(Service.WINDOW_SERVICE); LayoutInflater inflater = (LayoutInflater) getApplication().getSystemService(Service.LAYOUT_INFLATER_SERVICE); rootview = inflater.inflate(R.layout.activity_main, null); relativeLayout =rootview.findViewById(R.id.test); WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS & ~WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT); params.packageName =getPackageName(); params.gravity = Gravity.BOTTOM | Gravity.CENTER; params.x = 0; params.y = 0; params.width = 800; params.height = 600; params.setTitle("My Container"); //权限判断
// if (Build.VERSION.SDK_INT >= 23) // { // if(!Settings.canDrawOverlays(getApplicationContext())) { // //启动Activity让用户授权 // Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // startActivity(intent); // return; // } else { // //执行6.0以上绘制代码 // } // } else { // //执行6.0以下绘制代码、 // }
mWindowManager.addView(rootview,params); mUnityPlayer= new UnityPlayer(getApplicationContext()); relativeLayout.addView(mUnityPlayer.getView()); int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1); boolean trueColor8888 = false; mUnityPlayer.init(glesMode, trueColor8888); Log.i("111", "mUnityPlayer.resume()"); mUnityPlayer.requestFocus(); Log.i("111", "mUnityPlayer.resume()"); mUnityPlayer.resume(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("111", "mUnityPlayer.requestFocus()"); mUnityPlayer.onWindowFocusChanged(true); return START_STICKY; }
希望社区的大佬们,帮忙看看
837 次浏览
评论 0
2个回答
0
我也遇到同样的问题,楼主解决了吗!?
,2 年前回答
评论 0
0
关注。
,4 年前回答
评论 0

问
AI
全新AI功能上线
1. 基于Unity微调:专为Unity优化,提供精准高效的支持。
2. 深度集成:内置于团结引擎,随时查阅与学习。
3. 多功能支持:全面解决技术问题与学习需求。

问
AI