package eVVM.apk.ui.home; import android.app.Dialog; import android.content.Intent; import android.location.Location; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; import android.os.Parcelable; import android.os.Bundle; import android.support.design.widget.BottomNavigationView; import android.util.Log; import android.view.View; import com.hjq.bar.OnTitleBarListener; import com.hjq.bar.TitleBar; import com.hjq.dialog.MessageDialog; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; import android.widget.ImageView; import java.util.Arrays; import butterknife.BindView; import eVVM.apk.R; import eVVM.apk.helper.GPS.GPSLocationListener; import eVVM.apk.helper.GPS.GPSLocationManager; import eVVM.apk.helper.SPUtils; import eVVM.apk.helper.SoundPoolHelper; import eVVM.apk.ui.bean.VnDetailBean; import eVVM.apk.ui.home.uploadChip.UploadChipContract; import eVVM.apk.helper.ActivityStackManager; import eVVM.apk.helper.DoubleClickHelper; import eVVM.apk.ui.login.LoginActivity; /** * 厂家操作员登录页面 */ public class FactoryOperatorActivity extends BaseNfcActivity implements UploadChipContract.View { private String textRecord; private GPSLocationManager gpsLocationManager; private Location location; @BindView(R.id.reading_title) TitleBar readingTitle; @BindView(R.id.reading__line) ImageView imgreadline; @Override protected int getLayoutId() { return R.layout.activity_factory_operator; } @Override protected int getTitleId() { return R.id.reading_title; } @Override protected void initView() { getAnimationSao(); //进行雷达扫描动画 soundPoolHelper = new SoundPoolHelper(4, SoundPoolHelper.TYPE_MUSIC) .setRingtoneType(SoundPoolHelper.RING_TYPE_MUSIC) .loadDefault(FactoryOperatorActivity.this) .load(FactoryOperatorActivity.this, "factory_operator_success", R.raw.factory_operator_success) .load(FactoryOperatorActivity.this, "factory_operator_error", R.raw.factory_operator_error); readingTitle.setOnTitleBarListener(new OnTitleBarListener() { @Override public void onLeftClick(View v) { } @Override public void onTitleClick(View v) { } @Override public void onRightClick(View v) { getExit(); //toast("tuichu"); } }); } private void getExit() { new MessageDialog.Builder(this) .setTitle("") // 标题可以不用填写 .setMessage("您确定要退出吗") .setConfirm("确定") .setCancel("取消") // 设置 null 表示不显示取消按钮 //.setAutoDismiss(false) // 设置点击按钮后不关闭对话框 .setListener(new MessageDialog.OnListener() { @Override public void onConfirm(Dialog dialog) { //退出的操作 startActivity(LoginActivity.class); SPUtils.clear(); // 进行内存优化,销毁掉所有的界面 ActivityStackManager.getInstance().finishAllActivities(LoginActivity.class); } @Override public void onCancel(Dialog dialog) { //toast("取消了"); } }) .show(); } private void getAnimationSao() { Animation animation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); animation.setFillAfter(true); animation.setDuration(2000); //两秒转一圈 animation.setInterpolator(new LinearInterpolator()); animation.setRepeatCount(Animation.INFINITE); //循环执行 imgreadline.startAnimation(animation); } @Override protected void initData() { mNfcAdapter = NfcAdapter.getDefaultAdapter(this); gpsLocationManager = GPSLocationManager.getInstances(FactoryOperatorActivity.this); } @Override public void onNewIntent(Intent intent) { readNfcTag(intent); Log.e("***", textRecord); if (textRecord.length() > 94) { if (location != null) { String chipNumber = textRecord.substring(6, chipNumberEndIndex); getPresenter().forFactoryOperator(chipNumber, textRecord, location.getLongitude(), location.getLatitude()); } else { toast("位置信息获取失败"); } } else { toast("读取失败,请重试"); } } private SoundPoolHelper soundPoolHelper; @Override public void uploadChipError(String msg) { if (msg.equals("芯片不存在")) { soundPoolHelper.play("factory_operator_error", false); } toast(msg); } @Override public void uploadChipSuccess(VnDetailBean data) { soundPoolHelper.play("factory_operator_success", false); Log.e("FactoryOperatorActivity", data.getCode() + ""); } /** * 读取NFC标签文本数据 */ private void readNfcTag(Intent intent) { if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra( NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage msgs[] = null; int contentSize = 0; if (rawMsgs != null) { msgs = new NdefMessage[rawMsgs.length]; for (int i = 0; i < rawMsgs.length; i++) { msgs[i] = (NdefMessage) rawMsgs[i]; contentSize += msgs[i].toByteArray().length; } } try { if (msgs != null) { NdefRecord record = msgs[0].getRecords()[0]; textRecord = parseTextRecord(record); // mTagText += textRecord + "\n\ntext\n" + contentSize + " bytes"; } } catch (Exception e) { } } } /** * 解析NDEF文本数据 */ public static String parseTextRecord(NdefRecord ndefRecord) { /** * 判断数据是否为NDEF格式 */ //判断TNF if (ndefRecord.getTnf() != NdefRecord.TNF_WELL_KNOWN) { return null; } //判断可变的长度的类型 if (!Arrays.equals(ndefRecord.getType(), NdefRecord.RTD_TEXT)) { return null; } try { byte[] bArray = ndefRecord.getPayload(); StringBuffer sb = new StringBuffer(bArray.length); String sTemp; for (int i = 0; i < bArray.length; i++) { sTemp = Integer.toHexString(0xFF & bArray[i]); if (sTemp.length() < 2) sb.append(0); sb.append(sTemp.toUpperCase()); } return sb.toString(); } catch (Exception e) { throw new IllegalArgumentException(); } } @Override protected void onStart() { super.onStart(); //开启定位 gpsLocationManager.start(new FactoryOperatorActivity.MyListener()); } @Override protected void onStop() { super.onStop(); //终止定位 gpsLocationManager.stop(); } @Override protected void onDestroy() { super.onDestroy(); } class MyListener implements GPSLocationListener { @Override public void UpdateLocation(Location _location) { if (_location != null) { location = _location; // Log.e("****","经度:" + location.getLongitude() + "\n纬度:" + location.getLatitude()); } } @Override public void UpdateStatus(String provider, int status, Bundle extras) { if ("gps" == provider) { //Toast.makeText(FactoryOperatorActivity.this, "定位类型:" + provider, Toast.LENGTH_SHORT).show(); } } @Override public void UpdateGPSProviderStatus(int gpsStatus) { // switch (gpsStatus) { // case GPSProviderStatus.GPS_ENABLED: // Toast.makeText(FactoryOperatorActivity.this, "GPS开启", Toast.LENGTH_SHORT).show(); // break; // case GPSProviderStatus.GPS_DISABLED: // Toast.makeText(FactoryOperatorActivity.this, "GPS关闭", Toast.LENGTH_SHORT).show(); // break; // case GPSProviderStatus.GPS_OUT_OF_SERVICE: // Toast.makeText(FactoryOperatorActivity.this, "GPS不可用", Toast.LENGTH_SHORT).show(); // break; // case GPSProviderStatus.GPS_TEMPORARILY_UNAVAILABLE: // Toast.makeText(FactoryOperatorActivity.this, "GPS暂时不可用", Toast.LENGTH_SHORT).show(); // break; // case GPSProviderStatus.GPS_AVAILABLE: // Toast.makeText(FactoryOperatorActivity.this, "GPS可用啦", Toast.LENGTH_SHORT).show(); // break; // } } } @Override public void onBackPressed() { if (DoubleClickHelper.isOnDoubleClick()) { //移动到上一个任务栈,避免侧滑引起的不良反应 moveTaskToBack(false); postDelayed(new Runnable() { @Override public void run() { // 进行内存优化,销毁掉所有的界面 ActivityStackManager.getInstance().finishAllActivities(); // 销毁进程 System.exit(0); } }, 300); } else { toast(getResources().getString(R.string.home_exit_hint)); } } @Override public boolean isSupportSwipeBack() { // 不使用侧滑功能 return false; } }