小编les*_*urp的帖子

无法访问 Android 上的原始传感器数据

我正在尝试从手机的 IMU 检索原始传感器数据,虽然我可以访问更正后的版本:

mAccelerometer = mSensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Log.d(TAG, "Acc object: $mAccelerometer") // non-null
Run Code Online (Sandbox Code Playgroud)

TYPE_ACCELEROMETER_UNCALIBRATEDAPI 似乎没有公开:

mAccelerometer = mSensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER_UNCALIBRATED);
Log.d(TAG, "Acc object: $mAccelerometer") // null

val sensorList =  mSensorManager?.getSensorList(Sensor.TYPE_ACCELEROMETER_UNCALIBRATED);
Log.d(TAG, "Sensor list: $sensorList")
Log.d(TAG, "Sensor list size: ${sensorList?.size}") // 0
Run Code Online (Sandbox Code Playgroud)

我尝试向我的manifest.xml:添加一些权限

mAccelerometer = mSensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Log.d(TAG, "Acc object: $mAccelerometer") // non-null
Run Code Online (Sandbox Code Playgroud)

但无济于事。

我是否操作错误,或者 OEM 是否可能禁用了 API?我的手机是华为 p10 lite,如果有帮助的话...

android android-sensors kotlin

5
推荐指数
0
解决办法
441
查看次数

闭包作为Rust结构中的类型

我想在Rust中创建这样的结构:

pub struct Struct<T, F>
    where T: Eq,
          T: Hash,
          F: Fn() -> T
{
    hashMap: HashMap<T, F>,
    value: T,
}
Run Code Online (Sandbox Code Playgroud)

我的构造函数看起来像这样:

pub fn new(init_value: T) -> Struct<T, F> {
    Struct {
        hashMap: HashMap::new(),
        value: init_state,
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在尝试实例化类时,let a = Struct::<MyEnum>::new(MyEnum::Init);编译器会抱怨泛型需要两个参数(expected 2 type arguments, found 1)

我在这里看到这段代码有效:

fn call_with_one<F>(some_closure: F) -> i32
    where F: Fn(i32) -> i32 {

    some_closure(1)
}

let answer = call_with_one(|x| x + 2);
Run Code Online (Sandbox Code Playgroud)

我想问题来自于我在模板实例化中使用另一个泛型,但我该怎么做?

generics closures rust

2
推荐指数
1
解决办法
1256
查看次数

类型的 constexpr 检查

我正在尝试根据是否将特征矩阵传递给它们来重载某些函数,并且我想让自己变得更好 constexpr函数来提高可读性。

为此,我决定模拟https://en.cppreference.com/w/cpp/types/is_samestd::is_same给出的实现

template<class T, class U>
struct is_same : std::false_type {};

template<class T>
struct is_same<T, T> : std::true_type {};
Run Code Online (Sandbox Code Playgroud)

我肯定地告诉自己,很简单:

template <typename T>
bool constexpr is_eigen() { return false; }

template <typename T, typename Eigen::Matrix<typename T::Scalar,
                                             T::RowsAtCompileTime,
                                             T::ColsAtCompileTime,
                                             T::Options,
                                             T::MaxRowsAtCompileTime,
                                             T::MaxColsAtCompileTime>>
bool constexpr is_eigen() { return true; }
Run Code Online (Sandbox Code Playgroud)

然而,我的特征类型解析为第一个模板特化,而不是第一个(放置一个假人typename U无济于事)。

我也尝试过类似的事情:

template <typename T, bool is_it = std::is_same<T,
                                                Eigen::Matrix<typename T::Scalar,
                                                              T::RowsAtCompileTime,
                                                              T::ColsAtCompileTime,
                                                              T::Options,
                                                              T::MaxRowsAtCompileTime,
                                                              T::MaxColsAtCompileTime>>::value>
bool constexpr is_eigen() { return is_it; } …
Run Code Online (Sandbox Code Playgroud)

c++ sfinae type-traits template-argument-deduction c++14

0
推荐指数
1
解决办法
1865
查看次数