package com.mfh.comna.utils.nfc;
import android.app.Activity;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.view.View;
import android.widget.EditText;
/**
* Nfc的服务类,实现对NfcActivity中广播消息的接收,用于获取IC卡的Token
*
* @author yxm
* @version 1.0
*/
public class NfcUtil extends Service {
private String Token;//Intent对象经处理后获取的特定标记
private ISetNfcCardNum nfcListen;//接口类的对象
private static NfcUtil service = null;
/**
* 构造方法
*/
public NfcUtil() {
service = this;
}
/**
* 获取NfcService自身的方法
*/
public static NfcUtil getService() {
if (service == null)
throw new RuntimeException("null");
return service;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
/**
* 注册监听器
*
* @param listen 接口类的对象
*/
public void setNfcListener(ISetNfcCardNum listen) {
this.nfcListen = listen;
}
/**
* 移除监听器
*/
public void removeListener() {
this.nfcListen = null;
}
/**
* 服务被开启时调用的方法
*
* @param intent 用于启动该service的intent
* @param flags 启动操作选项,通常为0
* @param startId 标识此次启动请求
* @return
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//接收广播消息
IntentFilter filter = new IntentFilter("com.mfh.nfc.NFC_BROADCAST");
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Token = intent.getStringExtra("Token");
if (nfcListen != null)
nfcListen.setNfcCardNum(Token);
}
};
this.registerReceiver(receiver, filter);//注册广播
return super.onStartCommand(intent, flags, startId);
}
/**
* 设置IC卡号的公共方法,如需扩展可重载
*
* @param activity 监听NFC事件的组件
* @param Token 包含Tag的Intent对象经处理后获取的特定标记
*/
public void setNum(Activity activity, String Token) {
View rootView = activity.getWindow().getDecorView();
int viewId = rootView.findFocus().getId();
EditText edit;
View v = activity.findViewById(viewId);
if (v instanceof EditText) {
edit = (EditText) v;
edit.setText(Token);
}
}
}