【问题标题】:Auto screen orientation changes with respect to time intervals自动屏幕方向随时间间隔变化
【发布时间】:2012-10-13 11:21:47
【问题描述】:

我想每 500 毫秒旋转一次屏幕方向,即从横向 -> 爱国者,反之亦然(这是在真实设备上(不是在模拟器上))。 是否有任何可以旋转当前屏幕方向的 shell 命令?这不对应于任何应用程序。我只想在所有可用方向上旋转屏幕,而与当前活动无关

我已经检查了 adb shell 以将屏幕更改为横向:

服务调用窗口 18 i32 1

将屏幕改为纵向:

服务调用窗口 18 i32 0

但是这些在真实设备上不起作用..谁能提供一个更好的解决方案来做到这一点,对我真的很有帮助。

至少分享/指向任何可用的脚本/apk 将执行此自动定位。

提前致谢

【问题讨论】:

  • 使用线程你必须在特定的时间间隔内改变方向 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);和 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  • 我们能否将其作为另一个 apk 来执行,它会根据给定的时间间隔自动旋转屏幕方向?

标签: android android-ndk android-monkey


【解决方案1】:

好吧 adb shell 仍然是一个 shell(如果有点削减)

你可以这样做:

sw=1;
while true; do
    [[ "$sw" = 1 ]] && sw=0 || sw=1;
    service call window 18 i32 $sw;
    sleep 1
done;

这是它的单行版本(以防您无法将其写入文件)

sw=1; while true; do [[ "$sw" = 1 ]] && sw=0 || sw=1; service call window 18 i32 $sw; sleep 1; done;

这将每秒切换一次方向(我认为睡眠时间不会少于几秒)

【讨论】:

  • 我已经尝试过这个技巧,但仍然没有运气:( .. 调用命令后,真实设备上什么都没有发生.. 我已经调试了几乎所有我能做的.. 我们明确是否有任何本机代码可以处理这种类型的场景?
  • 这是我从控制台看到的
  • root@android:/ # 服务调用窗口 18 i32 0 服务调用窗口 18 i32 0 结果:Parcel(fffffffc ffffffff '........')
  • 我已经在 Windows 机器上的另一个模拟器上尝试过,发现由于 java.lang.NullPointerException 正在发生窗口管理器崩溃。是否有任何环境设置/设置可以做到这一点?
【解决方案2】:

我也遇到了同样的问题,在here找到了解决办法。

简而言之,这就是你必须做的:

首先使用以下命令禁用自动旋转:

adb shell content insert --uri content://settings/system --bind name:s:accelerometer_rotation --bind value:i:0

并旋转:

    adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:x

对于横向,将 x(在行尾)替换为 1,对于纵向,将其替换为 0,上一条注释中的代码应该可以正常工作:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多