यह वह तरीका है जिसे मैंने बनाया है, जो कुंजी कोड और कुंजी नामों का उपयोग करता है। मैंने इस कोड को लगभग 10 साल पहले लिखा था और फिर वापस यह अधिकांश उपकरणों का समर्थन करता था। (हालांकि, मैंने पाया कि एक अपवाद कुछ ऋषि मॉडल था जिसमें -6
और -7
कुंजी कोड दूसरे तरीके से हैं!लेकिन आप शायद के आसपास काम कर सकता था कुंजी नाम फिर से उपयोग करने कि - लेकिन आप भी उपयोगकर्ता एजेंट प्राप्त करने के लिए आवश्यकता हो सकती है)
private static final int SOFT_BUTTON_KEY_CODE_UNDEFINED = -999;
private static int LEFT_SOFT_BUTTON_KEY_CODE = SOFT_BUTTON_KEY_CODE_UNDEFINED;
private static int RIGHT_SOFT_BUTTON_KEY_CODE = SOFT_BUTTON_KEY_CODE_UNDEFINED;
private boolean isLeftSoftButton(int keyCode) {
// Try the standard code
if (keyCode == -6) {
return true;
}
// Try the code we have already detected
else if (keyCode == LEFT_SOFT_BUTTON_KEY_CODE && LEFT_SOFT_BUTTON_KEY_CODE != SOFT_BUTTON_KEY_CODE_UNDEFINED) {
return true;
}
// If we haven't yet detected the code...
else if (LEFT_SOFT_BUTTON_KEY_CODE == SOFT_BUTTON_KEY_CODE_UNDEFINED) {
// try to detect it
String keyName = getKeyName(keyCode).toUpperCase();
if (keyName.equals("SOFT1") || keyName.equals("LEFT SELECTION KEY") || keyName.equals("LEFT SOFTKEY") || keyName.equals("LEFT SOFT KEY") || keyName.equals("SOFTKEY 1") || keyName.equals("-6")) {
// It's the left soft button! So remember the code for next time...
LEFT_SOFT_BUTTON_KEY_CODE = keyCode;
// Return true
return true;
}
else {
// keyName didn't match, so return false
return false;
}
}
else {
// keyCode didn't match
return false;
}
}
private boolean isRightSoftButton(int keyCode) {
// Try the standard code
if (keyCode == -7) {
return true;
}
// Try the code we have already detected
else if (keyCode == RIGHT_SOFT_BUTTON_KEY_CODE && RIGHT_SOFT_BUTTON_KEY_CODE != SOFT_BUTTON_KEY_CODE_UNDEFINED) {
return true;
}
// If we haven't yet detected the code...
else if (RIGHT_SOFT_BUTTON_KEY_CODE == SOFT_BUTTON_KEY_CODE_UNDEFINED) {
// try to detect it
String keyName = getKeyName(keyCode).toUpperCase();
if (keyName.equals("SOFT2") || keyName.equals("RIGHT SELECTION KEY") || keyName.equals("RIGHT SOFTKEY") || keyName.equals("RIGHT SOFT KEY") || keyName.equals("SOFTKEY 4") || keyName.equals("SOFTKEY 2") || keyName.equals("-7")) {
// It's the right soft button! So remember the code for next time...
RIGHT_SOFT_BUTTON_KEY_CODE = keyCode;
// Return true
return true;
}
else {
// keyName didn't match, so return false
return false;
}
}
else {
// keyCode didn't match
return false;
}
}
अपडेट किया गया कोड, पर http://www.iteye.com/topic/179073 आधारित ...
private static final int SOFT_BUTTON_KEY_CODE_UNDEFINED = -999;
private static int LEFT_SOFT_BUTTON_KEY_CODE = SOFT_BUTTON_KEY_CODE_UNDEFINED;
private static int RIGHT_SOFT_BUTTON_KEY_CODE = SOFT_BUTTON_KEY_CODE_UNDEFINED;
private boolean isLeftSoftButton(int keyCode) {
// Try the standard codes
// standard || Motorola || Siemens || Motorola 2 || Motorola 1
if (keyCode == -6 || keyCode == -21 || keyCode == -1 || keyCode == -20 || keyCode == 21) {
return true;
}
// Try the code we have already detected
else if (keyCode == LEFT_SOFT_BUTTON_KEY_CODE && LEFT_SOFT_BUTTON_KEY_CODE != SOFT_BUTTON_KEY_CODE_UNDEFINED) {
return true;
}
// If we haven't yet detected the code...
else if (LEFT_SOFT_BUTTON_KEY_CODE == SOFT_BUTTON_KEY_CODE_UNDEFINED) {
// try to detect it
String keyName = getKeyName(keyCode).toUpperCase();
if (keyName.equals("SOFT1") || keyName.equals("LEFT SELECTION KEY") || keyName.equals("LEFT SOFTKEY") || keyName.equals("LEFT SOFT KEY") || keyName.equals("SOFTKEY 1") || keyName.equals("-6")) {
// It's the left soft button! So remember the code for next time...
LEFT_SOFT_BUTTON_KEY_CODE = keyCode;
// Return true
return true;
}
else {
// keyName didn't match, so return false
return false;
}
}
else {
// keyCode didn't match
return false;
}
}
private boolean isRightSoftButton(int keyCode) {
// Try the standard codes
// standard || Motorola || Siemens || Motorola 1
if (keyCode == -7 || keyCode == -22 || keyCode == -4 || keyCode == 22) {
return true;
}
// Try the code we have already detected
else if (keyCode == RIGHT_SOFT_BUTTON_KEY_CODE && RIGHT_SOFT_BUTTON_KEY_CODE != SOFT_BUTTON_KEY_CODE_UNDEFINED) {
return true;
}
// If we haven't yet detected the code...
else if (RIGHT_SOFT_BUTTON_KEY_CODE == SOFT_BUTTON_KEY_CODE_UNDEFINED) {
// try to detect it
String keyName = getKeyName(keyCode).toUpperCase();
if (keyName.equals("SOFT2") || keyName.equals("RIGHT SELECTION KEY") || keyName.equals("RIGHT SOFTKEY") || keyName.equals("RIGHT SOFT KEY") || keyName.equals("SOFTKEY 4") || keyName.equals("SOFTKEY 2") || keyName.equals("-7")) {
// It's the right soft button! So remember the code for next time...
RIGHT_SOFT_BUTTON_KEY_CODE = keyCode;
// Return true
return true;
}
else {
// keyName didn't match, so return false
return false;
}
}
else {
// keyCode didn't match
return false;
}
}`
स्रोत
2015-03-16 12:45:55
@। funkybro - यह मेरे सुझावों में से एक था, इसलिए मुझे लगता है कि आप केवल आंशिक रूप से असहमत हैं :) कुछ ऐप्स में जेएडी में उपयोगकर्ता-विशिष्ट डेटा होता है (जो प्रत्येक उपयोगकर्ता के लिए अद्वितीय है), लेकिन एक एकल जार। उस मामले में जेएडी को अतिरिक्त लाइन या दो जोड़ना कोई बड़ा सौदा नहीं है। ड्रबिन की टिप्पणी भी देखें। –
सच है, लेकिन आप जिस प्लेटफ़ॉर्म पर हैं, उसके बारे में रनटाइम जागरूकता का मूल्य नरम कुंजी कोड से गहरा चलता है; यह आपको अच्छे यूआई बनाने और हैंडसेट-विशिष्ट बग के आसपास काम करने की अनुमति देता है, सभी अलग जेएआर के बिना। – funkybro