rename Android Beam sample to Andriod Beam Demo and add launcher icon
Change-Id: If6edb7ac9ba2743ce0dbc39be6f1eede8ef66aaa
This commit is contained in:
112
samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java
Normal file
112
samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java
Normal file
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
* Copyright (C) 2011 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.beam;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.nfc.NdefMessage;
|
||||
import android.nfc.NdefRecord;
|
||||
import android.nfc.NfcAdapter;
|
||||
import android.nfc.NfcAdapter.CreateNdefMessageCallback;
|
||||
import android.nfc.NfcEvent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
|
||||
public class Beam extends Activity implements CreateNdefMessageCallback {
|
||||
NfcAdapter mNfcAdapter;
|
||||
TextView textView;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.main);
|
||||
TextView textView = (TextView) findViewById(R.id.textView);
|
||||
// Check for available NFC Adapter
|
||||
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
|
||||
if (mNfcAdapter == null) {
|
||||
Toast.makeText(this, "NFC is not available", Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
// Register callback
|
||||
mNfcAdapter.setNdefPushMessageCallback(this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NdefMessage createNdefMessage(NfcEvent event) {
|
||||
String text = ("Beam me up, Android!\n\n" +
|
||||
"Beam Time: " + System.currentTimeMillis());
|
||||
NdefMessage msg = new NdefMessage(
|
||||
new NdefRecord[] { createMimeRecord(
|
||||
"application/com.example.android.beam", text.getBytes())
|
||||
/**
|
||||
* The Android Application Record (AAR) is commented out. When a device
|
||||
* receives a push with an AAR in it, the application specified in the AAR
|
||||
* is guaranteed to run. The AAR overrides the tag dispatch system.
|
||||
* You can add it back in to guarantee that this
|
||||
* activity starts when receiving a beamed message. For now, this code
|
||||
* uses the tag dispatch system.
|
||||
*/
|
||||
//,NdefRecord.createApplicationRecord("com.example.android.beam")
|
||||
});
|
||||
return msg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
// Check to see that the Activity started due to an Android Beam
|
||||
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) {
|
||||
textView = (TextView) findViewById(R.id.textView);
|
||||
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
|
||||
textView.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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user