Android定位更改

Android定位更改,android,screen-orientation,screen-rotation,android-4.0.3-ice-cream-sandwich,Android,Screen Orientation,Screen Rotation,Android 4.0.3 Ice Cream Sandwich,我有一个名为SingleTouchTest的简单活动来理解屏幕触摸。奇怪的是,SingleTouchTest以我所在的任何方向启动,但旋转设备不会导致屏幕旋转 我的测试设备是运行安卓4.0.3的Acer A100 主活动包含一个列表视图,该视图导航到我的测试活动es,包括SingleTouchTest。我可以运行SingleTouchTest(下面是完整的代码),除了旋转之外没有任何问题。在AndroidManifest.xml(下面是完整的代码)中,我尝试了 android:configCha

我有一个名为
SingleTouchTest
的简单
活动来理解屏幕触摸。奇怪的是,
SingleTouchTest
以我所在的任何方向启动,但旋转设备不会导致屏幕旋转

我的测试设备是运行安卓4.0.3的Acer A100

活动
包含一个
列表视图
,该视图导航到我的测试
活动
es,包括
SingleTouchTest
。我可以运行
SingleTouchTest
(下面是完整的代码),除了旋转之外没有任何问题。在
AndroidManifest.xml
(下面是完整的代码)中,我尝试了

android:configChanges=“键盘|键盘隐藏|方向”
android:screenOrientation=“未指定”

而且它不会自动旋转。我甚至从
SingleTouchTest
中删除了
onConfigurationChanged()
方法,但什么也没发生

AndroidManifest.xml的完整代码


SingleTouchTest的完整代码

package com.Bespoke.AndroidBasics;
导入android.app.Activity;
导入android.content.res.Configuration;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.view.OnTouchListener;
导入android.widget.TextView;
公共类SingleTouchTest扩展活动
实现OnTouchListener{
StringBuilder=新的StringBuilder();
文本视图文本视图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
textView=新的textView(此);
setText(“触摸并拖动(仅一个手指!)”;
setOnTouchListener(这个);
这个.setContentView(textView);
}
公共布尔onTouch(视图v,运动事件){
setLength(0);//清除生成器
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
builder.append(“向下,”);
打破
case MotionEvent.ACTION\u移动:
builder.append(“move,”);
打破
case MotionEvent.ACTION\u取消:
builder.append(“取消”);
打破
case MotionEvent.ACTION\u UP:
builder.append(“up,”);
打破
}
append(event.getX());
生成器。追加(“,”);
append(event.getY());
String text=builder.toString();
Log.d(“触摸测试”,文本);
textView.setText(text);
return true;//如果false super.onTouch superceed我们,则使用事件
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
}
}
试试这个:

android:screenOrientation="fullSensor"

方向由设备方向传感器确定。显示器的方向取决于用户如何握住设备。这应该是你想要的。另外,要获得更多选项,请查看此链接-

在您的AndroidManifest中,去掉
|方向
。原因如下:

android:configChanges
允许您手动处理特定的配置更改。因为你没有告诉你的应用程序手动旋转(通过
onConfigurationChanged()
中的代码),所以它根本没有做任何事情。要允许应用程序自动使用旋转,必须告诉清单您正在手动处理方向

说明这一点的文档位于。

,因为您正在使用

 android:screenOrientation="unspecified"
对于每项活动,它是根据谷歌的定义为

默认值。系统选择方向。它的政策 用途以及在特定环境中所做的选择可能会有所不同 从一个设备到另一个设备

这让我认为,出于某种原因,设备正在声明所需的方向。也许试着把屏幕方向切换到

android:screenOrientation="fullSensor"

这将使它脱离特定设备的控制。

我无法访问您在pastebin上发布的链接。但我想我的答案应该是正确的,因为特里奇刚刚找到一篇文章,让我把我的HTC连接到ADB。旋转在我的手机上工作正常,但在A100上不行。我的所有其他应用程序都正常旋转发生了什么事?@Umined您是否尝试过改变方向?HTC Inclusible(2.3.3)的旋转方向为:
,但A100(4.0.3)仍保留在父级位置。我只能强制它为横向或纵向。不,但如果添加android:screenOrientation=“fullSensor”?会发生什么?HTC按预期旋转,A100什么也不做。唯一的android:ScreenOrettion设置是纵向或横向。我刚刚找到一篇让我的HTC连接到ADB的帖子。旋转在我的手机上工作正常,但在A100上不行。我的所有其他应用程序都正常旋转。发生了什么事?如果只是特定于设备,您可以检查设备的设置。它们也可能会中断方向更改。它们是否是(4.0.3)中用于应用程序屏幕方向控制的隐藏选项?(2.3.3)在“设置->显示->自动旋转屏幕”下有它,但我在(4.0.3)中发现了这样的选项,这完全取决于制造A100的ROM(即制造商),Acer制造A100(7英寸Tegra 2)build是Acer_AV041_A100_1.012.00_ww_GEN1它是该设备的官方ICS更新,但我手动安装,因为设置->关于->系统更新找不到更新。抱歉,不知道我怎么会错过你的答案,基本上写了相同的内容,所以删除我的答案我认为你不必删除它,因为你已经付出了自己的努力rt来写答案。像这样的事情确实会发生。这不是问题。