同样的问题但更好地解释
这个问题被认为是正确的,但它完全没有,我用我的旧设备ZTE尝试了它并且大部分时间工作,但现在我有三星Galazy A5 2016并且它不起作用,在LG G3上都没有.
事情正在尝试使用Accelerometer,有些Sensors我必须能够检测到我在视频上制作的那两个动画中的任何一个.
有两个动作:
我让你来决定,并说服了我什么是更好的选择和EASIER一个做的,具有更好的我的意思是,在大多数设备的工作原理.
我用NDK更快地搜索了关于轮询加速度计的教程/答案,但还没找到求解器.刚刚在这里找到了androiddevelopers文档.
我需要的是轮询加速度大约每秒100个样本(100Hz),默认情况下我的设备(三星Galaxy SL i9003与姜饼2.3.5)默认SENSOR_DELAY_FASTEST只能获得大约60个样本persecond(60Hz).因此,我尝试通过生成.c文件,通过NativeActivity访问传感器,我试图基于sensor.h和looper.h制作.c文件:
#include <jni.h>
#include <string.h>
#include <android/sensor.h>
#include <android/log.h>
#include <android/looper.h>
#define TAG "accelerondk"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
#define LOOPER_ID 1
#define SAMP_PER_SEC 100 //i've changed to 120, even 10, but nothing happen
void Java_azka_web_ndk_AcceleroNDKActivity_startMonitoring(JNIEnv* env, jclass clazz) {
ASensorManager* sensorManager = ASensorManager_getInstance();
ALooper* looper = ALooper_forThread();
if(looper == NULL)
looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS);
ASensorRef accelerometerSensor = ASensorManager_getDefaultSensor(sensorManager,ASENSOR_TYPE_ACCELEROMETER);
LOGI("accelerometerSensor: %s, vendor: %s", ASensor_getName(accelerometerSensor), ASensor_getVendor(accelerometerSensor));
ASensorEventQueue* queue = ASensorManager_createEventQueue(sensorManager, looper, LOOPER_ID, …Run Code Online (Sandbox Code Playgroud)