示例#1
0
//センサーの初期化
void init_sensors(struct engine* engine,struct android_app* state) {
    // センサーマネージャの取得
    ASensorList list;
    int sensor_list[] = {
        ASENSOR_TYPE_ACCELEROMETER, ASENSOR_TYPE_MAGNETIC_FIELD,
        ASENSOR_TYPE_GYROSCOPE, ASENSOR_TYPE_LIGHT, ASENSOR_TYPE_PROXIMITY
    };
    engine->sensorManager = ASensorManager_getInstance(); /////-----(1)
    // 利用可能なセンサーの一覧を取得
    int num = ASensorManager_getSensorList(engine->sensorManager, &list); /////-----(2)
    int i, j;
    // バッファの初期化
    for (i = 0; i < SENSOR_MAX; i++) {
        engine->sensors[i].sensor = NULL;
        engine->sensors[i].type = sensor_list[i];
    }
    // センサーのデータ取得準備
    for (i = 0; i < num; i++) {
        ASensorRef sensor = list[i];
        int type = ASensor_getType(sensor); // センサーのTYPEを取得   /////-----(3)
        LOGI("type=%d sensor=%s", type, ASensor_getName(sensor));
        // センサーから値を取得できるようにする
        for (j = 0; j < SENSOR_MAX; j++) {
            if ((type == engine->sensors[j].type) && (engine->sensors[j].sensor == NULL)) {
                engine->sensors[j].sensor = ASensorManager_getDefaultSensor(   /////-----(4)
                                                engine->sensorManager, type);
                break;
            }
        }
    }
    // センサー情報取得キューの新規作成
    engine->sensorEventQueue = ASensorManager_createEventQueue( /////-----(5)
                                   engine->sensorManager, state->looper, LOOPER_ID_USER, NULL, NULL);
}
示例#2
0
static SDL_SensorType
SDL_ANDROID_SensorGetDeviceType(int device_index)
{
    switch (ASensor_getType(SDL_sensors[device_index].asensor)) {
    case 0x00000001:
        return SDL_SENSOR_ACCEL;
    case 0x00000004:
        return SDL_SENSOR_GYRO;
    default:
        return SDL_SENSOR_UNKNOWN;
    }
}
void QuerySensors() {
    int I;
    State->Manager = ASensorManager_getInstance();
    State->Count = ASensorManager_getSensorList(State->Manager, &State->Sensors);
    State->Info = (InfoStructure *) malloc(State->Count * sizeof(InfoStructure));
    LOG(ANDROID_LOG_INFO, "Found %d sensors", State->Count);
    for (I = 0; I < State->Count; I++) {
        State->Info[I].Index = I;
        State->Info[I].Type = ASensor_getType(State->Sensors[I]);
        State->Info[I].Vendor = ASensor_getVendor(State->Sensors[I]);
        State->Info[I].Name = ASensor_getName(State->Sensors[I]);
        State->Info[I].Delay = ASensor_getMinDelay(State->Sensors[I]);
        State->Info[I].Resolution = ASensor_getResolution(State->Sensors[I]);
        LOG(ANDROID_LOG_INFO, "Sensor: %d, %s, %s, %dus, %f", State->Info[I].Type,
            State->Info[I].Vendor,
            State->Info[I].Name, State->Info[I].Delay,
            State->Info[I].Resolution);
        State->Info[I].Shift = 0;
    }
}
示例#4
0
static int
SDL_ANDROID_SensorGetDeviceNonPortableType(int device_index)
{
    return ASensor_getType(SDL_sensors[device_index].asensor);
}