17

ユーザーがボタンを押して電話を振動させるアプリを作成していますが、ボタンを押したままにしておくと振動するようにする方法がわかりません。これまでのコードはそうです。

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

助けていただける場合は、どうもありがとうございました。

4

5 に答える 5

69

このコードを試してください

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にも同意します。

于 2011-04-24T15:52:08.610 に答える
44

ActionMode や ContextMenu のように、長押しフィードバックのバイブレーションが必要な場合は、

view.setOnLongClickListener(new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {
        v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
        return true;
    }
});
于 2014-10-03T11:15:41.473 に答える
7

OnTouchListener()の代わりに を使用しonClick()ます。あなたが呼び出す

ときにリスナーの内側そして呼び出すとき そうすれば、押すと振動し始め、持ち上げると停止します。MotionEvent.getAction() == MotionEvent.ACTION_DOWNvibrator.start(some arbitrarily large number here perhaps 1 minute or more)
getAction() == MotionEvent.ACTION_UPvibrator.cancel().

于 2011-04-24T15:45:18.847 に答える
1
button1.setOnClickListener(new View.OnClickListener() {
  [...]
public void onClick(View v) {
  if(v==button1){ // <- Don't need that...
    // Do Stuff...
  }
}});

「onClickListener」に内部クラスを使用する場合、「onClick」メソッドをトリガーできるのはボタンのみであるため、ビューがボタンかどうかを確認する必要はありません。

また、ボタンを押している間、電話を振動させたい場合は、「onLongClick」メソッドを使用します。

于 2011-04-24T14:13:05.330 に答える
0

マニフェスト ファイルにバイブレーションのアクセス許可を追加します。

于 2011-04-24T14:09:40.060 に答える