NFC service is now an application service in packages/apps/Nfc. NFC service is registered through ServiceManager.addService(), and the proxy object NfcAdapter obtains a handle to it through ServiceManager.getService(). **Important** Had to add new symbols AID_NFC / NFC_UID / android.uid.nfc and modify service_manager.c, Process.java and PackageManagerService.java in order to force the com.android.nfc process to take a fixed uid, so that it can use ServiceManager.addService(). Most of the JNI has moved to packages/apps/Nfc/jni. However NdefRecord and NdefMessage require some in-process native code, so android_com_NdefMessage.cpp and android_com_NdefRecord.cpp stay in frameworks/base/core/jni. They link to a very small library libnfc_ndef.so that implements NDEF message parsing. This has been added to core.mk so all devices (even without NFC hardware) can work with NDEF data. Bug: 3041259 Bug: 3097445 Change-Id: If7f00cd8f2053acfc9319ca366d4a9c02bd396e6 Signed-off-by: Nick Pelly <npelly@google.com>
55 lines
2.0 KiB
C
55 lines
2.0 KiB
C
/*
|
|
* Copyright (C) 2010 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.
|
|
*/
|
|
|
|
/*
|
|
* Contains the bare minimum header so that framework NFC jni can link
|
|
* against NFC native library
|
|
*/
|
|
|
|
#ifndef __ANDROID_NFC_H__
|
|
#define __ANDROID_NFC_H__
|
|
|
|
extern "C" {
|
|
|
|
typedef struct phFriNfc_NdefRecord {
|
|
uint8_t Flags;
|
|
uint8_t Tnf;
|
|
uint8_t TypeLength;
|
|
uint8_t *Type;
|
|
uint8_t IdLength;
|
|
uint8_t *Id;
|
|
uint32_t PayloadLength;
|
|
uint8_t *PayloadData;
|
|
} phFriNfc_NdefRecord_t;
|
|
|
|
uint16_t phFriNfc_NdefRecord_GetRecords(uint8_t* pBuffer,
|
|
uint32_t BufferLength,
|
|
uint8_t* pRawRecords[ ],
|
|
uint8_t IsChunked[ ],
|
|
uint32_t* pNumberOfRawRecords
|
|
);
|
|
uint16_t phFriNfc_NdefRecord_Parse(phFriNfc_NdefRecord_t* pRecord,
|
|
uint8_t* pRawRecord);
|
|
|
|
uint16_t phFriNfc_NdefRecord_Generate(phFriNfc_NdefRecord_t* pRecord,
|
|
uint8_t* pBuffer,
|
|
uint32_t MaxBufferSize,
|
|
uint32_t* pBytesWritten
|
|
);
|
|
}
|
|
|
|
#endif
|