com.nxp.nfc_demo.fragments.NdefFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.nxp.nfc_demo.fragments.NdefFragment.java

Source

/*
 ****************************************************************************
 * Copyright(c) 2014 NXP Semiconductors                                     *
 * All rights are reserved.                                                 *
 *                                                                          *
 * Software that is described herein is for illustrative purposes only.     *
 * This software is supplied "AS IS" without any warranties of any kind,    *
 * and NXP Semiconductors disclaims any and all warranties, express or      *
 * implied, including all implied warranties of merchantability,            *
 * fitness for a particular purpose and non-infringement of intellectual    *
 * property rights.  NXP Semiconductors assumes no responsibility           *
 * or liability for the use of the software, conveys no license or          *
 * rights under any patent, copyright, mask work right, or any other        *
 * intellectual property rights in or to any products. NXP Semiconductors   *
 * reserves the right to make changes in the software without notification. *
 * NXP Semiconductors also makes no representation or warranty that such    *
 * application will be suitable for the specified use without further       *
 * testing or modification.                                                 *
 *                                                                          *
 * Permission to use, copy, modify, and distribute this software and its    *
 * documentation is hereby granted, under NXP Semiconductors' relevant      *
 * copyrights in the software, without fee, provided that it is used in     *
 * conjunction with NXP Semiconductor products(UCODE I2C, NTAG I2C).        *
 * This  copyright, permission, and disclaimer notice must appear in all    *
 * copies of this code.                                                     *
 ****************************************************************************
 */
package com.nxp.nfc_demo.fragments;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

import com.nxp.nfc_demo.activities.MainActivity;
import com.nxp.ntagi2cdemo.R;

public class NdefFragment extends Fragment implements OnClickListener, OnCheckedChangeListener {

    private static RadioGroup ndefWriteOptions;
    private static LinearLayout ndefReadType;
    private static TextView ndefText;
    private static EditText ndefEditText;
    private LinearLayout linearBt;
    private static EditText ndefEditMac;
    private static EditText ndefEditName;
    private static EditText ndefEditClass;
    private LinearLayout linearSp;
    private static EditText ndefEditTitle;
    private static EditText ndefEditLink;
    private static TextView ndefTypeText;
    private static TextView ndefCallback;
    private static TextView ndefDataRateCallback;
    private TextView ndefPerformance;
    private Button readNdefButton;
    private Button writeNdefButton;
    private Button writeDefaultNdefButton;
    private static CheckBox ndefReadLoop;
    private static CheckBox addAar;
    private static boolean writeChosen = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View layout = inflater.inflate(R.layout.fragment_ndef, container, false);

