이렇게 서비스 클래스를 만듭니다.
public class MultiDisplayService extends Service {
@Override
public void onCreate() {
super.onCreate();
DisplayManager dm = (DisplayManager)getApplicationContext().getSystemService(DISPLAY_SERVICE);
if (dm != null){
Display dispArray[] = dm.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
if (dispArray.length>0){
Display display = dispArray[0];
Log.e(TAG,"Service using display:"+display.getName());
Context displayContext = getApplicationContext().createDisplayContext(display);
WindowManager wm = (WindowManager)displayContext.getSystemService(WINDOW_SERVICE);
View view = LayoutInflater.from(displayContext).inflate(R.layout.fragment_main,null);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.TYPE_TOAST,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSLUCENT);
wm.addView(view, params);
}
}
}
응용 프로그램 클래스에서 서비스를 시작하십시오.
public class MultiDisplayApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
startService(new Intent(this, MultiDisplayService.class));
}
}
당신은 아마 어떤 권한이 필요하지 않습니다하지만 해킹처럼 보인다 DisplayManager.DisplayListener
mDisplayManager = (DisplayManager) this.getSystemService(Context.DISPLAY_SERVICE);
mDisplayManager.registerDisplayListener(this, null);
이 WindowManager.LayoutParams.TYPE_TOAST
사용에 따라 제거/논리를 좀 더 복잡한 디스플레이 추가가 필요합니다. WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
이 더 적당 할 수 있지만 재주문이 가능할 수 있습니다.
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
AndroidManifest.
좋은 예, 감사합니다. – Kumar