Androidアプリケーションの上に常にオーバーレイウィンドウを描画する方法はありますか?
私はAndroidx86ポートを使用しており、システム権限を持っています。
@編集:オーバーレイの下のビューは、すべてのイベントを受信する必要があります。
Androidアプリケーションの上に常にオーバーレイウィンドウを描画する方法はありますか?
私はAndroidx86ポートを使用しており、システム権限を持っています。
@編集:オーバーレイの下のビューは、すべてのイベントを受信する必要があります。
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;
}
}
ただし、次の追加の許可が必要です。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
そして、マニフェストにサービスを登録するだけです。
<service android:name=".OverlayService" ></service>
そしてそれを開始します:
startService(new Intent(this, OverlayService.class));
このメソッドaddWatermarkWithinApplicationLifecycle()を削除するだけで、私のライブラリを使用できます。これにより、オーバーレイがアプリのライフサイクルに固定されます(電話アプリ全体にオーバーレイを表示したい場合)。これらの権限を追加することも忘れないでください-
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
<uses-permission android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION"/>
私のライブラリのgifプレビュー-