Updated on 2026-08-14
This commit is contained in:
parent
28066a7206
commit
c78902999e
5 changed files with 220 additions and 34 deletions
169
app/src/main/java/com/tangem/NFCLocation.kt
Normal file
169
app/src/main/java/com/tangem/NFCLocation.kt
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
package com.tangem.domain
|
||||
|
||||
enum class NFCLocation(val codename: String, val fullName: String, val orientation: Int, val x: Int, val y: Int, val z: Int) {
|
||||
model1("sailfish", "Google Pixel", 0, 65, 25, 0),
|
||||
model2("walleye", "Google Pixel 2", 0, 40, 15, 0),
|
||||
model3("taimen", "Google Pixel 2 XL", 0, 40, 15, 0),
|
||||
model4("marlin", "Google Pixel XL", 0, 65, 25, 0),
|
||||
model5("htc_pme", "HTC 10", 0, 50, 20, 0),
|
||||
model6("htc_himau", "HTC One M9", 0, 50, 20, 0),
|
||||
model7("htc_himaw", "HTC One M9", 0, 50, 20, 0),
|
||||
model8("htc_oce", "HTC U Ultra", 0, 50, 20, 0),
|
||||
model9("htc_ocn", "HTC U11", 0, 50, 25, 0),
|
||||
model10("htc_ocm", "HTC U11+", 0, 50, 60, 0),
|
||||
model11("htc_ime", "HTC U12+", 0, 50, 20, 0),
|
||||
model12("HWCOL", "Huawei Honor 10", 0, 50, 0, 0),
|
||||
model13("HWFRD", "Huawei Honor 8", 0, 50, 0, 0),
|
||||
model14("HWDUK", "Huawei Honor 8 Pro", 0, 50, 0, 0),
|
||||
model15("HWSTF", "Huawei Honor 9", 0, 50, 0, 0),
|
||||
model16("HWBKL", "Huawei Honor View 10", 0, 50, 0, 0),
|
||||
model17("HWALP", "Huawei Mate 10", 0, 50, 0, 0),
|
||||
model18("HWBLA", "Huawei Mate 10 Pro", 0, 50, 0, 0),
|
||||
model19("HWBLN-H", "Huawei Mate 9 Lite / Honor 6X", 0, 40, 0, 0),
|
||||
model20("angler", "Huawei Nexus 6P", 0, 40, 15, 0),
|
||||
model21("HWVTR", "Huawei P10", 0, 50, 0, 0),
|
||||
model22("HWWAS-H", "Huawei P10 lite", 0, 50, 0, 0),
|
||||
model23("HWVKY", "Huawei P10 Plus", 0, 50, 0, 0),
|
||||
model24("HWEML", "Huawei P20", 0, 50, 50, 0),
|
||||
model25("HWCLT", "Huawei P20 Pro", 0, 50, 50, 0),
|
||||
model26("HW-01K", "Huawei P20 Pro", 0, 50, 50, 0),
|
||||
model27("hwALE-", "Huawei P8 Lite", 1, 75, 65, 0),
|
||||
model28("HWPRA-H", "Huawei P8 Lite 2017", 0, 50, 25, 0),
|
||||
model29("HWEVA", "Huawei P9", 0, 50, 0, 0),
|
||||
model30("HWVNS-?", "Huawei P9 Lite", 0, 60, 45, 0),
|
||||
model31("HWVIE", "Huawei P9 Plus", 0, 50, 0, 0),
|
||||
model32("h1", "LG G5", 0, 30, 20, 0),
|
||||
model33("lucye", "LG G6", 0, 50, 50, 0),
|
||||
model34("hammerhead", "LG Nexus 5", 0, 50, 50, 0),
|
||||
model35("bullhead", "LG Nexus 5X", 0, 45, 15, 0),
|
||||
model36("mh", "LG Q6", 1, 25, 50, 0),
|
||||
model37("ph2n", "LG Stylo 2+", 0, 75, 20, 0),
|
||||
model38("sf340n", "LG Stylo 3+", 0, 75, 20, 0),
|
||||
model39("ph1n", "LG Stylus 2", 0, 75, 20, 0),
|
||||
model40("msf3", "LG Stylus 3", 0, 75, 20, 0),
|
||||
model41("elsa", "LG V20", 0, 50, 15, 0),
|
||||
model42("joan", "LG V30", 0, 50, 50, 0),
|
||||
model43("L-01K", "LG V30+", 0, 50, 50, 0),
|
||||
model44("nora_8917_n", "Motorola Moto E5", 0, 50, 40, 0),
|
||||
model45("potter_n", "Motorola Moto G5 Plus", 0, 50, 5, 0),
|
||||
model46("montana_n", "Motorola Moto G5s", 0, 50, 5, 0),
|
||||
model47("sanders_n", "Motorola Moto G5s Plus", 0, 50, 5, 0),
|
||||
model48("ali_n", "Motorola Moto G6", 0, 50, 35, 0),
|
||||
model49("aljeter_n", "Motorola Moto G6 Play", 0, 50, 35, 0),
|
||||
model50("evert_n", "Motorola Moto G6 Plus", 0, 40, 40, 0),
|
||||
model51("payton", "Motorola Moto X4", 0, 50, 40, 0),
|
||||
model52("nash", "Motorola Moto Z2 Force", 0, 50, 40, 0),
|
||||
model53("albus", "Motorola Moto Z2 Play", 0, 50, 5, 0),
|
||||
model54("shamu", "Motorola Nexus 6", 0, 50, 60, 0),
|
||||
model55("NE1", "Nokia 3", 0, 40, 30, 0),
|
||||
model56("ND1", "Nokia 5", 0, 40, 25, 0),
|
||||
model57("PLE", "Nokia 6", 0, 50, 20, 0),
|
||||
model58("C1N", "Nokia 7", 0, 50, 25, 0),
|
||||
model59("B2N", "Nokia 7 Plus", 0, 75, 10, 0),
|
||||
model60("NB1", "Nokia 8", 0, 50, 30, 0),
|
||||
model61("OnePlus3", "OnePlus 3", 0, 50, 15, 0),
|
||||
model62("OnePlus3T", "OnePlus 3t", 0, 50, 15, 0),
|
||||
model63("OnePlus5", "OnePlus 5", 0, 80, 5, 0),
|
||||
model64("OnePlus5T", "OnePlus 5t", 0, 80, 5, 0),
|
||||
model65("OnePlus6", "OnePlus 6", 0, 50, 20, 0),
|
||||
model66("A0001", "OnePlus One", 0, 50, 50, 0),
|
||||
model67("a5x", "Samsung Galaxy A5 (2016)", 1, 50, 45, 0),
|
||||
model68("a8", "Samsung Galaxy A8 / A8 (2016)", 0, 50, 15, 0),
|
||||
model69("jackpotlte", "Samsung Galaxy A8 (2018)", 1, 50, 50, 0),
|
||||
model70("jackpot2lte", "Samsung Galaxy A8+", 1, 50, 45, 0),
|
||||
model71("a9xltechn", "Samsung Galaxy A9 (2016)", 1, 50, 45, 0),
|
||||
model72("a7y17lte", "Samsung Galaxy A7 (2017)", 1, 60, 40, 0),
|
||||
model73("c5ltechn", "Samsung Galaxy C5", 0, 45, 15, 0),
|
||||
model74("c5pltechn", "Samsung Galaxy C5", 0, 45, 15, 0),
|
||||
model75("c5proltechn", "Samsung Galaxy C5 Pro", 1, 45, 15, 0),
|
||||
model76("c7ltechn", "Samsung Galaxy C7", 0, 50, 15, 0),
|
||||
model77("c7prolte", "Samsung Galaxy C7 Pro", 1, 50, 15, 0),
|
||||
model78("c9lte", "Samsung Galaxy C9 Pro", 0, 45, 15, 0),
|
||||
model79("j5x", "Samsung Galaxy J5 (2016)", 1, 40, 50, 0),
|
||||
model80("j5y17lte", "Samsung Galaxy J5 (2017) / J5 Pro", 1, 60, 50, 0),
|
||||
model81("j7y17lte", "Samsung Galaxy J7 Pro", 1, 40, 50, 0),
|
||||
model82("noblelte", "Samsung Galaxy Note5", 1, 50, 60, 0),
|
||||
model83("SCV37", "Samsung Galaxy Note8", 1, 50, 45, 0),
|
||||
model84("SC-01K", "Samsung Galaxy Note8", 1, 50, 45, 0),
|
||||
model85("great", "Samsung Galaxy Note8", 1, 50, 45, 0),
|
||||
model86("SC-05G", "Samsung Galaxy S6", 1, 30, 60, 0),
|
||||
model87("zeroflte", "Samsung Galaxy S6", 1, 30, 60, 0),
|
||||
model88("SCV31", "Samsung Galaxy S6 edge", 1, 30, 60, 0),
|
||||
model89("404SC", "Samsung Galaxy S6 edge", 1, 30, 60, 0),
|
||||
model90("SC-04G", "Samsung Galaxy S6 edge", 1, 30, 60, 0),
|
||||
model91("zerolte", "Samsung Galaxy S6 edge", 1, 30, 60, 0),
|
||||
model92("zenlte", "Samsung Galaxy S6 edge+", 1, 50, 55, 0),
|
||||
model93("heroqlte", "Samsung Galaxy S7", 1, 50, 45, 0),
|
||||
model94("herolte", "Samsung Galaxy S7", 1, 50, 45, 0),
|
||||
model95("SCV33", "Samsung Galaxy S7 Edge", 1, 50, 45, 0),
|
||||
model96("SC-02H", "Samsung Galaxy S7 Edge", 1, 50, 45, 0),
|
||||
model97("hero2", "Samsung Galaxy S7 Edge", 1, 50, 45, 0),
|
||||
model98("poseidonlteatt", "Samsung Galaxy S7 Active", 1, 45, 55, 0),
|
||||
model99("SCV36", "Samsung Galaxy S8", 1, 50, 55, 0),
|
||||
model100("SC-02J", "Samsung Galaxy S8", 1, 50, 55, 0),
|
||||
model101("SCV35", "Samsung Galaxy S8+", 1, 50, 45, 0),
|
||||
model102("SC-03J", "Samsung Galaxy S8+", 1, 50, 45, 0),
|
||||
model103("dream2", "Samsung Galaxy S8+", 1, 50, 45, 0),
|
||||
model104("cruiserlte", "Samsung Galaxy S8 Active", 1, 50, 50, 0),
|
||||
model105("SCV38", "Samsung Galaxy S9", 1, 50, 50, 0),
|
||||
model106("SC-02K", "Samsung Galaxy S9", 1, 50, 50, 0),
|
||||
model107("starlte", "Samsung Galaxy S9", 1, 50, 50, 0),
|
||||
model108("starqlte", "Samsung Galaxy S9", 1, 50, 50, 0),
|
||||
model109("SCV39", "Samsung Galaxy S9+", 1, 50, 60, 0),
|
||||
model110("SC-03K", "Samsung Galaxy S9+", 1, 50, 60, 0),
|
||||
model111("star2", "Samsung Galaxy S9+", 1, 50, 60, 0),
|
||||
model112("F331", "Sony Xperia E5", 0, 50, 25, 0),
|
||||
model113("G33", "Sony Xperia L1", 0, 50, 30, 0),
|
||||
model114("H33", "Sony Xperia L2", 0, 50, 20, 0),
|
||||
model115("H43", "Sony Xperia L2", 0, 50, 20, 0),
|
||||
model116("F512", "Sony Xperia X", 0, 10, 5, 1),
|
||||
model117("suzu", "Sony Xperia X", 0, 10, 5, 1),
|
||||
model118("F5321", "Sony Xperia X Compact", 0, 50, 55, 0),
|
||||
model119("SO-02J", "Sony Xperia X Compact", 0, 50, 55, 0),
|
||||
model120("F813", "Sony Xperia X Performance", 0, 10, 5, 1),
|
||||
model121("SOV33", "Sony Xperia X Performance", 0, 10, 5, 1),
|
||||
model122("SO-04H", "Sony Xperia X Performance", 0, 10, 5, 1),
|
||||
model123("502SO", "Sony Xperia X Performance", 0, 10, 5, 1),
|
||||
model124("F311", "Sony Xperia XA", 0, 50, 20, 0),
|
||||
model125("F321", "Sony Xperia XA Ultra", 0, 50, 25, 0),
|
||||
model126("G31", "Sony Xperia XA1", 0, 50, 20, 0),
|
||||
model127("G34", "Sony Xperia XA1 Plus", 0, 50, 25, 0),
|
||||
model128("G32", "Sony Xperia XA1 Ultra", 0, 50, 20, 0),
|
||||
model129("H31", "Sony Xperia XA2", 0, 50, 15, 0),
|
||||
model130("H41", "Sony Xperia XA2", 0, 50, 15, 0),
|
||||
model131("H32", "Sony Xperia XA2 Ultra", 0, 50, 20, 0),
|
||||
model132("H42", "Sony Xperia XA2 Ultra", 0, 50, 20, 0),
|
||||
model133("F833", "Sony Xperia XZ", 0, 20, 5, 1),
|
||||
model134("SO-01J", "Sony Xperia XZ", 0, 20, 5, 1),
|
||||
model135("601SO", "Sony Xperia XZ", 0, 20, 5, 1),
|
||||
model136("SOV34", "Sony Xperia XZ", 0, 20, 5, 1),
|
||||
model137("G81", "Sony Xperia XZ Premium", 0, 50, 55, 0),
|
||||
model138("SO-04J", "Sony Xperia XZ Premium", 0, 50, 55, 0),
|
||||
model139("G834", "Sony Xperia XZ1", 0, 45, 5, 0),
|
||||
model140("701SO", "Sony Xperia XZ1", 0, 45, 5, 0),
|
||||
model141("SOV36", "Sony Xperia XZ1", 0, 45, 5, 0),
|
||||
model142("SO-01K", "Sony Xperia XZ1", 0, 45, 5, 0),
|
||||
model143("G8441", "Sony Xperia XZ1 Compact", 0, 50, 30, 0),
|
||||
model144("SO-02K", "Sony Xperia XZ1 Compact", 0, 50, 30, 0),
|
||||
model145("H82", "Sony Xperia XZ2", 0, 20, 40, 0),
|
||||
model146("SOV37", "Sony Xperia XZ2", 0, 20, 40, 0),
|
||||
model147("SO-03K", "Sony Xperia XZ2", 0, 20, 40, 0),
|
||||
model148("702SO", "Sony Xperia XZ2", 0, 20, 40, 0),
|
||||
model149("H8324", "Sony Xperia XZ2 Compact", 0, 50, 25, 0),
|
||||
model150("SO-05K", "Sony Xperia XZ2 Compact", 0, 50, 25, 0),
|
||||
model151("H8314", "Sony Xperia XZ2 Compact", 0, 50, 25, 0),
|
||||
model152("G823", "Sony Xperia XZs", 0, 20, 5, 1),
|
||||
model153("602SO", "Sony Xperia XZs", 0, 20, 5, 1),
|
||||
model154("SOV35", "Sony Xperia XZs", 0, 20, 5, 1),
|
||||
model155("SO-03J", "Sony Xperia XZs", 0, 20, 5, 1),
|
||||
model156("gemini", "Xiaomi Mi 5", 0, 40, 20, 0),
|
||||
model157("capricorn", "Xiaomi Mi 5S", 0, 50, 10, 0),
|
||||
model158("natrium", "Xiaomi Mi 5S Plus", 0, 45, 15, 0),
|
||||
model159("sagit", "Xiaomi Mi 6", 0, 50, 20, 0),
|
||||
model160("dipper", "Xiaomi Mi 8", 0, 45, 20, 0),
|
||||
model161("lithium", "Xiaomi Mi MIX", 0, 20, 20, 0),
|
||||
model162("chiron", "Xiaomi Mi MIX 2", 0, 45, 20, 0),
|
||||
model163("polaris", "Xiaomi Mi MIX 2S", 0, 45, 20, 0),
|
||||
model164("scorpio", "Xiaomi Mi Note 2", 0, 50, 20, 0),
|
||||
model165("jason", "Xiaomi Mi Note 3", 0, 50, 20, 0),
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
package com.tangem.domain.wallet;
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
public class DeviceNFCAntennaLocation {
|
||||
|
||||
public float X;
|
||||
public float Y;
|
||||
public boolean OnBackSide;
|
||||
public float Strength;
|
||||
|
||||
public void getAntennaLocation() {
|
||||
String device = DeviceName.getDeviceName();
|
||||
String model = Build.DEVICE;
|
||||
this.X = 0.5f;
|
||||
this.Y = 0.33f;
|
||||
this.OnBackSide = true;
|
||||
this.Strength = 1.0f;
|
||||
// Samsung
|
||||
// if (model.contains("Samsung")) {this.Y = 0.33; this.Strength = 0.5; }
|
||||
// if (model.contains("Sony")) {this.Y = 0.33; this.Strength = 0.5; }
|
||||
// if (device == "Galaxy J5") {this.Y = 0.4; this.Strength = 0.5; }
|
||||
if (device == "P10 lite") {this.Y = 0.03f; this.Strength = 0.8f; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package com.tangem.domain.wallet
|
||||
|
||||
import android.os.Build
|
||||
import com.tangem.domain.NFCLocation
|
||||
|
||||
class DeviceNFCAntennaLocation {
|
||||
val TAG: String = DeviceNFCAntennaLocation::class.java.simpleName
|
||||
|
||||
var orientation: Int = 0
|
||||
var fullName: String = ""
|
||||
var x: Float = 0.toFloat()
|
||||
var y: Float = 0.toFloat()
|
||||
var z: Float = 0.toFloat()
|
||||
var onBackSide: Boolean = false
|
||||
var strength: Float = 0.toFloat()
|
||||
|
||||
fun getAntennaLocation() {
|
||||
val codename = Build.DEVICE
|
||||
|
||||
// default values
|
||||
this.orientation = 0
|
||||
this.fullName = ""
|
||||
this.x = 0.5f
|
||||
this.y = 0.35f
|
||||
this.z = 0f
|
||||
this.onBackSide = true
|
||||
this.strength = 1.0f
|
||||
|
||||
for (nfcLocation in NFCLocation.values()) {
|
||||
if (codename == nfcLocation.codename) {
|
||||
this.fullName = nfcLocation.fullName
|
||||
this.orientation = nfcLocation.orientation
|
||||
this.x = nfcLocation.x / 100f
|
||||
this.y = nfcLocation.y / 100f
|
||||
this.z = nfcLocation.z / 100f
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -87,21 +87,22 @@ public class MainActivity extends AppCompatActivity implements PopupMenu.OnMenuI
|
|||
|
||||
rippleBackground.startRippleAnimation();
|
||||
|
||||
if (BuildConfig.DEBUG)
|
||||
tvNFCHint.setText("Scan a banknote with your\n" + PhoneUtility.GetPhoneName() + "\nas shown above");
|
||||
else
|
||||
tvNFCHint.setText(R.string.scan_banknote);
|
||||
|
||||
DeviceNFCAntennaLocation antenna = new DeviceNFCAntennaLocation();
|
||||
antenna.getAntennaLocation();
|
||||
|
||||
// set phone name
|
||||
if (!antenna.getFullName().equals(""))
|
||||
tvNFCHint.setText("Scan a banknote with your\n" + antenna.getFullName() + "\n as shown above");
|
||||
else
|
||||
tvNFCHint.setText("Scan a banknote with your\n" + getString(R.string.phone) + "\n as shown above");
|
||||
|
||||
// animate
|
||||
final RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) hand.getLayoutParams();
|
||||
final RelativeLayout.LayoutParams lp2 = (RelativeLayout.LayoutParams) nfc.getLayoutParams();
|
||||
final float dp = getResources().getDisplayMetrics().density;
|
||||
final float lm = dp * (69 + antenna.X * 75);
|
||||
lp.topMargin = (int) (dp * (-100 + antenna.Y * 250));
|
||||
lp2.topMargin = (int) (dp * (-125 + antenna.Y * 250));
|
||||
final float lm = dp * (69 + antenna.getX() * 75);
|
||||
lp.topMargin = (int) (dp * (-100 + antenna.getY() * 250));
|
||||
lp2.topMargin = (int) (dp * (-125 + antenna.getY() * 250));
|
||||
nfc.setLayoutParams(lp2);
|
||||
Animation a = new Animation() {
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue