Articles of 方向

manifest.xml中的屏幕方向和值

我希望以横向或纵向方式使用我表单中的所有活动。 当用户选择方向时 – 这对所有活动都有效。 尝试“后面”选项方向。 根据谷歌的定位将取决于以前的活动。 我的第一个活动使用setRequestedOrientation来设置从用户方向中选择的内容。 接下来的活动必须遵循相同的方向。 我是否也必须在其代码中加入setRequestedOrientation? 或者依赖于表现中的“后面”参数? 设置setRequestedOrientation可能会导致onCreate再次出现? 更新:尝试“肖像”和setRequestedOrientation() – resilt si onCreate被调用2次。 问题出现在下一个活动中 – >因为第一个活动中的“肖像” – 安卓启动了具有相同方向的下一个活动。 它忽略了由我设定的“风景”方向:(

自定义相机活动的Android图像方向问题

我写了一个自定义相机活动来处理我在调用意图图像捕获时遇到的某些问题。 用户可以选择保存图像,也可以只使用从OnPictureTakenCallback返回的数据。 我遇到的问题是正确显示图像的方向。 我通过调用SetRequestedOrientation强制活动以纵向显示。 当用户拍照时,我怎么知道相机所处的正确方向? 即用户可以以90°(肖像)的旋转拍摄照片。 我试图在窗口管理器的默认显示上使用getRotation() ,但是将请求的方向设置为只返回Surface.ROTATION_0 。 更新:为了澄清我的另一个问题,如果用户不保存图像,如何从图片回调中的byte[]数据确定方向? 更新:使用此代码尝试下面的答案后,我得到的是ExifInterface.ORIENTATION_NORMAL。 我还改变了我的代码,只保存从相机返回的文件,因为我不确定是否有一种简单的方法来确定方向,只需要使用byte[]数据。 private PictureCallback mPicture = new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { File directory = new File(android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_PICTURES), “MyApp”); if(!directory.exists()) { if(!directory.mkdirs()) { Log.d(“CAMERA”, “Unable to create directory to save photos.”); return; } } File file = new File(directory.getPath() + file.separator […]

Android:纵向模式下的相机预览方向

我正在使用相机仅显示预览(不拍照或录制video)。 应用程序始终处于纵向模式(禁用横向模式)。 相机预览始终旋转90度ccw并且我无法更改它(既不使用setDisplayOrientation也不使用p.set(“orientation”, “portrait” )和p.set(“rotation”, 90) ) 。 预览总是像这样旋转还是依赖于设备? 如果在纵向模式下总是如此,我可以随后旋转图像。 或者有没有办法正确设置相机? 我已经阅读了很多有关此问题的post,但没有答案对我有用(Galaxy s2,Android v2.3)

setSelection不更改ListView位置

我在使用ListView setSelection方法时遇到了一些麻烦。 在横向和纵向方向之间切换时,我试图使列表视图保持相同的索引。 但是,每次我旋转并重新创建活动时,列表视图都会从顶部开始。 我使用的代码如下: @Override public void onSaveInstanceState(Bundle savedInstanceState) { ArrayList indices = new ArrayList(); for (Integer i : f_checkedMessages) { indices.add(i); } savedInstanceState.putIntegerArrayList(“CheckedMessageIndices”, indices); savedInstanceState.putInt(“ListIndex”, f_listView.getFirstVisiblePosition()); } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { ArrayList indices = savedInstanceState.getIntegerArrayList(“CheckedMessageIndices”); for (Integer i : indices) { f_checkedMessages.add(i); } int listIndex = savedInstanceState.getInt(“ListIndex”); f_listView.setSelection(listIndex); } 我使用调试器来validationlistIndex是否是正确的值。 还应该提到的是,在更改方向时,检查的列表视图项仍然存在。 […]

如何在android中切换方向锁?

我想在我的偏好Activity中创建checkbox,允许用户切换方向更改。 在类似的问题中,人们只编写完整的方向锁(通过覆盖onConfigurationChanged方法或在AndroidManifest.xml中添加configChanges)或方向强制(通过setRequestedOrientation)。 有没有办法切换方向锁? 编辑:我创建了一个方法,将首选方向设置为三种状态之一:横向,纵向和传感器。 此方法与检索方向getResources().getConfiguration().orientation)结合使用,并将检索到的方向保存到首选项中。 然后在需要锁定方向的活动中,我使用首选项的首选方向来激活此方法。 private static void setActivityOrientation(Activity activity, int preferenceOrientation) { if (preferenceOrientation == Configuration.ORIENTATION_LANDSCAPE) { if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ // You need to check if your desired orientation isn’t already set because setting orientation restarts your Activity which takes long activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } else if (preferenceOrientation == Configuration.ORIENTATION_PORTRAIT) { if( activity.getRequestedOrientation() […]

Android:禁用旋转90°,但旋转180°

我想创建一个Android应用程序(用于平板电脑),只应以横向显示,例如应用程序应忽略旋转90°,但支持旋转180°。 在清单中添加android:screenOrientation =“landscape”会导致应用忽略所有旋转(即使是180°旋转),即将设备旋转180°会使应用程序颠倒。 如果没有android:screenOrientation属性,我的应用程序将在所有四个位置“正确”显示。 将设备旋转180°会垂直翻转UI。 水平。 旋转设备时,会创建以下日志消息(这可能有帮助吗?): […]: INFO/WindowManager(1290): Setting rotation to 1, animFlags=0 Rotation is a value between 0 and 3 representing the current orientation. 总结:是否可以启用应用程序以支持横向方向?

在android中检测录制video的方向

我想制作我的自定义媒体播放器并需要video的方向信息(用于检测它是从前置或后置摄像头录制的)。 对于jpeg图像,我可以使用ExifInterface.TAG_ORIENTATION但对于video我如何能够find这些信息。 我试图从video文件中获取帧并将其转换为jpeg,但在所有情况下它总是提供方向0 。 请帮帮我。 提前致谢。

传感器TYPE_ACCELEROMETER / TYPE_MAGNETIC_FIELD和TYPE_ORIENTATION之间的值不同

有两种方法可以获得3个旋转值(方位角,俯仰,滚动)。 一个是注册TYPE_ORIENTATIONtypes的监听器。 这是最简单的方法,我从每次旋转中得到正确的值范围,如文档所示:azimuth:[0,359] pitch:[ – 180,180] roll:[ – 90,90] 另一个,你第一次看到它时最精确和最复杂。 Android推荐它,所以我想使用它,但我得到不同的值。 方位角:[ – 180,180]。 -180 / 180是S,0 i N,90 E和-90 W. 音高:[ – 90,90]。 90是90,-90是-90,0是0但-180/180(屏幕向下)是0。 roll:[ – 180,180]。 我应该得到相同的值,但有小数,对吧? 我有以下代码: aValues = new float[3]; mValues = new float[3]; sensorListener = new SensorEventListener (){ public void onSensorChanged (SensorEvent event){ switch (event.sensor.getType ()){ case Sensor.TYPE_ACCELEROMETER: aValues = […]

如何使用加速度计获得运动方向?

我正在开发一个Android应用程序,我想知道是否有可能检测到一个轴固定的运动方向。 例如,我想把手机放在桌子上并在我移动它时检测方向(左,右,上和下)。 距离没有必要,我只想知道准确的方向。

Android – 如何处理跌倒检测算法

我希望能够在我的应用程序中使用一个相当简单的跌倒检测算法。 在onSensorChanged()中,我得到当前x,x,z值的绝对值,并从中减去SensorManager.GRAVITY_EARTH(9.8 m / s)。 结果值必须连续10次大于阈值,以设置表示加速度计检测到下降的标志,阈值约为8m / s。 此外,我正在比较阈值已经通过时手机的方向和阈值不再通过时的方向,这设置了另一个标志,表示方位传感器检测到跌倒。 当两个标志都设置好后,就会发生一个事件,检查用户是否正确等等。我的问题是阈值,当手机直接保持时,加速度计的绝对值约为9.8米/秒,但当我保持静止时在某个角度它可以超过15米/秒。 这导致其他事件触发跌倒检测,如果我增加阈值以避免这种情况,则不会检测跌倒。 任何人都可以在这里给我一些建议,我应该使用哪些可能的值或如何改进我的方法? 非常感谢。