gpt4 book ai didi

android - 如何为非 Activity 类授予振动权限?

转载 作者:行者123 更新时间:2023-11-29 21:06:07 25 4
gpt4 key购买 nike

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

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);
}
}

我正在以这种方式在其他类(class)中使用它:

vib = (IntensityVibrator) IntensityVibrator.getManager(<an_activity>);

我创建vib对象的类也是非activity类。因此,我通过 an_activity 上下文传递上下文。

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

最佳答案

在我看来你从来没有初始化你的 vib类变量,因此它是 null你会得到一个 NullPointerException打电话时 regularVibrate您的私有(private)getVibrator方法,初始化 vib , 从未被调用:你应该在 getManager 中调用它, 就在调用 setContext 之后.

关于android - 如何为非 Activity 类授予振动权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com