gpt4 book ai didi

android - 在服务中将方向设置为横向模式

转载 作者:行者123 更新时间:2023-12-02 16:09:20 26 4
gpt4 key购买 nike

我找到了可以实现我想要的功能的代码,例如:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

但这似乎需要处于 Activity 中,而不是服务中。

基本上我想要做的是接收 ON_BOOT_COMPLETED Intent 并启动服务,让服务定期检查(或最好在何时通知)屏幕方向已更改,并将其设置回横向。

有没有办法在服务中做到这一点?我一整天都在寻找答案,但一直找不到任何东西,所以如果这是一个重复的问题,我深表歉意。

注意:这是一个付费自由项目,只能在付钱给我做这项工作的人拥有的设备上使用。它不用于恶意软件或任何其他此类目的

最佳答案

首先,强制性的“请不要这样做”。我希望您有这样做的合理理由,因为用户可以通过禁用屏幕旋转来设置此首选项的合法方法。

也就是说,您无法通过服务执行此操作。正如您所指出的,Activity.setRequestedOrientation(int)属于 Activity 类,不能在任何其他上下文中使用。

您可能会考虑做的是创建一个透明的系统覆盖窗口,并强制其横向方向。

为了回答您的后续问题,您可以从服务中调用以下代码 fragment :

private static final boolean DISPLAY = false;

@Override
public void onCreate() {
final View view = new View(this);
int dimension = 0;
int pixelFormat = PixelFormat.TRANSLUCENT;
if (DISPLAY) {
view.setBackgroundColor(Color.argb(128, 255, 0, 0));
dimension = LayoutParams.MATCH_PARENT;
pixelFormat = PixelFormat.RGBA_8888;
}
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
dimension, dimension,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
pixelFormat);
params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
final WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(view, params);
}

在代码 fragment 中,DISPLAY 是一个简单的开关,用于启用覆盖窗口的显示以进行测试。 (您应该看到半透明的红色覆盖层。)

关于android - 在服务中将方向设置为横向模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com