欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Android程序中:等候 Android 对话框或窗口自动关闭的过程

最编程 2024-07-25 22:43:00
...
@RequiresApi(api = Build.VERSION_CODES.M) @Override public int onStartCommand(Intent intent, int flags, int startId) { showFloatingView(); return super.onStartCommand(intent, flags, startId); } /** * 悬浮窗控件可以是任意的View的子类类型 */ @RequiresApi(api = Build.VERSION_CODES.M) private void showFloatingView() { if (Settings.canDrawOverlays(getApplicationContext())) { //WindowManager 对象 manager = (WindowManager) getSystemService(WINDOW_SERVICE); //新建悬浮控件 //视频播放 displayView = View.inflate(getApplicationContext(), R.layout.view_display, null); MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); SurfaceView surfaceView = displayView.findViewById(R.id.video_display_surfaceview); final SurfaceHolder surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { mediaPlayer.setDisplay(surfaceHolder); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { } }); mediaPlayer.setOnPreparedListener(mp -> mediaPlayer.start()); try { mediaPlayer.setDataSource(this, Uri.parse("https://raw.githubusercontent.com/dongzhong/ImageAndVideoStore/master/Bruno%20Mars%20-%20Treasure.mp4")); mediaPlayer.prepareAsync(); } catch (IOException e) { Toast.makeText(this, "无法打开视频源", Toast.LENGTH_LONG).show(); } //设置layoutParams params = new WindowManager.LayoutParams(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; } else { params.type = WindowManager.LayoutParams.TYPE_PHONE; } params.format = PixelFormat.RGBA_8888; // params.width = WindowManager.LayoutParams.WRAP_CONTENT; // params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.width = 600; params.height = 400; //设置不阻挡其他view的触摸事件 params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; // params.x = 500; // params.y = 300; // params.gravity = Gravity.CENTER_HORIZONTAL; //添加view到windowManager manager.addView(displayView, params); //触摸事件 displayView.setOnTouchListener(new OnFloatingButtonTouchListener()); } }

推荐阅读