ユーザーがボタンを押したまま電話を振動させるアプリを作っていますが、ボタンを押したままにすると振動するようにする方法がわかりません。これまでのコードはそうです。
package one.two.bn;
import Android.app.Activity;
import Android.content.Context;
import Android.os.Bundle;
import Android.os.Vibrator;
import Android.view.View;
import Android.widget.Button;
import Android.view.View.OnClickListener;
public class Vb extends Activity {
/** Called when the activity is first created. */
private Button button1;
private Vibrator vibrator;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
public void onClick(View v) {
if(v==button1){
vibrator.vibrate(300000);
}
}
もしあれば、どうもありがとうございました。
このコードを試してください
Vibrator vibe = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE) ;
次に、ボタンのOnClickListener
で:
vibe.vibrate(50); // 50 is time in ms
また、マニフェストに権限を追加する必要があることを忘れないでください(</application>
タグの後):
<uses-permission Android:name="Android.permission.VIBRATE" />
onTouchListener
はクリックする前に呼び出されるため、アプリに最適な出力が得られるため、Timにも同意します。
ActionModeやContextMenuと同じように、長押しフィードバックのバイブレーションが必要な場合は、
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
return true;
}
});
OnTouchListener()
の代わりにonClick()
を使用してください。
リスナー内でMotionEvent.getAction() == MotionEvent.ACTION_DOWN
の場合、vibrator.start(some arbitrarily large number here perhaps 1 minute or more)
を呼び出します
そしてgetAction() == MotionEvent.ACTION_UP
がvibrator.cancel().
を呼び出すとき
そうすれば、押し下げると振動が始まり、持ち上げると停止します。
button1.setOnClickListener(new View.OnClickListener() {
[...]
public void onClick(View v) {
if(v==button1){ // <- Don't need that...
// Do Stuff...
}
}});
'onClickListener'に内部クラスを使用する場合、ボタンのみがその 'onClick'メソッドをトリガーできるため、ビューがボタンであるかどうかを確認する必要はありません。
また、ボタンを押している間電話を振動させたい場合は、 'onLongClick'-method を使用します。