Android 通过gluon CharmDown服务从指南针和加速计传感器获取值
我有一款带有安卓5.1棒棒糖的手机ARCHOS DIAMOND S,它包括加速计和指南针传感器。我已经用一些免费软件检查过了Android 通过gluon CharmDown服务从指南针和加速计传感器获取值,android,javafx,accelerometer,compass-geolocation,gluon,Android,Javafx,Accelerometer,Compass Geolocation,Gluon,我有一款带有安卓5.1棒棒糖的手机ARCHOS DIAMOND S,它包括加速计和指南针传感器。我已经用一些免费软件检查过了 Label labelGluonHeading = new Label(); Services.get(CompassService.class).ifPresent(service -> { double heading = service.getHeading(); // heading (cap): from 0 to 359.99 Syste
Label labelGluonHeading = new Label();
Services.get(CompassService.class).ifPresent(service -> {
double heading = service.getHeading(); // heading (cap): from 0 to 359.99
System.out.println("**Heading:** " +heading);
labelGluonHeading.setText("GLUON_Cap: " + Double.toString(heading));
});
此外,显示服务、定位服务工作正常。但不是指南针和加速计服务
我是否忘记了Java代码中的某些内容
谢谢你的帮助
加速计:
“acceleration.getX()”不起作用。
在控制台中,写入“Test accelero 2a”,然后显示关机消息
Label labelVarAafficherAccelX = new Label();
Label labelVarAafficherAccelY = new Label();
System.out.println("Test accelero 1");
Services.get(AccelerometerService.class).ifPresent(service -> {
Acceleration acceleration = service.getCurrentAcceleration();
System.out.println("Test accelero 2a");
double getX = acceleration.getX(); // that does not work
System.out.println("**Test accelero 2b**");
String varAafficherAccelX = Double.toString(acceleration.getX());
String varAafficherAccelY = Double.toString(acceleration.getY());
labelVarAafficherAccelX.setText(varAafficherAccelX);
labelVarAafficherAccelY.setText(varAafficherAccelY);
System.out.printf("Acceleration field: %.2f, %.2f, %.2f ", acceleration.getX(), acceleration.getY(), acceleration.getZ());
});
指南针:
标题服务的返回值总是0.0(而我已经用免费软件成功地测试了这个手机传感器)
在build.gradle中,downconfig工作正常,因为当我添加服务时,它在构建应用程序之前加载一次
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', 'compass', 'device', 'orientation', 'storage', 'vibration', 'display', 'magnetometer', '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 = '23'
buildToolsVersion = '25.0.1'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
关于加速计,轨迹为:
02-01 19:59:39.349 17994 18039 I System.out: Test accelero 2b
02-01 19:59:39.350 17994 18039 W System.err: Exception in Application start method
02-01 19:59:39.352 317 18045 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872736, size: 46080, flags: 0x00000000, timestamp: 1920000 us (1.92 secs))
02-01 19:59:39.352 317 18045 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870816)
02-01 19:59:39.353 317 18045 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c313a0 (length 9600), timestamp 6720000 us (6.72 secs)
02-01 19:59:39.355 17994 18039 I System.out: QuantumRenderer: shutdown
02-01 19:59:39.356 17994 18034 W System.err: java.lang.reflect.InvocationTargetException
02-01 19:59:39.356 17994 18034 W System.err: at java.lang.reflect.Method.invoke(Native Method)
02-01 19:59:39.356 17994 18034 W System.err: at java.lang.reflect.Method.invoke(Method.java:372)
02-01 19:59:39.356 17994 18034 W System.err: at javafxports.android.DalvikLauncher$1.run(DalvikLauncher.java:188)
02-01 19:59:39.356 17994 18034 W System.err: at java.lang.Thread.run(Thread.java:818)
02-01 19:59:39.356 17994 18034 W System.err: Caused by: java.lang.RuntimeException: Exception in Application start method
02-01 19:59:39.356 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
02-01 19:59:39.356 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$138(LauncherImpl.java:182)
02-01 19:59:39.356 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.access$lambda$1(LauncherImpl.java)
02-01 19:59:39.356 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl$$Lambda$2.run(Unknown Source)
02-01 19:59:39.356 17994 18034 W System.err: ... 1 more
02-01 19:59:39.356 17994 18034 W System.err: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'double com.gluonhq.charm.down.plugins.Acceleration.getX()' on a null object reference
02-01 19:59:39.356 17994 18037 D Surface : Surface::setBuffersDimensions(this=0xf49e5500,w=720,h=1152)
02-01 19:59:39.356 288 960 I BufferQueueProducer: [SurfaceView](this:0x7f72779000,id:231,api:1,p:17994,c:288) new GraphicBuffer needed
02-01 19:59:39.356 288 960 I [MALI][Gralloc]: Usage: 0xb00, format: 0x1 stride: 720 vertical_stride: 1152 size: 3317760
02-01 19:59:39.357 317 18045 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872832, size: 46080, flags: 0x00000000, timestamp: 2160000 us (2.16 secs))
02-01 19:59:39.357 288 960 D GraphicBuffer: alloc, handle(0x7f7277d7a0) (w:720 h:1152 s:720 f:0x1 u:0x000b00) err(0)
02-01 19:59:39.357 317 18045 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870912)
02-01 19:59:39.357 317 18045 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31400 (length 9600), timestamp 6960000 us (6.96 secs)
02-01 19:59:39.358 17994 18034 W System.err: at com.gluonapplication.GluonApplication.lambda$start$0(GluonApplication.java:287)
02-01 19:59:39.358 17994 18034 W System.err: at com.gluonapplication.GluonApplication$$Lambda$1.accept(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at java.util.Optional.ifPresent(Optional.java:154)
02-01 19:59:39.358 17994 18034 W System.err: at com.gluonapplication.GluonApplication.start(GluonApplication.java:282)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$145(LauncherImpl.java:863)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.access$lambda$8(LauncherImpl.java)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl$$Lambda$9.run(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$158(PlatformImpl.java:326)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.access$lambda$6(PlatformImpl.java)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl$$Lambda$7.run(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.lambda$null$156(PlatformImpl.java:295)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.access$lambda$18(PlatformImpl.java)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl$$Lambda$19.run(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at java.security.AccessController.doPrivileged(AccessController.java:52)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.lambda$runLater$157(PlatformImpl.java:294)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.access$lambda$5(PlatformImpl.java)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl$$Lambda$6.run(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
02-01 19:59:39.358 17994 18034 W System.err: ... 1 more
02-01 19:59:39.358 17994 18037 D GraphicBuffer: register, handle(0xf00b17a0) (w:720 h:1152 s:720 f:0x1 u:0x000b00)
02-01 19:59:39.360 371 371 D QMCX983D: waitting for enable m or o sensor
02-01 19:59:39.360 371 371 D QMCX983D: QMC_IOCTL_GET_OPEN_STATUS failed
02-01 19:59:39.360 371 371 D QMCX983D: QMC_IOCTL_GET_DELAY failed
02-01 19:59:39.360 371 371 D QMCX983D: QMC_IOCTL_SET_YPR failed!
02-01 19:59:39.361 317 18045 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872928, size: 46080, flags: 0x00000000, timestamp: 2400000 us (2.40 secs))
02-01 19:59:39.361 317 18045 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072871008)
02-01 19:59:39.361 317 18045 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31460 (length 9600), timestamp 7200000 us (7.20 secs)
02-01 19:59:39.365 17994 18037 D Surface : Surface::setBuffersDimensions(this=0xf49e5500,w=720,h=1152)
02-01 19:59:39.366 317 18045 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072873024, size: 46080, flags: 0x00000000, timestamp: 2640000 us (2.64 secs))
02-01 19:59:39.366 288 474 I BufferQueueProducer: [SurfaceView](this:0x7f72779000,id:231,api:1,p:17994,c:288) new GraphicBuffer needed
02-01 20:20:24.870 19093 19137 I System.out: **Deb test compass**
02-01 20:20:24.870 371 371 D QMCX983D: QMC_IOCTL_SET_YPR failed!
02-01 20:20:24.871 317 897 E AudioALSAPlaybackHandlerBase: openPcmDriver(), pcm_start(0xf2c7c7c0) fail due to cannot start channel: Broken pipe
02-01 20:20:24.871 317 897 D AudioALSAPlaybackHandlerBase: -openPcmDriver(), mPcm = 0xf2c7c7c0
02-01 20:20:24.871 317 897 D AudioALSAHardwareResourceManager: +startOutputDevice(), new_devices = 0x2, mStartOutputDevicesCount = 0 SampleRate = 44100
02-01 20:20:24.871 317 897 D AudioALSADriverUtility: GetPropertyValue key = af.resouce.extdac_support value = 0
02-01 20:20:24.871 317 897 D AudioALSADeviceConfigManager: GetDeviceDescriptorbyname
02-01 20:20:24.871 317 897 D AudioALSADeviceConfigManager: CheckDeviceExist exist devicename = headphone_output
02-01 20:20:24.871 317 897 D AudioALSADeviceConfigManager: ApplyDeviceTurnonSequenceByName() DeviceName = headphone_output descriptor->DeviceStatusCounte = 0
02-01 20:20:24.871 317 897 D AudioALSADeviceConfigManager: cltname = Audio_Amp_R_Switch cltvalue = On
02-01 20:20:24.872 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872640, size: 46080, flags: 0x00000000, timestamp: 1680000 us (1.68 secs))
02-01 20:20:24.872 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870720)
02-01 20:20:24.873 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31340 (length 9600), timestamp 6480000 us (6.48 secs)
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: cltname = Audio_Amp_L_Switch cltvalue = On
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: GetDeviceDescriptorbyname
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: CheckDeviceExist exist devicename = ext_speaker_output
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: ApplyDeviceTurnonSequenceByName() DeviceName = ext_speaker_output descriptor->DeviceStatusCounte = 0
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: cltname = Ext_Speaker_Amp_Switch cltvalue = On
02-01 20:20:24.875 849 3163 D SensorService: Calling batch handle==1 flags=0rate=10000000 timeout== 0
02-01 20:20:24.875 849 3163 D SensorService: SensorDevice::batch: ident=0x7f61119cc0, handle=0x00000001, flags=0, period_ns=10000000 timeout=0
02-01 20:20:24.875 849 3163 D SensorService: >>> curr_period=66667000 min_period=10000000 curr_timeout=0 min_timeout=0
02-01 20:20:24.875 849 3163 D SensorService: Calling activate on 1
02-01 20:20:24.875 849 3163 D SensorService: SensorDevice::activate: ident=0x7f61119cc0, handle=0x00000001, enabled=1, count=2
02-01 20:20:24.875 849 3163 D SensorService: enable index=0
02-01 20:20:24.875 849 3163 D SensorService: >>> actuating h/w setDelay 1 10000000
02-01 20:20:24.875 849 3163 E Sensors : handleToDriver handle(0)
02-01 20:20:24.875 849 3163 D Accel : setDelay: (handle=0, ns=10000000)
02-01 20:20:24.875 849 3163 D Accel : no ACC setDelay control attr
02-01 20:20:24.875 849 3163 E Sensors : new setDelay handle(0),ns(10000000)m, error(-1), index(2)
02-01 20:20:24.875 849 3163 E Sensors : new setDelay handle(0),ns(10000000) err! go to hwmsen
02-01 20:20:24.875 849 3163 D Hwmsen_sensors: setDelay: (handle=0, ns=10000000)
02-01 20:20:24.875 849 3163 D Hwmsen_sensors: setDelay: (what=0, ms=10)
02-01 20:20:24.875 849 3163 D Hwmsen_sensors: really setDelay: (what=0, ms=10)
02-01 20:20:24.875 849 1694 D SensorService: Calling batch handle==2 flags=0rate=100000000 timeout== 0
02-01 20:20:24.875 849 1694 D SensorService: SensorDevice::batch: ident=0x7f61119cc0, handle=0x00000002, flags=0, period_ns=100000000 timeout=0
02-01 20:20:24.875 849 1694 D SensorService: >>> curr_period=-1 min_period=100000000 curr_timeout=-1 min_timeout=0
02-01 20:20:24.875 849 1694 D SensorService: Calling activate on 2
02-01 20:20:24.875 849 1694 D SensorService: SensorDevice::activate: ident=0x7f61119cc0, handle=0x00000002, enabled=1, count=1
02-01 20:20:24.875 849 1694 D SensorService: enable index=0
02-01 20:20:24.875 849 1694 D SensorService: >>> actuating h/w activate handle=2 enabled=1
02-01 20:20:24.875 849 1694 D Sensors : activate handle =1, enable = 1
02-01 20:20:24.875 849 1694 E Sensors : handleToDriver handle(1)
02-01 20:20:24.875 849 1694 D Sensors : use new sensor index=3, mSensors[index](7089b000)
02-01 20:20:24.875 849 1694 D Magnetic: fwq enable: handle:1, en:1
02-01 20:20:24.875 849 1694 D Magnetic: handle(1),path:magactive
02-01 20:20:24.875 849 1694 D Magnetic: no magntic enable attr
02-01 20:20:24.875 849 1694 D Sensors : use old sensor err(-1),index(3) go to old hwmsen
02-01 20:20:24.875 849 1694 D Hwmsen_sensors: Hwmsen_Enable: handle:1, en:1
02-01 20:20:24.876 849 1694 D Hwmsen_sensors: virtual int Hwmsen::enable(int32_t, int): handle 1, enable or disable 1!
02-01 20:20:24.877 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872736, size: 46080, flags: 0x00000000, timestamp: 1920000 us (1.92 secs))
02-01 20:20:24.877 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870816)
02-01 20:20:24.877 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c313a0 (length 9600), timestamp 6720000 us (6.72 secs)
02-01 20:20:24.881 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872832, size: 46080, flags: 0x00000000, timestamp: 2160000 us (2.16 secs))
02-01 20:20:24.881 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870912)
02-01 20:20:24.881 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31400 (length 9600), timestamp 6960000 us (6.96 secs)
02-01 20:20:24.882 849 1694 D Hwmsen_sensors: active_sensors =13
02-01 20:20:24.882 849 1694 D SensorService: >>> actuating h/w setDelay 2 100000000
02-01 20:20:24.882 849 1694 E Sensors : handleToDriver handle(1)
02-01 20:20:24.882 849 1694 D Magnetic: no MAG setDelay control attr
02-01 20:20:24.882 849 1694 E Sensors : new setDelay handle(1),ns(100000000)m, error(-1), index(3)
02-01 20:20:24.882 849 1694 E Sensors : new setDelay handle(1),ns(100000000) err! go to hwmsen
02-01 20:20:24.882 849 1694 D Hwmsen_sensors: setDelay: (handle=1, ns=100000000)
02-01 20:20:24.882 849 1694 D Hwmsen_sensors: setDelay: (what=1, ms=100)
02-01 20:20:24.882 849 1694 D Hwmsen_sensors: really setDelay: (what=1, ms=100)
02-01 20:20:24.883 19093 19137 I System.out: **Heading: 0.0**
02-01 20:20:24.884 19093 19137 I System.out: Fin test compass
02-01 20:20:24.884 19093 19137 I System.out: Deb test orientation
02-01 20:20:24.885 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872928, size: 46080, flags: 0x00000000, timestamp: 2400000 us (2.40 secs))
02-01 20:20:24.885 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072871008)
02-01 20:20:24.885 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31460 (length 9600), timestamp 7200000 us (7.20 secs)
02-01 20:20:24.889 19093 19137 I System.out: Fin test orientation
02-01 20:20:24.889 19093 19137 I System.out: Hello World! Debug avec adb - fin d'initialisation
02-01 20:20:24.889 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072873024, size: 46080, flags: 0x00000000, timestamp: 2640000 us (2.64 secs))
02-01 20:20:24.889 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072871104)
02-01 20:20:24.889 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c314c0 (length 9600), timestamp 7440000 us (7.44 secs)
注:轨迹与或与“新加速度”相同
加速度加速度=新的加速度(0,0,0,LocalDateTime.now());
加速度=服务。getCurrentAcceleration()
关于航向传感器,轨迹为:
02-01 19:59:39.349 17994 18039 I System.out: Test accelero 2b
02-01 19:59:39.350 17994 18039 W System.err: Exception in Application start method
02-01 19:59:39.352 317 18045 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872736, size: 46080, flags: 0x00000000, timestamp: 1920000 us (1.92 secs))
02-01 19:59:39.352 317 18045 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870816)
02-01 19:59:39.353 317 18045 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c313a0 (length 9600), timestamp 6720000 us (6.72 secs)
02-01 19:59:39.355 17994 18039 I System.out: QuantumRenderer: shutdown
02-01 19:59:39.356 17994 18034 W System.err: java.lang.reflect.InvocationTargetException
02-01 19:59:39.356 17994 18034 W System.err: at java.lang.reflect.Method.invoke(Native Method)
02-01 19:59:39.356 17994 18034 W System.err: at java.lang.reflect.Method.invoke(Method.java:372)
02-01 19:59:39.356 17994 18034 W System.err: at javafxports.android.DalvikLauncher$1.run(DalvikLauncher.java:188)
02-01 19:59:39.356 17994 18034 W System.err: at java.lang.Thread.run(Thread.java:818)
02-01 19:59:39.356 17994 18034 W System.err: Caused by: java.lang.RuntimeException: Exception in Application start method
02-01 19:59:39.356 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
02-01 19:59:39.356 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$138(LauncherImpl.java:182)
02-01 19:59:39.356 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.access$lambda$1(LauncherImpl.java)
02-01 19:59:39.356 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl$$Lambda$2.run(Unknown Source)
02-01 19:59:39.356 17994 18034 W System.err: ... 1 more
02-01 19:59:39.356 17994 18034 W System.err: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'double com.gluonhq.charm.down.plugins.Acceleration.getX()' on a null object reference
02-01 19:59:39.356 17994 18037 D Surface : Surface::setBuffersDimensions(this=0xf49e5500,w=720,h=1152)
02-01 19:59:39.356 288 960 I BufferQueueProducer: [SurfaceView](this:0x7f72779000,id:231,api:1,p:17994,c:288) new GraphicBuffer needed
02-01 19:59:39.356 288 960 I [MALI][Gralloc]: Usage: 0xb00, format: 0x1 stride: 720 vertical_stride: 1152 size: 3317760
02-01 19:59:39.357 317 18045 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872832, size: 46080, flags: 0x00000000, timestamp: 2160000 us (2.16 secs))
02-01 19:59:39.357 288 960 D GraphicBuffer: alloc, handle(0x7f7277d7a0) (w:720 h:1152 s:720 f:0x1 u:0x000b00) err(0)
02-01 19:59:39.357 317 18045 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870912)
02-01 19:59:39.357 317 18045 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31400 (length 9600), timestamp 6960000 us (6.96 secs)
02-01 19:59:39.358 17994 18034 W System.err: at com.gluonapplication.GluonApplication.lambda$start$0(GluonApplication.java:287)
02-01 19:59:39.358 17994 18034 W System.err: at com.gluonapplication.GluonApplication$$Lambda$1.accept(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at java.util.Optional.ifPresent(Optional.java:154)
02-01 19:59:39.358 17994 18034 W System.err: at com.gluonapplication.GluonApplication.start(GluonApplication.java:282)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$145(LauncherImpl.java:863)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl.access$lambda$8(LauncherImpl.java)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.LauncherImpl$$Lambda$9.run(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$158(PlatformImpl.java:326)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.access$lambda$6(PlatformImpl.java)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl$$Lambda$7.run(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.lambda$null$156(PlatformImpl.java:295)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.access$lambda$18(PlatformImpl.java)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl$$Lambda$19.run(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at java.security.AccessController.doPrivileged(AccessController.java:52)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.lambda$runLater$157(PlatformImpl.java:294)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl.access$lambda$5(PlatformImpl.java)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.javafx.application.PlatformImpl$$Lambda$6.run(Unknown Source)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
02-01 19:59:39.358 17994 18034 W System.err: at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
02-01 19:59:39.358 17994 18034 W System.err: ... 1 more
02-01 19:59:39.358 17994 18037 D GraphicBuffer: register, handle(0xf00b17a0) (w:720 h:1152 s:720 f:0x1 u:0x000b00)
02-01 19:59:39.360 371 371 D QMCX983D: waitting for enable m or o sensor
02-01 19:59:39.360 371 371 D QMCX983D: QMC_IOCTL_GET_OPEN_STATUS failed
02-01 19:59:39.360 371 371 D QMCX983D: QMC_IOCTL_GET_DELAY failed
02-01 19:59:39.360 371 371 D QMCX983D: QMC_IOCTL_SET_YPR failed!
02-01 19:59:39.361 317 18045 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872928, size: 46080, flags: 0x00000000, timestamp: 2400000 us (2.40 secs))
02-01 19:59:39.361 317 18045 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072871008)
02-01 19:59:39.361 317 18045 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31460 (length 9600), timestamp 7200000 us (7.20 secs)
02-01 19:59:39.365 17994 18037 D Surface : Surface::setBuffersDimensions(this=0xf49e5500,w=720,h=1152)
02-01 19:59:39.366 317 18045 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072873024, size: 46080, flags: 0x00000000, timestamp: 2640000 us (2.64 secs))
02-01 19:59:39.366 288 474 I BufferQueueProducer: [SurfaceView](this:0x7f72779000,id:231,api:1,p:17994,c:288) new GraphicBuffer needed
02-01 20:20:24.870 19093 19137 I System.out: **Deb test compass**
02-01 20:20:24.870 371 371 D QMCX983D: QMC_IOCTL_SET_YPR failed!
02-01 20:20:24.871 317 897 E AudioALSAPlaybackHandlerBase: openPcmDriver(), pcm_start(0xf2c7c7c0) fail due to cannot start channel: Broken pipe
02-01 20:20:24.871 317 897 D AudioALSAPlaybackHandlerBase: -openPcmDriver(), mPcm = 0xf2c7c7c0
02-01 20:20:24.871 317 897 D AudioALSAHardwareResourceManager: +startOutputDevice(), new_devices = 0x2, mStartOutputDevicesCount = 0 SampleRate = 44100
02-01 20:20:24.871 317 897 D AudioALSADriverUtility: GetPropertyValue key = af.resouce.extdac_support value = 0
02-01 20:20:24.871 317 897 D AudioALSADeviceConfigManager: GetDeviceDescriptorbyname
02-01 20:20:24.871 317 897 D AudioALSADeviceConfigManager: CheckDeviceExist exist devicename = headphone_output
02-01 20:20:24.871 317 897 D AudioALSADeviceConfigManager: ApplyDeviceTurnonSequenceByName() DeviceName = headphone_output descriptor->DeviceStatusCounte = 0
02-01 20:20:24.871 317 897 D AudioALSADeviceConfigManager: cltname = Audio_Amp_R_Switch cltvalue = On
02-01 20:20:24.872 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872640, size: 46080, flags: 0x00000000, timestamp: 1680000 us (1.68 secs))
02-01 20:20:24.872 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870720)
02-01 20:20:24.873 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31340 (length 9600), timestamp 6480000 us (6.48 secs)
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: cltname = Audio_Amp_L_Switch cltvalue = On
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: GetDeviceDescriptorbyname
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: CheckDeviceExist exist devicename = ext_speaker_output
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: ApplyDeviceTurnonSequenceByName() DeviceName = ext_speaker_output descriptor->DeviceStatusCounte = 0
02-01 20:20:24.873 317 897 D AudioALSADeviceConfigManager: cltname = Ext_Speaker_Amp_Switch cltvalue = On
02-01 20:20:24.875 849 3163 D SensorService: Calling batch handle==1 flags=0rate=10000000 timeout== 0
02-01 20:20:24.875 849 3163 D SensorService: SensorDevice::batch: ident=0x7f61119cc0, handle=0x00000001, flags=0, period_ns=10000000 timeout=0
02-01 20:20:24.875 849 3163 D SensorService: >>> curr_period=66667000 min_period=10000000 curr_timeout=0 min_timeout=0
02-01 20:20:24.875 849 3163 D SensorService: Calling activate on 1
02-01 20:20:24.875 849 3163 D SensorService: SensorDevice::activate: ident=0x7f61119cc0, handle=0x00000001, enabled=1, count=2
02-01 20:20:24.875 849 3163 D SensorService: enable index=0
02-01 20:20:24.875 849 3163 D SensorService: >>> actuating h/w setDelay 1 10000000
02-01 20:20:24.875 849 3163 E Sensors : handleToDriver handle(0)
02-01 20:20:24.875 849 3163 D Accel : setDelay: (handle=0, ns=10000000)
02-01 20:20:24.875 849 3163 D Accel : no ACC setDelay control attr
02-01 20:20:24.875 849 3163 E Sensors : new setDelay handle(0),ns(10000000)m, error(-1), index(2)
02-01 20:20:24.875 849 3163 E Sensors : new setDelay handle(0),ns(10000000) err! go to hwmsen
02-01 20:20:24.875 849 3163 D Hwmsen_sensors: setDelay: (handle=0, ns=10000000)
02-01 20:20:24.875 849 3163 D Hwmsen_sensors: setDelay: (what=0, ms=10)
02-01 20:20:24.875 849 3163 D Hwmsen_sensors: really setDelay: (what=0, ms=10)
02-01 20:20:24.875 849 1694 D SensorService: Calling batch handle==2 flags=0rate=100000000 timeout== 0
02-01 20:20:24.875 849 1694 D SensorService: SensorDevice::batch: ident=0x7f61119cc0, handle=0x00000002, flags=0, period_ns=100000000 timeout=0
02-01 20:20:24.875 849 1694 D SensorService: >>> curr_period=-1 min_period=100000000 curr_timeout=-1 min_timeout=0
02-01 20:20:24.875 849 1694 D SensorService: Calling activate on 2
02-01 20:20:24.875 849 1694 D SensorService: SensorDevice::activate: ident=0x7f61119cc0, handle=0x00000002, enabled=1, count=1
02-01 20:20:24.875 849 1694 D SensorService: enable index=0
02-01 20:20:24.875 849 1694 D SensorService: >>> actuating h/w activate handle=2 enabled=1
02-01 20:20:24.875 849 1694 D Sensors : activate handle =1, enable = 1
02-01 20:20:24.875 849 1694 E Sensors : handleToDriver handle(1)
02-01 20:20:24.875 849 1694 D Sensors : use new sensor index=3, mSensors[index](7089b000)
02-01 20:20:24.875 849 1694 D Magnetic: fwq enable: handle:1, en:1
02-01 20:20:24.875 849 1694 D Magnetic: handle(1),path:magactive
02-01 20:20:24.875 849 1694 D Magnetic: no magntic enable attr
02-01 20:20:24.875 849 1694 D Sensors : use old sensor err(-1),index(3) go to old hwmsen
02-01 20:20:24.875 849 1694 D Hwmsen_sensors: Hwmsen_Enable: handle:1, en:1
02-01 20:20:24.876 849 1694 D Hwmsen_sensors: virtual int Hwmsen::enable(int32_t, int): handle 1, enable or disable 1!
02-01 20:20:24.877 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872736, size: 46080, flags: 0x00000000, timestamp: 1920000 us (1.92 secs))
02-01 20:20:24.877 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870816)
02-01 20:20:24.877 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c313a0 (length 9600), timestamp 6720000 us (6.72 secs)
02-01 20:20:24.881 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872832, size: 46080, flags: 0x00000000, timestamp: 2160000 us (2.16 secs))
02-01 20:20:24.881 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072870912)
02-01 20:20:24.881 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31400 (length 9600), timestamp 6960000 us (6.96 secs)
02-01 20:20:24.882 849 1694 D Hwmsen_sensors: active_sensors =13
02-01 20:20:24.882 849 1694 D SensorService: >>> actuating h/w setDelay 2 100000000
02-01 20:20:24.882 849 1694 E Sensors : handleToDriver handle(1)
02-01 20:20:24.882 849 1694 D Magnetic: no MAG setDelay control attr
02-01 20:20:24.882 849 1694 E Sensors : new setDelay handle(1),ns(100000000)m, error(-1), index(3)
02-01 20:20:24.882 849 1694 E Sensors : new setDelay handle(1),ns(100000000) err! go to hwmsen
02-01 20:20:24.882 849 1694 D Hwmsen_sensors: setDelay: (handle=1, ns=100000000)
02-01 20:20:24.882 849 1694 D Hwmsen_sensors: setDelay: (what=1, ms=100)
02-01 20:20:24.882 849 1694 D Hwmsen_sensors: really setDelay: (what=1, ms=100)
02-01 20:20:24.883 19093 19137 I System.out: **Heading: 0.0**
02-01 20:20:24.884 19093 19137 I System.out: Fin test compass
02-01 20:20:24.884 19093 19137 I System.out: Deb test orientation
02-01 20:20:24.885 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072872928, size: 46080, flags: 0x00000000, timestamp: 2400000 us (2.40 secs))
02-01 20:20:24.885 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072871008)
02-01 20:20:24.885 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c31460 (length 9600), timestamp 7200000 us (7.20 secs)
02-01 20:20:24.889 19093 19137 I System.out: Fin test orientation
02-01 20:20:24.889 19093 19137 I System.out: Hello World! Debug avec adb - fin d'initialisation
02-01 20:20:24.889 317 19143 W OMXCodec: FILL_BUFFER_DONE(buffer: 4072873024, size: 46080, flags: 0x00000000, timestamp: 2640000 us (2.64 secs))
02-01 20:20:24.889 317 19143 W OMXCodec: EMPTY_BUFFER_DONE(buffer: 4072871104)
02-01 20:20:24.889 317 19143 D OMXCodec: [OMX.MTK.AUDIO.DECODER.MP3] Calling emptyBuffer on buffer 0xf2c314c0 (length 9600), timestamp 7440000 us (7.44 secs)
考虑到加速度和航向随时间快速变化,您应该监听属性
AccelerometerService::accelerationProperty
和CompassService::headingProperty
中的更改,而不是在给定的瞬间获取单个值(因为它可能是0或null)因为传感器可能还没有准备好
以下是您如何收听标题变化:
Services.get(CompassService.class)
.ifPresent(s -> s.headingProperty()
.addListener((obs, ov, nv) ->
labelGluonHeading.setText(String.format("Heading: %.2f\u00b0",
nv.doubleValue()))));
和加速计传感器:
Services.get(AccelerometerService.class)
.ifPresent(s -> s.accelerationProperty()
.addListener((obs, ov, nv) ->
labelGluonAcceleration.setText(String.format("%.1f %.1f %.1f",
nv.getX(), nv.getY(), nv.getZ()))));
如果您的应用程序发生崩溃,您需要找出它发生的原因。打开一个终端,转到Android SDK文件夹,平台工具,然后运行
adb logcat-v threadtime
。然后运行应用程序,直到崩溃。检查控制台是否存在可能的异常。然后尝试解决它或将其发布到这里。我已经运行了调试选项(使用threadtime)。然后在每种情况下运行测试应用程序(加速计、指南针)。见上文。我希望这些痕迹能帮助你理解原因。