Мне нравится выполнять код в onClick. Я вообще не программист и сделал это с помощью YouTube и Google help. Мне нужно это на работе, чтобы облегчить мне жизнь. Потому что нет внешнего приложения, которое может справиться с этим :(
Мне нравится читать Nfc, только когда я нажимаю на btnNfc. Приложение теперь работает нормально для меня, но NFC читает все время. Это должно прочитать после того, как я нажму кнопку. Надеюсь, кто-нибудь может помочь мне с моим ужасным кодом.
Спасибо
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
btnBarcode = (Button) findViewById(R.id.btnBarcode);
btnBarcode.setOnClickListener(this);
btnNfc = (Button) findViewById(R.id.btnNfc);
btnNfc.setOnClickListener(this);
//read_content = (TextView)findViewById(R.id.textView);
read_content = (EditText)findViewById(R.id.read_content);
btnOptions = (Button)findViewById(R.id.btnOptions);
textipadress = (EditText) findViewById(R.id.textipadress);
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
// Stop here, we definitely need NFC
Toast.makeText(this, "This device doesn't support NFC.", Toast.LENGTH_LONG).show();
finish();
}
//readFromIntent(getIntent());
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
tagDetected.addCategory(Intent.CATEGORY_DEFAULT);
writeTagFilters = new IntentFilter[] { tagDetected };
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnBarcode:
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.initiateScan();
break;
case R.id.btnNfc:
break;
default:
break;
}
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanResult != null) {
String barcode;
barcode = scanResult.getContents();
TextView read_content = (TextView) findViewById(R.id.read_content);
read_content.setText(barcode);
}
// else continue with any other code you need in the method
}
public void send_data(View v) {
String message = read_content.getText().toString();
BackgroundTask b1 = new BackgroundTask();
b1.execute(message);
}
class BackgroundTask extends AsyncTask<String,Void,Void> {
Socket sClient;
PrintWriter writer;
@Override
protected Void doInBackground(String... voids) {
try {
String ip = textipadress.getText().toString();
String message = voids[0];
//sClient = new Socket("192.168.178.38", 6000);
sClient = new Socket(ip, 6000);
writer = new PrintWriter(sClient.getOutputStream());
writer.write(message);
writer.flush();
writer.close();
}catch(IOException e)
{
e.printStackTrace();
}
return null;
}
}
/******************************************************************************
**********************************Read From NFC Tag***************************
******************************************************************************/
private void readFromIntent(Intent intent) {
String action = intent.getAction();
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage[] msgs = null;
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
}
buildTagViews(msgs);
}
}
private void buildTagViews(NdefMessage[] msgs) {
if (msgs == null || msgs.length == 0) return;
String text = "";
byte[] payload = msgs[0].getRecords()[0].getPayload();
String textEncoding = ((payload[0] & 128) == 0) ? "UTF-8" : "UTF-16"; // Get the Text Encoding
int languageCodeLength = payload[0] & 0063; // Get the Language Code, e.g. "en"
// String languageCode = new String(payload, 1, languageCodeLength, "US-ASCII");
try {
// Get the Text
text = new String(payload, languageCodeLength + 1, payload.length - languageCodeLength - 1, textEncoding);
} catch (UnsupportedEncodingException e) {
Log.e("UnsupportedEncoding", e.toString());
}
read_content.setText(text);
}
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
readFromIntent(intent);
if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){
myTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
}
}
@Override
public void onPause(){
super.onPause();
WriteModeOff();
}
@Override
public void onResume(){
super.onResume();
WriteModeOn();
}
/******************************************************************************
**********************************Enable Write********************************
******************************************************************************/
private void WriteModeOn(){
writeMode = true;
nfcAdapter.enableForegroundDispatch(this, pendingIntent, writeTagFilters, null);
}
/******************************************************************************
**********************************Disable Write*******************************
******************************************************************************/
private void WriteModeOff(){
writeMode = false;
nfcAdapter.disableForegroundDispatch(this);
}