我试图使我的Android手机在球击中游戏目标后振动,所以我创建了内部类Vibrate,该类扩展了Activity,因为我的外部类是非活动类

public class TheGame extends GameThread {
  public class Vibrate extends Activity {
    Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
  }
//some methods

  protected void updateGame(float secondsElapsed){
    //updating coordinates and if ball hits the target >> vibrate
    TheGame.Vibrate vib = new TheGame.Vibrate();
    vib.v.vibrate(500);

  }
 }


如何从外部类中调用振动(Vibration v-内部类)?此时程序在Logcat中停止显示“不幸的是,应用程序已停止”和“输出过多的代码无法处理android”
//////////

终于在dhke的帮助下工作了。我只需要从在外部类中扩展的Context访问getSystemService(...)。

最佳答案

在非活动类中调用静态方法:

public class MyNonActivity{
    public static void vibrateDevice(Context mContext){
       Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
       // Vibrate for 500 milliseconds
       v.vibrate(500);
    }
}


在清单文件中添加权限。

<uses-permission android:name="android.permission.VIBRATE"/>


如何通过活动致电:

MyNonActivity.vibrateDevice(getApplicationContext());


完成了

10-08 11:35