藏桑网教程:是一个免费提供流行手机教程、在线学习分享的学习平台!

Android NFC开发实战_安卓软件开发

随着科技的发展,手机在我们的生活中扮演了很重要的角色,手机在便利我们生活的同时,也会对我们造成很重要的影响.手机已经成为了我们的必需品,不仅是通讯工具,而且很大程度上都是娱乐功能。 手机人人爱,人人离不了啦.那么使用手机时,还要细心学习一些小知识!我们能够更好的使用手机。

  对于Android 4.0 SDK中提供的Beam例子,对于NFC开发来说的确是一个不错的模板。对于了解NFC的NDEF消息处理过程不妨看下面的代码。

  public class Beam extends Activity implements CreateNdefMessageCallback,

  OnNdefPushCompleteCallback {

  NfcAdapter mNfcAdapter;

  TextView mInfoText;

  private static final int MESSAGE_SENT = 1;

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  mInfoText = (TextView) findViewById(R.id.textView);

  mNfcAdapter = NfcAdapter.getDefaultAdapter(this); //实例化NFC设备

  if (mNfcAdapter == null) {

  mInfoText = (TextView) findViewById(R.id.textView);

  mInfoText.setText("NFC is not available on this device.");

  }

  

  mNfcAdapter.setNdefPushMessageCallback(this, this); //注册NDEF回调消息

  mNfcAdapter.setOnNdefPushCompleteCallback(this, this);

  }

  

  @Override

  public NdefMessage createNdefMessage(NfcEvent event) {

  Time time = new Time();

  time.setToNow();

  String text = ("Beam me up!nn" +

  "Beam Time: " + time.format("%H:%M:%S"));

  NdefMessage msg = new NdefMessage(

  new NdefRecord[] { createMimeRecord(

  "application/com.example.android.beam", text.getBytes())

  });

  return msg;

  }

  @Override

  public void onNdefPushComplete(NfcEvent arg0) {

  // A handler is needed to send messages to the activity when this

  // callback occurs, because it happens from a binder thread

  mHandler.obtainMessage(MESSAGE_SENT).sendToTarget();

  }

  private final Handler mHandler = new Handler() {

  @Override

  public void handleMessage(Message msg) {

  switch (msg.what) {

  case MESSAGE_SENT:

  Toast.makeText(getApplicationContext(), "Message sent!", Toast.LENGTH_LONG).show();

  break;

  }

  }

  };

  @Override

  public void onResume() {

  super.onResume();

  if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {

  processIntent(getIntent());

  }

  }

  @Override

  public void onNewIntent(Intent intent) {

  // onResume gets called after this to handle the intent

  setIntent(intent);

  }

  /**

  * Parses the NDEF Message from the intent and prints to the TextView

  */

  void processIntent(Intent intent) {

  Parcelable[] rawMsgs = intent.getParcelableArrayExtra(

  NfcAdapter.EXTRA_NDEF_MESSAGES);

  // only one message sent during the beam

  NdefMessage msg = (NdefMessage) rawMsgs[0];

  // record 0 contains the MIME type, record 1 is the AAR, if present

  mInfoText.setText(new String(msg.getRecords()[0].getPayload()));

  }

  /**

  * Creates a custom MIME type encapsulated in an NDEF record

  *

  * @param mimeType

  */

  public NdefRecord createMimeRecord(String mimeType, byte[] payload) {

  byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII"));

  NdefRecord mimeRecord = new NdefRecord(

  NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload);

  return mimeRecord;

  }

  @Override

  public boolean onCreateOptionsMenu(Menu menu) {

  // If NFC is not available, we won't be needing this menu

  if (mNfcAdapter == null) {

  return super.onCreateOptionsMenu(menu);

  }

  MenuInflater inflater = getMenuInflater();

  inflater.inflate(R.menu.options, menu);

  return true;

  }

  @Override

  public boolean onOptionsItemSelected(MenuItem item) {

  switch (item.getItemId()) {

  case R.id.menu_settings:

  Intent intent = new Intent(Settings.ACTION_NFCSHARING_SETTINGS);

  startActivity(intent);

  return true;

  default:

  return super.onOptionsItemSelected(item);

  }

  }

  }


如果安卓手机出现了未知问题,或是经过长时间使用导致系统缓慢不稳定,可以在设置──隐私设置中选择恢复出厂设置,来实现清空所有数据、恢复初始状态。注意,进行该操作前记得备份一下手机中的重要内容。