对于某些要求,我的活动需要两种不同的xml布局:
不幸的是Android不容许景观反向创建单独的布局(如我们可以为纵向和横向与做layout-land和layout-port).
AFAIK,唯一的方法是从java代码更改activity-xml.
1)覆盖onConfigurationChanged()方法来检测方向变化,但我无法弄清楚它是横向还是横向反转:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.d("TEST","Landscape");
}
}
Run Code Online (Sandbox Code Playgroud)
(android:configChanges="keyboardHidden|orientation|screenSize|layoutDirection"在清单中我的活动标签中的whith)
2)使用此答案中建议的OrientationEventListenerwith SENSOR_DELAY_NORMAL,但在进入我的块之前设备方向会发生变化,因此我得到了视图的延迟更新:if
mOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL){
@Override
public void onOrientationChanged(int orientation) {
if (orientation==0){
Log.e("TEST", "orientation-Portrait = "+orientation);
} else if (orientation==90){
Log.e("TEST", "orientation-Landscape = "+orientation);
} else if(orientation==180){
Log.e("TEST", "orientation-Portrait-rev = "+orientation);
}else if (orientation==270){
Log.e("TEST", …Run Code Online (Sandbox Code Playgroud) android landscape orientation device-orientation orientation-changes
我们如何将手机设置为仅限肖像并允许平板电脑在纵向和横向之间切换?
我正在使用Ionic/Cordova.
目前我已配置使用以下属性在config.xml中将应用程序设置为纵向模式
<preference name="orientation" value="portrait" />
Run Code Online (Sandbox Code Playgroud) 我根据Android的实施应用内结算指南实施了应用内结算(v3).
一切正常,直到我旋转设备,然后立即将其旋转回原来的方向.实际上,有时它会起作用,有时会崩溃:
java.lang.IllegalStateException: IabHelper was disposed of, so it cannot be used.
似乎这与IAB的异步性质有关,尽管我并不积极.
有什么想法吗?
android device-orientation illegalstateexception in-app-billing
接口方向和设备方向有什么区别?两者看起来都一样,但它们之间的实际区别是什么?
我在这里有一个思考和搜索问题,但找不到好的方向……我希望开发一种算法,通过使用设备运动在 360 度图像(球状)中移动。
因此,如果用户将设备指向他面前,他将获得图像的确定原点。当他在他周围移动设备时,全景图像会随之移动。
我可以研究任何想法或来源?
感谢并祝所有使用 Swift 的人好运 :)
在 iOS 8 中,他们添加了设备方向检测UIInterfaceOrientationUnknown(在此处查看预发布文档)
UIInterfaceOrientationUnknown
无法确定设备的方向。
在 iOS 8.0 及更高版本中可用。
typedef enum : NSInteger {
UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown,
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
} UIInterfaceOrientation;
Run Code Online (Sandbox Code Playgroud)
我看到它的方式,只有4种方式的装置可能可能去过Portrait,UpsideDown,LandscapeRight和LandscapeLeft。那么在什么情况下你会遇到未知的设备方向?
我一直在尝试将 Camera2 api 集成到我的应用程序中。当我从纵向模式切换到横向模式时,它会引发异常
java.lang.IllegalStateException: CameraDevice was already closed
at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:1984)
at android.hardware.camera2.impl.CameraDeviceImpl.submitCaptureRequest(CameraDeviceImpl.java:825)
at android.hardware.camera2.impl.CameraDeviceImpl.setRepeatingRequest(CameraDeviceImpl.java:880)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.setRepeatingRequest(CameraCaptureSessionImpl.java:231)
at com.essentialsln.memtalk.ui.fragments.Camera2Fragment$11.onConfigured(Camera2Fragment.java:795)
at java.lang.reflect.Method.invoke(Native Method)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud) 我正在尝试读取绝对的DeviceOrientation事件值以创建HTML5罗盘移动Web应用程序。
如果使用此代码,则可以毫无问题地获取alpha,beta和gamma值:
window.addEventListener('deviceorientation', function(event) {
alpha = event.alpha;
beta = event.beta;
gamma = event.gamma;
});
Run Code Online (Sandbox Code Playgroud)
但是,这些值对我没有帮助,因为我需要获取绝对值才能找到North的确切位置等。我找到了这篇文章,其中解释了如何使用event的绝对值。
当我将代码更改为此:
window.addEventListener('deviceorientationabsolute', function(event) {
alpha = event.alpha;
beta = event.beta;
gamma = event.gamma;
var absolute = event.absolute;
});
Run Code Online (Sandbox Code Playgroud)
Alpha,Beta和Gamma值设置为null。这对我来说很奇怪,因为event.absolute值设置为true。据此,应该显示事件值。
任何人有或有任何类似的问题?任何帮助,将不胜感激; 另外,如果有HTML5 Compass App的一些实用示例,将其发布在此处会很有帮助。
先感谢您!
在 iOS 12.2 中,Apple 默认阻止访问设备方向数据。这必须现在手动启用(-__-),如解释在这里。
问题是,即使在设置中启用“运动和方向访问”后,当我尝试在 deviceorientation 事件上设置侦听器时,我还是在 Safari 调试器上收到此警告消息:
function onDeviceOrientationChange (e) {
console.log(e)
}
window.addEventListener("deviceorientation", onDeviceOrientationChange, false);
// ---> Blocked attempt to add a device motion or orientation listener because the browsing context is not secure.
Run Code Online (Sandbox Code Playgroud)
我正在webpack dev server上开发。我怎样才能像以前一样摆脱这个块并访问设备方向数据?
javascript device-orientation ios webpack webpack-dev-server

window.addEventListener('deviceorientation', function(event) {
console.log(event.alpha + ' : ' + event.beta + ' : ' + event.gamma);
});
Run Code Online (Sandbox Code Playgroud)
3.但是,如果我从任何 android 设备事件中打开此链接,则无法正常工作。我看不到任何控制台日志或警报..是否需要任何额外的设置才能从 android 获取方向详细信息..
任何形式的帮助表示赞赏。
android ×3
ios ×3
javascript ×2
motion ×2
objective-c ×2
compass ×1
cordova ×1
core-motion ×1
html5 ×1
ionic ×1
ios8 ×1
landscape ×1
orientation ×1
three.js ×1
webpack ×1