package com.firemint.realracing; import android.annotation.TargetApi; import android.app.Activity; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.nfc.FormatException; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; import android.nfc.NfcEvent; import android.nfc.Tag; import android.nfc.TagLostException; import android.nfc.tech.Ndef; import android.nfc.tech.NdefFormatable; import android.os.Parcelable; import com.google.android.gms.drive.DriveFile; import java.io.IOException; /* loaded from: classes2.dex */ public class fmNfcManager implements NfcAdapter.CreateNdefMessageCallback { static boolean m_bLog = true; NdefMessage m_ndefMessage = null; fmNfcData m_fmNfcData = null; NfcMode m_eNfcMode = NfcMode.NfcMode_Read; MainActivity m_activity = null; NfcAdapter m_nfcAdapter = null; boolean m_bForegroundDispatchEnabled = false; public enum NfcMode { NfcMode_Read, NfcMode_Write } public native byte[] GetNfcDataToTransmitJNI(); public native void NfcMessageReceivedJNI(byte[] bArr, int i); public void SetNfcMode(NfcMode nfcMode) { this.m_eNfcMode = nfcMode; if (nfcMode == NfcMode.NfcMode_Read) { Log("Setting mode to read"); } else if (nfcMode == NfcMode.NfcMode_Write) { Log("Setting mode to write"); } } public static void Log(String str) { if (m_bLog) { str.length(); } } public static void LogSeparator() { Log("--------------------"); } public boolean IsNfcAvailable() { if (this.m_nfcAdapter == null) { this.m_nfcAdapter = NfcAdapter.getDefaultAdapter(this.m_activity); } return this.m_nfcAdapter != null; } public void Initalise(Object obj) { if (!(obj instanceof Activity)) { Log("Failed to cast object to activity :("); } else { this.m_activity = (MainActivity) obj; } NfcAdapter defaultAdapter = NfcAdapter.getDefaultAdapter(this.m_activity); this.m_nfcAdapter = defaultAdapter; if (defaultAdapter != null) { EnableForegroundDispatch(); } } @Override // android.nfc.NfcAdapter.CreateNdefMessageCallback public NdefMessage createNdefMessage(NfcEvent nfcEvent) { Log("createNdefMessage callback"); NdefMessage CreateNdefMessage = CreateNdefMessage(GetNfcDataToTransmitJNI()); this.m_ndefMessage = CreateNdefMessage; return CreateNdefMessage; } public void onPause() { DisableForegroundDispatch(); } public void onResume() { EnableForegroundDispatch(); } public void HandleIntent(Intent intent) { Log("HandleIntent"); if (intent != null) { if (intent.getAction() != null) { Log("Intent action: " + intent.getAction()); } if (IsNfcAvailable()) { if (this.m_eNfcMode == NfcMode.NfcMode_Read) { Log("Read NFC message"); ReadNfcMessage(intent); } else { Log("Write NFC message"); WriteNfcMessage(intent); } } } } public void ReadNfcMessage(Intent intent) { Parcelable[] parcelableArrayExtra = intent.getParcelableArrayExtra("android.nfc.extra.NDEF_MESSAGES"); if (parcelableArrayExtra != null) { Log("Received a message :)"); if (parcelableArrayExtra.length > 0) { for (Parcelable parcelable : parcelableArrayExtra) { NdefMessage ndefMessage = (NdefMessage) parcelable; if (ndefMessage != null) { NdefRecord[] records = ndefMessage.getRecords(); if (records.length > 0) { NdefRecord ndefRecord = records[0]; if (ndefRecord != null) { fmNfcData fmnfcdata = new fmNfcData(); fmnfcdata.Import(ndefRecord.getPayload()); byte[] bArr = fmnfcdata.m_data; Log("NfcMessageReceivedJNI"); NfcMessageReceivedJNI(bArr, bArr.length); } else { Log("NdefRecord record was null"); } } else { Log("NdefRecord[] records length = 0"); } } else { Log("Parcelable parcelableMessage was null"); } } return; } Log("Parcelable[] messages length = 0"); return; } Log("Parcelable[] messages was null"); } public void WriteNfcMessage(Intent intent) { Tag tag = (Tag) intent.getParcelableExtra("android.nfc.extra.TAG"); if (tag != null) { fmNfcData fmnfcdata = this.m_fmNfcData; if (fmnfcdata != null) { WriteTag(this.m_activity, tag, fmnfcdata.GetByteArray()); } else { Log("fmNfcData was null. Skip writing the tag"); } } } @TargetApi(16) public void WriteTag(Context context, Tag tag, byte[] bArr) { NdefMessage ndefMessage = this.m_ndefMessage; if (ndefMessage == null) { ndefMessage = new NdefMessage(new NdefRecord[]{NdefRecord.createExternal("com.ea.games.r3_na", "r3.data", bArr), NdefRecord.createApplicationRecord(context.getPackageName())}); } Ndef ndef = Ndef.get(tag); if (ndef != null) { try { ndef.connect(); if (ndef.isWritable()) { int length = ndefMessage.toByteArray().length; int maxSize = ndef.getMaxSize(); Log("Message size is (" + length + ")"); Log("Tag size is (" + maxSize + ")"); if (maxSize >= length) { try { try { ndef.writeNdefMessage(ndefMessage); } catch (FormatException unused) { Log("Format exception :("); } } catch (TagLostException unused2) { Log("Tag has been lost :("); } catch (IOException unused3) { Log("IOException :("); } } else { Log("The message is too big for the tag"); } } else { Log("Tag is read only"); } return; } catch (Exception unused4) { Log("Failed to connect to the tag"); return; } } NdefFormatable ndefFormatable = NdefFormatable.get(tag); if (ndefFormatable != null) { try { ndefFormatable.connect(); ndefFormatable.format(ndefMessage); } catch (FormatException unused5) { Log("Format exception :("); } catch (TagLostException unused6) { Log("Tag has been lost :("); } catch (IOException unused7) { Log("IOException :("); } } } public void EnableForegroundDispatch() { if (!IsNfcAvailable() || this.m_bForegroundDispatchEnabled) { return; } this.m_activity.runOnUiThread(new Runnable() { // from class: com.firemint.realracing.fmNfcManager.1 @Override // java.lang.Runnable public void run() { fmNfcManager.Log("Enable Foreground Dispatch"); PendingIntent activity = PendingIntent.getActivity(fmNfcManager.this.m_activity, 0, new Intent(fmNfcManager.this.m_activity, (Class) MainActivity.class).addFlags(DriveFile.MODE_WRITE_ONLY), 335544320); try { new IntentFilter[]{new IntentFilter("android.nfc.action.TAG_DISCOVERED"), new IntentFilter("android.nfc.action.NDEF_DISCOVERED")}[0].addDataType("application/vnd.r3.data"); } catch (Exception e) { fmNfcManager.Log("Failed to add data to intent filter. e = " + e.toString()); } fmNfcManager fmnfcmanager = fmNfcManager.this; fmnfcmanager.m_nfcAdapter.enableForegroundDispatch(fmnfcmanager.m_activity, activity, null, null); fmNfcManager.this.m_bForegroundDispatchEnabled = true; } }); } public void DisableForegroundDispatch() { if (IsNfcAvailable() && this.m_bForegroundDispatchEnabled) { this.m_activity.runOnUiThread(new Runnable() { // from class: com.firemint.realracing.fmNfcManager.2 @Override // java.lang.Runnable public void run() { fmNfcManager.Log("Disable Foreground Dispatch"); fmNfcManager fmnfcmanager = fmNfcManager.this; fmnfcmanager.m_nfcAdapter.disableForegroundDispatch(fmnfcmanager.m_activity); fmNfcManager.this.m_bForegroundDispatchEnabled = false; } }); } } @TargetApi(16) public void SetNfcDataJNI(final byte[] bArr) { this.m_activity.runOnUiThread(new Runnable() { // from class: com.firemint.realracing.fmNfcManager.3 @Override // java.lang.Runnable public void run() { fmNfcManager.Log("SetNfcDataJNI!"); fmNfcManager fmnfcmanager = fmNfcManager.this; fmnfcmanager.m_ndefMessage = fmnfcmanager.CreateNdefMessage(bArr); } }); } public NdefMessage CreateNdefMessage(byte[] bArr) { fmNfcData fmnfcdata = new fmNfcData(bArr); this.m_fmNfcData = fmnfcdata; return new NdefMessage(new NdefRecord[]{NdefRecord.createExternal("com.ea.games.r3_na", "externaltype", fmnfcdata.GetByteArray()), NdefRecord.createApplicationRecord(this.m_activity.getPackageName())}); } public void SetNfcMode(int i) { if (i == 0) { Log("Undefined mode!"); } else if (i == 1) { SetNfcMode(NfcMode.NfcMode_Read); } else if (i == 2) { SetNfcMode(NfcMode.NfcMode_Write); } } }