2012-01-31 9 views
10

जब मैं स्क्रीन पर किसी ऑब्जेक्ट को स्पर्श करता हूं तो मैं अपने डिवाइस को कंपन करने की कोशिश कर रहा हूं। मैं इस कोड का उपयोग कर रहा हूँ:एंड्रॉइड वाइब्रेट स्पर्श पर?

Vibrator v = (Vibrator) getSystemService(getApplicationContext().VIBRATOR_SERVICE); 
v.vibrate(300);  

मैनिफ़ेस्ट फ़ाइल में अनुमति के साथ, लेकिन मैं किसी भी परिणाम प्राप्त नहीं हैं। कोई सुझाव? इसके अलावा, मेरा हार्डवेयर कंपन का समर्थन करता है।

उत्तर

22

इस प्रयास करें:

Button b = (Button) findViewById(R.id.button1); 
    b.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
      vb.vibrate(100); 
      return false; 
     } 
    }); 

और जोड़ने Manifest.xml को

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

यह ठीक काम करता है मुझे लगता है कि आप गलत विजेट पर टच विधि को कार्यान्वित करते हैं, कृपया फिर से जांचें। क्योंकि उन्हें कंपन कोड के साथ कोई समस्या नहीं है। –

+0

यह अच्छा है, लेकिन जब उपयोगकर्ता उंगली को आगे बढ़ता रहता है, तो यह कंपन को जारी रखेगा - अच्छा उपयोगकर्ता अनुभव नहीं - नीचे मेरा उत्तर देखें जो इस – Mercury

14

this answer के अनुसार, आप किसी भी अतिरिक्त अनुमतियों के लिए बिना पूछे हैप्टिक फ़ीडबैक (कंपन) प्रदर्शन कर सकते हैं तो यह अनुमति। performHapticFeedback विधि देखें।

View view = findViewById(...) 
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); 

नोट: मैंने इस कोड का परीक्षण नहीं किया है।

+3

को हल करता है मैंने इसका परीक्षण किया। यह काम करता हैं। –

+0

मुझे लगता है कि यह एक प्रकार का कमजोर है। क्या कोई मजबूत स्पर्श कंपन है? – santafebound

+0

बढ़िया! वास्तव में मुझे क्या चाहिए। आपका बहुत बहुत धन्यवाद। – DmitryKanunnikoff

0

यह एक बार कंपन करेगा उपयोगकर्ता (जब उपयोगकर्ता अभी भी अपनी उंगली चाल हिल रखने नहीं होगा!) दृश्य को छुआ जब:

@Override 
public boolean onTouch(View view, MotionEvent event) { 

    if(event.getAction() == MotionEvent.ACTION_DOWN) { 
     Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
     v.vibrate(VIBRATE_DURATION_MS); 
    } 
    return true; 
} 

और के रूप में रमेश ने कहा, प्रकट में अनुमति अनुमति देते हैं:

<uses-permission android:name="android.permission.VIBRATE"/> 
संबंधित मुद्दे