【问题标题】:Cant find a simple way to vibrate the phone (source code android) [duplicate]找不到简单的手机震动方式(源码android)[重复]
【发布时间】:2017-12-07 13:26:21
【问题描述】:
Context mcontext;
this.Context= mcontext;
//private Context context;
//this.context=context;
//super(mcontext);
Vibrator mVibrator = (Vibrator) mcontext.getSystemService(Context.VIBRATOR_SERVICE);
mVibrator.vibrate(300)

我在网上搜索了很多简单的代码来播放哔声,我找到了一个。但是我无法添加和编译几行代码来使手机振动。我遇到的所有线程都使用 getsystemservice()。 Link to some code to vibrate on stackoverflow

第一个getsystemservice() 函数单独不起作用,我在某处读到它需要由context object 调用。我做了一个上下文对象。然后它说需要初始化上下文。我尝试了this.context = context 并给出了另一个错误。我正在进入这些编译错误循环,因为振动手机应该是一项简单的工作。请告诉我我在这里做错了什么。

这个问题是不同的,因为我从其他线程中获得了经验。由于其他线程给出了单独使用 getsystemservice() 的答案,但这不起作用,因为它需要上下文。

更新:在这里遇到了这个帖子How to pass context from MainActivity to another class in Android?

所以我这样做了

public class MyNonActivityClass{

// variable to hold context
private Context context;

//save the context received via constructor in a local variable

public MyNonActivityClass(Context context){
this.context=context;
}

}

然后我收到错误 mcallback 可能未在此处初始化。

private final Callback mCallback;

然后我在哪里添加这个

MyNonActivityClass mClass = new MyNonActivityClass(this);

【问题讨论】:

  • 您需要在清单文件中添加权限 并添加它认为应该可以工作的波纹管代码 // 振动 150 毫秒 private void ShakeItBaby() { if (Build.VERSION.SDK_INT >= 26) { ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createOneShot(150, VibrationEffect.DEFAULT_AMPLITUDE)); } else { ((振动器) getSystemService(VIBRATOR_SERVICE)).vibrate(150); } }
  • 我确实在androidmanifest.xml中添加了振动权限
  • 你从哪里调用它?
  • 你好像缺乏基础知识。最好慢慢来,做一些教程来学习,而不是急于做出你不懂的东西
  • 我获取了一些基本的源代码并将我的代码放入其中。该应用程序运行良好,我只需要添加手机的振动......就是这样,,,

标签: android


【解决方案1】:

您从哪里拨打Vibrator service

如果它来自活动,那么,

Vibrator mVibrator = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
    mVibrator.vibrate(300)

或者如果它来自 Fragment 那么,

 Vibrator mVibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
    mVibrator.vibrate(300)

或在您的代码中更新它,例如,

void vibrate(Context mcontext ){
    Vibrator mVibrator = (Vibrator) 
    mcontext.getSystemService(Context.VIBRATOR_SERVICE);
    mVibrator.vibrate(300)
}

【讨论】:

  • this.getsystem... 不起作用,因为它以红色突出显示。 getActivity 也不起作用..我试图从不在 mainactivity.java 中的用户定义类发出哔声。请原谅我的小知识,因为我的 android 编程经验有限。问题是 getsystemservice 没有得到解决。
  • 然后你需要将上下文表单 MainActivity 传递给用户定义类。请参阅我的更新答案。
  • 所以我不能在用户定义的类中为其分配上下文。或者,如果我必须从 mainactivity.java 传递它,那么我该怎么做,因为我使用它来指示录制线程中录制活动的结束。主线程将不知道该线程中发生了什么。那么我不能从定义它的类中获取上下文本身吗?是不是唯一的办法。我可以不使用 view.getcontext 或 activity.getapplicationactivity 或类似的东西吗?
  • 我正在为类私有 VoiceRecorder mVoiceRecorder 创建一个对象;以及在运行线程runnable->record()的录音机类中定义的记录函数。现在具体来说我如何在这里管理上下文......?
  • 我进一步更新了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
相关资源
最近更新 更多