जब मैं के बारे में पोस्ट करने के लिए था मेरी जवाब मैंने पाया कि किसी को पहले से ही किसी तरह का समाधान मिला है ....
लेकिन यहां मेरा, सरल और एक आकर्षण की तरह काम करता है। सिर्फ एक झंडा;)
यह कोड शॉर्टप्रेस और लम्बे समय का पता लगाता है, जब एक लम्बाई होती है तो कोई शॉर्टप्रेस नहीं निकाल दिया जाएगा!
नोट: आप सामान्य ऊपर मात्रा और नीचे व्यवहार इस तरह onKeyPress विधि में वापसी सच सुपर कॉल करने के लिए बदल चाहते हैं:
private boolean shortPress = false;
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
shortPress = false;
Toast.makeText(this, "longPress", Toast.LENGTH_LONG).show();
return true;
}
//Just return false because the super call does always the same (returning false)
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
event.startTracking();
if(event.getRepeatCount() == 0){
shortPress = true;
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
if(shortPress){
Toast.makeText(this, "shortPress", Toast.LENGTH_LONG).show();
} else {
//Don't handle longpress here, because the user will have to get his finger back up first
}
shortPress = false;
return true;
}
return super.onKeyUp(keyCode, event);
}
: सुपर कॉल बिना
event.startTracking();
if(event.getRepeatCount() == 0){
shortPress = true;
}
//return true;
return super.onKeyDown(keyCode, event);
कोड
कोड यहाँ नीचे मात्रा कुंजी जोड़ा, बस अपने पक्ष लेने के साथ है;)
private boolean shortPress = false;
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
shortPress = false;
Toast.makeText(this, "longPress Volume Down", Toast.LENGTH_LONG).show();
return true;
} else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
shortPress = false;
Toast.makeText(this, "longPress Volume Up", Toast.LENGTH_LONG).show();
return true;
}
//Just return false because the super call does always the same (returning false)
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
event.startTracking();
if(event.getRepeatCount() == 0){
shortPress = true;
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
if(shortPress){
Toast.makeText(this, "shortPress Volume Down", Toast.LENGTH_LONG).show();
} else {
//Don't handle longpress here, because the user will have to get his finger back up first
}
shortPress = false;
return true;
} else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
if(shortPress){
Toast.makeText(this, "shortPress Volume up", Toast.LENGTH_LONG).show();
} else {
//Don't handle longpress here, because the user will have to get his finger back up first
}
shortPress = false;
return true;
}
return super.onKeyUp(keyCode, event);
}
फिर कुंजीडाउन के बजाय कुंजी (KeyEvent.KEYCODE_VOLUME_UP) के साथ प्रयास करें; यदि लंबी प्रेस कुंजी से पहले कॉल करेगी, यदि लंबे समय तक दबाए गए हैं तो फ्लैग – Sandy09
का उपयोग करके कीप में कार्रवाई को रोकें, यह वॉल्यूम अप कुंजी है, न कि एक संकेतक जो आपको बताता है कि कुंजी दबाई गई है या ऐसा कुछ है। –
मैं इस समय –