Appcelerator Hyperloop Android - 如何使用某些使用传递引用结构的传感器管理器功能

tin*_*ato 5 android appcelerator android-sensors sensormanager hyperloop

我是第一次进入Hyperloop,特别是目前专门用于Android,虽然它进展得相当好,但我有一个问题,我将在下面解释.

我已成功获得传感器管理器的句柄并设置传感器侦听器事件以从传感器获取值.

如果有人需要这些代码,请点击下面

var AndroidAppPkg = require('android.app.*');
var AndroidHardware = require('android.hardware.*');
var Context = require('android.content.Context');
var Sensor = AndroidHardware.Sensor;
var SensorEvent = AndroidHardware.SensorEvent;
var SensorEventListener = AndroidHardware.SensorEventListener;
var SensorManager = AndroidHardware.SensorManager;
var Activity = AndroidAppPkg.Activity;
var Matrix = require('android.opengl.Matrix');

var activity = new Activity(Titanium.App.Android.getTopActivity());
var appContext = activity.getApplicationContext();

var obj = appContext.getSystemService(Context.SENSOR_SERVICE);

var sensorManager = SensorManager.cast( obj );

var sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);

Ti.API.info('Set up sensor event');
var sensorEvent = new SensorEventListener({
    onSensorChanged:function(event){
        // sensor values retrieve here
    }
});
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是如何使用涉及通过引用传递参数的Android传感器管理器功能.例如,SensorManager.remapCoordinateSystem(float[] inR, int X, int Y, float[] outR)包括out数组(旋转矩阵).

我试过这种方法

var outR = new Array(16).fill(0);
SensorManager.remapCoordinateSystem(inR, SensorManager.AXIS_X, SensorManager.AXIS_Z, outR);
Ti.API.info(outR.join());
Run Code Online (Sandbox Code Playgroud)

outR数组保持与初始化时相同,在这种情况下是16 0的数组.我测试了一些类似的功能,并得到了相同的结果.我已经能够通过重新创建我需要的每个SensorManager函数并编辑函数来解决这个问题,因此它返回变量,但我想知道是否有任何方法可以解决这个问题,或者它是否只是一个超级循环的限制?这是浪费我的时间来重塑相同的功能只有一点点差异所以我希望我只是错过了一些东西.

谢谢!