簡體   English   中英

如何在不擴展活動的類中訪問android中的振動器?

[英]How to access vibrator in android in a class that is not extending activity?

我正在嘗試使用名為VibrationManager的類中的以下內容訪問振動器,並且該類未擴展Activity

Vibrator v =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

但是日食拋出和錯誤

對於類型VibrationManager,未定義方法getSystemService(String)

這是我全班

public class VibrationManager {

private static VibrationManager me = null;

Vibrator v = null;

private Vibrator getVibrator(){
    if(v == null){
        v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    }
    return v;
}

public static VibrationManager getManager() {
    if(me == null){
        me = new VibrationManager();
    }
    return me;
}

public void vibrate(long[] pattern){

}

}

請幫忙

您的課程沒有方法getSystemService因為該課程沒有擴展Activity

如果您不想使用getSystemService方法,則需要使用VibrationManager類來擴展活動,或者需要接收該活動的上下文。

只需將代碼更改為使用上下文即可,為此,您還需要在靜態調用中獲取上下文。

public class VibrationManager {

    private static VibrationManager me;
    private Context context;

    Vibrator v = null;

    private Vibrator getVibrator(){
        if(v == null){
            v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        }
        return v;
    }

    public static VibrationManager getManager(Context context) {
        if(me == null){
            me = new VibrationManager();
        }
        me.setContext(context);
        return me;
    }

    private void setContext(Context context){
        this.context = context;
    }

    public void vibrate(long[] pattern){

    }
}

如果在從不同的視圖訪問上下文時遇到問題,可以執行以下操作:

  • 創建一個擴展應用程序的類(例如MyApplication)

  • 在清單中將該類聲明為Application類,如下所示:

      <application android:name="your.project.package.MyApplication" ... 
  • 默認情況下,應用程序類是單例,但是您需要創建一個getInstance方法,如下所示:

     public class MyApplication extends Application { private static MyApplication instance; public void onCreate() { instance = this; } public static MyApplication getInstance() { return instance; } } 

完成后,您可以從應用程序中的任何位置訪問上下文,而無需傳遞如下所示的大量引用:

MyApplication app = MyApplication.getInstance()
Vibrator v = (Vibrator) app.getSystemService(Context.VIBRATOR_SERVICE);

到那里,您不僅可以致電振動器服務,還可以致電所需的任何服務...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM