经过几周的调查,发现了错误的原因。
首先,在build.gradle在文件中,只需引用产品使用的插件。 因此,就我而言,我在阅读等待启用m或o传感器后,José说,问题可能出在磁力计上(例如'm')。在gradle本引用从以下内容中删除:plugins'accelerometer 设备,方向,存储,振动,显示,生命周期,状态栏,位置,但问题仍然存在。
在同一个方向上,我注意到 o”。 像方向这样的 o”? 也许。 正如我已在AndroidManifest.xml智能手机的方向设置在文件中:build.gradle文件没用?
我做到了,现在游戏正常运行。
总之,即使方向传感器在手机上不起作用,也不会干扰我的产品。
为什么只是一个问题:JavaFxPorts插件不直接使用Orientation?
注意:最后,我还删除了build.gradle文件中所有未使用的插件如下:
插件加速度计
注:调查方向错误:
这种异常有两个可能的原因(请参考跟踪)
第一个原因:这个FATAL异常症状可能与有关 了解Android中的AudioTrack断言中提到的另一种症状相似。 在这种情况下,Mimmo这样解决了它:使AudioTrack缓冲区的大小和从minBufferSize大小相同。这可以解决你的问题。
但是,就我而言,使用它AndroidNativeAudio和NativeAudioService这个缓冲区的大小无法设置,因为就我而言, 没有办法AudioTrack分配缓冲区的大小minBufferSize value 。 另一种可能性是将其设置为理由Gluon低音级管理(我认为)。
问题1:人怎么在?javafxports Gluon AndroidNativeAudio设置在上下文中AudioTrack缓冲区大小?
问题2:在底层,在Android在端口附近,如果存在,它们的大小分布是什么?
第二个原因:
为什么走线指向磁力计( QMCX983D”)?
通过删除磁力计的任何引用来修改build.gradle文件完成后,我已经清理好了。Eclipse项目。 因此,.apk已更改(从19.4 Mo更改为18 Mo)。
但是,在跟踪中,仍然引用QMCX983D(磁力计)。 正常吗 我有一部Archos Diamond S手机。
我没有磁力仪服务的源代码。
那为什么一条线总能包含对传感器的引用呢? 例如,获取磁力计数据的线程可能会产生隐藏的依赖关系?
谢谢
注意:“ ArrayIndexOutOfBoundsException只是问题的结果。 这个答案想去问题源。
D/AudioTrackShared( 319): front(0x6d4800), mIsOut(1), mAvailToClient=1024 stepCount=1024 minimum=2048, FUTEX_WAKE
D/AudioTrackShared( 319): front(0x6d4800), mIsOut 1, avail 2048, mFrameCount 4096, filled 2048
V/AudioTrack( 319): obtainBuffer(2048) returned 2048 = 2048 0 err 0
D/AudioTrackShared( 319): front(0x6d4800), mIsOut 1, avail 0, mFrameCount 4096, filled 4096
D/AudioTrackShared( 319): front(0x6d4800), mIsOut 1, avail 0, mFrameCount 4096, filled 4096
D/AudioTrackShared( 319): front(0x6d4800), mIsOut 1, obtainBuffer() FUTEX_WAIT
D/Surface (13077): Surface::setBuffersDimensions(this=0xf45e5500,w=676,h=1206)
D/QMCX983D( 387): waitting for enable m or o sensor
D/QMCX983D( 387): QMC_IOCTL_GET_OPEN_STATUS failed
D/QMCX983D( 387): QMC_IOCTL_GET_DELAY failed
D/QMCX983D( 387): QMC_IOCTL_SET_YPR failed!
E/AndroidRuntime(13077): FATAL EXCEPTION: JavaFX Application Thread
E/AndroidRuntime(13077): Process: com.gluonapplication, PID: 13077
E/AndroidRuntime(13077): java.lang.ArrayIndexOutOfBoundsException: length=30; index=-1
E/AndroidRuntime(13077): at java.util.ArrayList.get(ArrayList.java:310)
E/AndroidRuntime(13077): atvafx.scene.Parent.updateCachedBounds(Parent.java:1583)
E/AndroidRuntime(13077): at javafx.scene.Parent.recomputeBounds(Parent.java:1527)
E/AndroidRuntime(13077): at javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1380)
E/AndroidRuntime(13077): at javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
E/AndroidRuntime(13077): at javafx.scene.Node.updateGeomBounds(Node.java:3577)
E/AndroidRuntime(13077): at javafx.scene.Node.getGeomBounds(Node.java:3530)
E/AndroidRuntime(13077): at javafx.scene.Node.updateBounds(Node.java:564)
E/AndroidRuntime(13077): at javafx.scene.Parent.updateBounds(Parent.java:1711)
E/AndroidRuntime(13077): at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2408)
E/AndroidRuntime(13077): at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Toolkit.java:348)
E/AndroidRuntime(13077): at com.sun.javafx.tk.Toolkit.access$lambda$3(Toolkit.java)
E/AndroidRuntime(13077): at com.sun.javafx.tk.Toolkit$$Lambda$4.run(Unknown Source)
E/AndroidRuntime(13077): at java.security.AccessController.doPrivileged(AccessController.java:52)
E/AndroidRuntime(13077): at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:347)
E/AndroidRuntime(13077): at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:374)
E/AndroidRuntime(13077): at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:525)
E/AndroidRuntime(13077): at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:503)
E/AndroidRuntime(13077): at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$387(QuantumToolkit.java:321)
E/AndroidRuntime(13077): at com.sun.javafx.tk.quantum.QuantumToolkit.access$lambda$2(QuantumToolkit.java)
E/AndroidRuntime(13077): at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$3.run(Unknown Source)
E/AndroidRuntime(13077): at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
E/AndroidRuntime(13077): at co.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
E/AndroidRuntime(13077): at java.lang.Thread.run(Thread.java:818)
V/SettingsProvider( 842): call(global:dropbox:data_app_crash) for 0
build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.3.2'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.gluonapplication.GluonApplication'
dependencies {
compile 'com.gluonhq:charm:4.3.0'
}
jfxmobile {
downConfig {
version '3.2.0'
plugins 'accelerometer', 'device', 'orientation', 'storage', 'vibration', 'display', 'lifecycle', 'statusbar', 'position'
}
android {
applicationPackage = 'com.gluonapplication'
manifest = 'src/android/AndroidManifest.xml'
androidSdk = 'C:/Users/pascal/AppData/Local/Android/sdk'
resDirectory = 'src/android/res'
compileSdkVersion = '25'
buildToolsVersion = '25.0.1'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
跟踪,无需明确引用磁力计:
I/MediaPlayerService( 318): [setDataSource] setDataSource fd=57, offset=3166308, length=90559
I/MediaPlayerService( 318): [setDataSource_drm_preCheck] fd=57,path=/data/app/com.gluonapplication-1/base.apk
D/DrmMtkUtil/DrmUtil( 318): checkDcf ----> fd [57]
V/DrmMtkUtil/DrmUtil( 318): checkDcf: first 3 bytes [50][4b][3]
E/DrmMtkUtil/DrmUtil( 318): checkDcf: not dcf type, dcf version value [80]
E/Cta5File( 318): Cta5File::isCta5NormalFile false, bad magic:PK
E/Cta5File( 318): Cta5File::isCta5MultimediaFile false, bad magic:
D/DrmMtkUtil( 318): isDcf: result [-1], isCta5:result [0]
D/Sonivox ( 318): EAS_HWOpenFile ----> use file descriptor [58]
D/DrmMtkUtil/DrmUtil( 318): checkDcf ----> fd [58]
V/DrmMtkUtil/DrmUtil( 318): checkDcf: first 3 bytes [50][4b][3]
E/DrmMtkUtil/DrmUtil( 318): checkDcf: not dcf type, dcf version value [80]
E/Cta5File( 318): Cta5File::isCta5NormalFile false, bad magic:PK
E/Cta5File( 318): Cta5File::isCta5MultimediaFile false, bad magic:
D/DrmMtkUtil( 318): isDcf: result [-1], isCta5:result [0]
D/Sonivox ( 318): EAS_HWOpenFile ----> checked, not a DRM file.
D/AudioTrackShared( 318): front(0x343e), mIsOut 1, avail 2972, mFrameCount 4458, filled 1486
V/AudioTrack( 318): obtainBuffer(1486) returned 2972 = 1486 + 1486 err 0
D/AudioTrackShared( 318): front(0x343e), mIsOut 1, avail 1486, mFrameCount 4458, filled 2972
V/AudioTrack( 318): obtainBuffer(1486) returned 1486 = 38 + 1448 err 0
D/MediaPlayerFactory( 318): getPlayerType(): using fd, check for DRM protected midi.
D/AudioTrackShared( 318): front(0x343e), mIsOut 1, avail 1448, mFrameCount 4458, filled 3010
D/DrmMtkUtil/DrmUtil( 318): checkDcf ----> fd [57]
V/AudioTrack( 318): obtainBuffer(1448) returned 1448 = 1448 + 0 err 0
V/DrmMtkUtil/DrmUtil( 318): checkDcf: first 3 bytes [50][4b][3]
E/DrmMtkUtil/DrmUtil( 318): checkDcf: not dcf type, dcf version value [80]
D/AudioTrackShared( 318): front(0x343e), mIsOut 1, avail 0, mFrameCount 4458, filled 4458
D/FileSourceProxy( 318): Fd: 58 register!
D/AudioTrackShared( 318): front(0x343e), mIsOut 1, avail 0, mFrameCount 4458, filled 4458
D/AudioTrackShared( 318): front(0x343e), mIsOut 1, obtainBuffer() FUTEX_WAIT
D/MediaPlayerFactory( 318): Before sniff local sdp
D/MediaPlayerFactory( 318): After sniff local sdp
D/FileSourceProxy( 318): Fd: 58 unregister!
D/FileSourceProxy( 318): Fd: 58, File Cache hit rate: 0.00
D/FileSourceProxy( 318): Fd: 58 register!
D/WVMDrmPlugIn( 317): WVMDrmPlugin::onInitialize : 5043
D/WVMDrmPlugIn( 317): WVMDrmPlugin::onSetOnInfoListener : add 5043
D/DrmCtaPlugIn( 317): onInitialize() : uniqueId : 5043
D/DrmCtaPlugIn( 317): encrypt thread has being created
D/DrmCtaPlugIn( 317): decrypt thread has being created
D/DrmCtaPlugIn( 317): onSetOnInfoListener(): uniqueId : 5043
D/DrmCtaPlugIn( 317): onSetOnInfoListener(): native
D/DrmMtkPlugIn( 317): DrmMtkPlugIn::onInitialize : 5043
D/DrmMtkPlugIn( 317): DrmMtkPlugIn::onSetOnInfoListener : 504
D/DrmManagerClient(Native)( 318): DrmManagerClient(): mUniqueId=[5043]
D/DrmManager(Native)( 317): pid = 11680
D/DrmManager(Native)( 317): pid_str = 11680
D/DrmCtaPlugIn( 317): onOpenDecryptSession() [5043], fd = 15, offset = 3166308, length = 9055
E/DrmCtaPlugIn( 317): [ERROR]onOpenDecryptSession - The key is not set by user
D/DrmMtkPlugIn( 317): onOpenDecryptSession() [5043], Start with file descryptor
D/DrmMtkUtil/DrmUtil( 317): parseDcf ----> fd [15
V/DrmMtkUtil/DrmUtil( 317): parseDcf: first 3 bytes [50][4b][3]
E/DrmMtkUtil/DrmUtil( 317): parseDcf: not dcf type, dcf version value [80]
E/DrmMtkPlugIn( 317): onOpenDecryptSession() : failed to parse dcf file.
D/WVMDrmPlugIn( 317): WVMDrmPlugin::onTerminate : 5043
D/DrmCtaPlugIn( 317): onTerminate():uniqueId : 5043
D/DrmMtkPlugIn( 317): DrmMtkPlugIn::onTerminate : 5043
D/QMCX983D( 369): waitting for enable m or o sensor
D/QMCX983D( 369): QMC_IOCTL_GET_OPEN_STATUS failed
D/QMCX983D( 369): QMC_IOCTL_GET_DELAY failed
D/QMCX983D( 369): QMC_IOCTL_SET_YPR failed!
D/DrmManagerClient(Native)( 318): ~DrmManagerClient(): mUniqueId=[5043]
E/AndroidRuntime(11680): FATAL EXCEPTION: JavaFX Application Thread
E/AndroidRuntime(11680): Process: com.gluonapplication, PID: 11680
E/AndroidRuntime(11680): java.lang.ArrayIndexOutOfBoundsException: length=30; index=-
E/AndroidRuntime(11680): at java.util.ArrayList.get(ArrayList.java:310)
E/AndroidRuntime(11680): at javafx.scene.Parent.updateCachedBounds(Parent.java:1583)
E/AndroidRuntime(11680): at javafx.scene.Parent.recomputeBounds(Parent.java:1527)
E/AndroidRuntime(11680): at javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1380)
E/AndroidRuntime(11680): at javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
E/AndroidRuntime(11680): at javafx.scene.Node.updateGeomBounds(Node.java:3577)
E/AndroidRuntime(11680): at javafx.scene.Node.getGeomBounds(Node.java:3530)