【问题标题】:How to give vibrate permission to a non-activity class?如何为非活动类授予振动权限?
【发布时间】:2014-07-01 09:56:09
【问题描述】:

我已使用this previous thread 中建议的策略在非活动类中创建自定义振动器。

import android.content.Context;
import android.os.Vibrator;
public class IntensityVibrator {
    private static IntensityVibrator iv;
    private Vibrator vib= null;
    private Context context;
    private Vibrator getVibrator(){
        if(vib == null){
            vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        }
        return vib;
    }

    
    public static IntensityVibrator getManager(<an_activity> context) {
        if(iv == null){
            iv = new IntensityVibrator();
        }
        iv.setContext(context);
        return iv;
    }
    
    
    private void setContext(Context context){
        this.context = context;
    }

    public void regularVibrate(long millis){
    vib.vibrate(millis);
    }
    }

我在其他类中这样使用它:

vib = (IntensityVibrator) IntensityVibrator.getManager(&lt;an_activity&gt;);

我在其中创建 vib 对象的类也是一个非活动类。因此我通过 an_activity 上下文传递上下文。

应用程序在调用最后一个方法时崩溃。调试显示代码工作正常,直到调用 vib.vibrate(millis)。你能猜出这里可能是什么问题吗?

【问题讨论】:

    标签: android customization vibration


    【解决方案1】:

    在我看来,您从未初始化您的 vib 类变量,因此它是 null 并且您在调用 regularVibrate 时会得到一个 NullPointerException 初始化 vib 的私有 getVibrator 方法永远不会被调用:你应该在调用 setContext 之后在 getManager 中调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      相关资源
      最近更新 更多