        ndefText = (TextView) layout.findViewById(R.id.ndefText);
        ndefEditText = (EditText) layout.findViewById(R.id.ndefEditText);
        linearBt = (LinearLayout) layout.findViewById(R.id.layoutBt);
        ndefEditMac = (EditText) layout.findViewById(R.id.ndefEditMac);
        ndefEditName = (EditText) layout.findViewById(R.id.ndefEditName);
        ndefEditClass = (EditText) layout.findViewById(R.id.ndefEditClass);
        linearSp = (LinearLayout) layout.findViewById(R.id.layoutSp);
        ndefEditTitle = (EditText) layout.findViewById(R.id.ndefEditTitle);
        ndefEditLink = (EditText) layout.findViewById(R.id.ndefEditLink);
        ndefTypeText = (TextView) layout.findViewById(R.id.ndefTypeText);
        ndefCallback = (TextView) layout.findViewById(R.id.ndef_textCallback);
        ndefDataRateCallback = (TextView) layout.findViewById(R.id.ndef_datarateCallback);
        ndefPerformance = (TextView) layout.findViewById(R.id.ndef_performance);
        ndefWriteOptions = (RadioGroup) layout.findViewById(R.id.ndefOptions);
        ndefReadType = (LinearLayout) layout.findViewById(R.id.ndefTypeLayout);
        readNdefButton = (Button) layout.findViewById(R.id.readNdefButton);
        writeNdefButton = (Button) layout.findViewById(R.id.writeNdefButton);
        writeDefaultNdefButton = (Button) layout.findViewById(R.id.writeDefaultButton);
        addAar = (CheckBox) layout.findViewById(R.id.Add_aar_checkbox);
        ndefReadLoop = (CheckBox) layout.findViewById(R.id.ndef_readLoop);
        ndefReadLoop.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // Read content
                if (isChecked == true && MainActivity.demo.isReady()) {
                    MainActivity.demo.finishAllTasks();
                    MainActivity.launchNdefDemo(MainActivity.getAuthStatus(), MainActivity.getPassword());
                }
            }
        });
        readNdefButton.setOnClickListener(this);
        writeNdefButton.setOnClickListener(this);
        writeDefaultNdefButton.setOnClickListener(this);
        ndefWriteOptions.setOnCheckedChangeListener(this);

        // Set the variable to false to avoid sending the last selected value
        writeChosen = false;

        return layout;
    }

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.readNdefButton:
            // Reset the values of the view
            MainActivity.demo.NDEFReadFinish();
            ndefPerformance.setText(getResources().getString(R.string.layout_input_ndef_read));
            ndefCallback.setText(getResources().getString(R.string.readNdefMsg));
            readNdefButton.setBackgroundResource(R.drawable.btn_blue);
            writeNdefButton.setBackgroundColor(Color.BLACK);
            ndefWriteOptions.setVisibility(View.GONE);
            ndefReadType.setVisibility(View.VISIBLE);
            linearBt.setVisibility(View.GONE);
            linearSp.setVisibility(View.GONE);
            ndefEditText.setVisibility(View.GONE);
            ndefText.setVisibility(View.VISIBLE);
            ndefReadLoop.setVisibility(View.VISIBLE);
            writeChosen = false;

            // Read content
            if (MainActivity.demo.isReady()) {
                MainActivity.demo.finishAllTasks();
                MainActivity.launchNdefDemo(MainActivity.getAuthStatus(), MainActivity.getPassword());
            }

            // Make the writeDefaultButtons and AAR checkbox invisible
            writeDefaultNdefButton.setVisibility(View.GONE);
            addAar.setVisibility(View.GONE);

            break;

        case R.id.writeNdefButton:
            // Make the writeDefaultButtons and AAR checkbox visible
            writeDefaultNdefButton.setVisibility(View.VISIBLE);
            addAar.setVisibility(View.VISIBLE);
            ndefPerformance.setText(getResources().getString(R.string.layout_input_ndef_write));
            ndefCallback.setText(getResources().getString(R.string.writeNdefMsg));

            // Close the ReadNdef Taks
            MainActivity.demo.NDEFReadFinish();

            if (writeChosen == true) {
                if (MainActivity.demo.isReady()) {
                    MainActivity.demo.finishAllTasks();
                    MainActivity.launchNdefDemo(MainActivity.getAuthStatus(), MainActivity.getPassword());
                }
            } else {
                ndefCallback.setText(getResources().getString(R.string.writeNdefMsg));
                writeNdefButton.setBackgroundResource(R.drawable.btn_blue);
                readNdefButton.setBackgroundColor(Color.BLACK);
                ndefWriteOptions.setVisibility(View.VISIBLE);
                ndefReadType.setVisibility(View.GONE);
                ndefReadLoop.setVisibility(View.GONE);
                if (getNdefType().equals(getResources().getString(R.string.radio_btpair))) {
                    linearBt.setVisibility(View.VISIBLE);
                    linearSp.setVisibility(View.GONE);
                    ndefEditText.setVisibility(View.GONE);
                } else if (getNdefType().equals(getResources().getString(R.string.radio_sp))) {
                    linearBt.setVisibility(View.GONE);
                    linearSp.setVisibility(View.VISIBLE);
                    ndefEditText.setVisibility(View.GONE);
                } else {
                    linearBt.setVisibility(View.GONE);
                    linearSp.setVisibility(View.GONE);
                    ndefEditText.setVisibility(View.VISIBLE);
                }
                ndefText.setVisibility(View.GONE);
                writeChosen = true;
            }

            break;

        case R.id.writeDefaultButton:
            ndefCallback.setText(getResources().getString(R.string.writeNdefMsg));
            writeNdefButton.setBackgroundResource(R.drawable.btn_blue);
            readNdefButton.setBackgroundColor(Color.BLACK);
            ndefWriteOptions.setVisibility(View.VISIBLE);
            ndefReadType.setVisibility(View.GONE);
            RadioButton uri = (RadioButton) ndefWriteOptions.getChildAt(6);
            uri.setChecked(true);
            linearSp.setVisibility(View.VISIBLE);
            linearBt.setVisibility(View.GONE);
            ndefEditText.setVisibility(View.GONE);
            ndefEditTitle.setText(getResources().getString(R.string.ndef_default_text));
            ndefEditLink.setText(getResources().getString(R.string.ndef_default_uri));
            ndefText.setVisibility(View.GONE);
            addAar.setChecked(true);
            writeChosen = true;

            // Write content
            if (MainActivity.demo.isReady()) {
                MainActivity.demo.finishAllTasks();
                MainActivity.launchNdefDemo(MainActivity.getAuthStatus(), MainActivity.getPassword());
            }
            break;
        default:
            break;
        }
    } // END onClick (View v)

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        if (checkedId == R.id.radioNdefText) {
            ndefEditText.setVisibility(View.VISIBLE);
            ndefEditText.setText("");
            linearBt.setVisibility(View.GONE);
            linearSp.setVisibility(View.GONE);
        } else if (checkedId == R.id.radioNdefUrl) {
            ndefEditText.setVisibility(View.VISIBLE);
            ndefEditText.setText("http://www.");
            linearBt.setVisibility(View.GONE);
            linearSp.setVisibility(View.GONE);
        } else if (checkedId == R.id.radioNdefBt) {
            ndefEditText.setVisibility(View.GONE);
            linearBt.setVisibility(View.VISIBLE);
            linearSp.setVisibility(View.GONE);
        } else if (checkedId == R.id.radioNdefSp) {
            ndefEditText.setVisibility(View.GONE);
            linearBt.setVisibility(View.GONE);
            linearSp.setVisibility(View.VISIBLE);
            ndefEditLink.setText("http://www.");
        }
    }

    public static void resetNdefDemo() {
        if (writeChosen == true) {
            setAnswer("Tap tag to write NDEF content");
        } else {
            setAnswer("Tap tag to read NDEF content");
        }
        setNdefMessage("");
        setNdefType("");
        setDatarate("");
        setNdefType("");
    }

    public static String getText() {
        return ndefEditText.getText().toString();
    }

    public static String getBtMac() {
        return ndefEditMac.getText().toString();
    }

    public static String getBtName() {
        return ndefEditName.getText().toString();
    }

    public static String getBtClass() {
        return ndefEditClass.getText().toString();
    }

    public static String getSpTitle() {
        return ndefEditTitle.getText().toString();
    }

    public static String getSpLink() {
        return ndefEditLink.getText().toString();
    }

    public static boolean isAarRecordSelected() {
        return addAar.isChecked();
    }

    public static boolean isNdefReadLoopSelected() {
        return ndefReadLoop.isChecked();
    }

    public static void setAnswer(String answer) {
        ndefCallback.setText(answer);
    }

    public static void setDatarate(String datarate) {
        ndefDataRateCallback.setText(datarate);
    }

    public static void setNdefType(String type) {
        ndefTypeText.setText(type);
    }

    public static void setNdefMessage(String answer) {
        ndefText.setText(answer);
    }

    public static String getNdefType() {
        int id = ndefWriteOptions.getCheckedRadioButtonId();
        View radioButton = ndefWriteOptions.findViewById(id);
        int radioId = ndefWriteOptions.indexOfChild(radioButton);
        RadioButton btn = (RadioButton) ndefWriteOptions.getChildAt(radioId);
        return (String) btn.getText();
    }

    public static boolean isWriteChosen() {
        return writeChosen;
    }
}