首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改另一个应用程序的方向

更改另一个应用程序的方向
EN

Stack Overflow用户
提问于 2013-01-26 22:29:55
回答 2查看 1K关注 0票数 1

我正在创建一个应用程序,它将改变其他一些已经安装的应用程序的方向,通过ApplicationInfo对象读取其他安装的应用程序的方向很简单,但没有办法改变它。

经过一些研究和开发,我注意到类似类型的应用程序(改变方向)也运行Service,这意味着它们可以在飞行中改变方向,但我不知道它们到底是如何做到的。

例如,像智能旋转器应用程序这样做的https://play.google.com/store/apps/details?id=net.xdevelop.rotator_t&hl=en

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-01 05:53:51

您引用的其他应用程序所做的事情可能与您预期的不同。它们基于设备的加速计启用屏幕旋转;也就是说,用户旋转设备,方向发生变化。它们不会为任何应用程序设置特定的方向。请注意,如果在横向模式下禁用自动旋转,则方向通常会返回到纵向。

我以前也做过和其他应用程序一样的事情。不幸的是,这是我无法分享的专有商业代码。

该方法有两个组成部分:

  1. 检测前台应用程序何时是目标应用程序
  2. 更改系统范围内的display orientation

首选项

显然,你也必须反其道而行之,也就是事后再把它改回来。

在SO的其他地方有一些片段1的例子。在我的例子中,我编写了一个不断轮询的服务,以查看前台应用程序是什么(因为没有相关的系统事件来通知应用程序的更改)。这不是一件微不足道的事情,但它是可以做到的。

片段2的相关设置是Settings.System.ACCELEROMETER_ROTATION。我认为你可以在所有版本上使用普通的应用程序权限来编写它。它的代码片段如下:

代码语言:javascript
复制
        Settings.System.putInt(
             app.getContentResolver(),
             Settings.System.ACCELEROMETER_ROTATION,
             orientationEnabled ? 1 : 0
        );

还要注意的是,可以编写一个忽略系统屏幕旋转的应用程序;也就是说,它将在设计的任何方向上保持锁定。不过,这并不常见。

票数 2
EN

Stack Overflow用户

发布于 2013-01-29 18:05:54

您可以通过进程间通信来完成此操作。您有几个选项:

1-您可以使用SharedPreferences。设置应用程序中的WORLD_READABLE首选项,以便在每次从目标应用程序启动时读取。看看this吧。

2-您可以将此首选项写入SD卡上的文件中,并以相同的方式读取它。

3-如果你的目标应用程序正在运行(也就是说,它有一个服务或其他东西,所以它的进程是活动的),你可以广播一个意图并从你的目标应用程序接收它。Here你可以找到一篇关于这个主题的文章。

4- ...简而言之,您需要向目标应用程序传递一个参数,并像在setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);中一样设置方向

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14537859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档