-1

在Java类中使用Android API,我试图以双精度形式返回是否支持振动功能。我需要它加倍,因为这是我正在使用的框架中支持的数据类型。我尝试了两种方法,但第一种方法会使编译器崩溃,第二种方法只是在应用程序中返回“未定义”。

这崩溃了,

public static double vibration_supported() {

    double value = 0; // complains about it not being final, but you cannot set the value if it is

    Handler h = new Handler(RunnerJNILib.ms_context.getMainLooper());
    h.post(new Runnable() {

        @Override
        public void run() {
            Vibrator v = (Vibrator) RunnerJNILib.ms_context.getSystemService(Context.VIBRATOR_SERVICE);
            if (v.hasVibrator()) {
                value = 1;
            } else {
                value = 0;
            }
        }

    });

    return value;

}

这只是返回未定义。

public static double vibration_supported() {

    double value = 0;

    Vibrator v = (Vibrator) RunnerJNILib.ms_context.getSystemService(Context.VIBRATOR_SERVICE);
    if (v.hasVibrator()) {
        value = 1;
        return value;
    } else {
        value = 0;
        return value;
    }


}
4

1 回答 1

0

找到了答案,我需要在使用 hasVibrator() 之前检查构建版本,

if (android.os.Build.VERSION.SDK_INT >= 11) {
    Vibrator v = (Vibrator) RunnerJNILib.ms_context.getSystemService(Context.VIBRATOR_SERVICE);
    return ((v.hasVibrator()) ? 1 : 0);
} else {
    return 1;
}
于 2014-09-16T12:18:55.227 回答