Location and Sensors
Masumi Nakamura
Location Manifest android.permission.access_coarse_location android.permission.access_fine_location Package android.location.* LOCATION_SERVICE (LocationManager) context.getsystemservice(context.location_service);
LocationManager LocationListener LocationListener Interface onlocationchanged(location location);
LocationManager - Usage requestlocationupdates (criteria, time, dist, listener) Criteria LocationManager.GPS_PROVIDER LocationManager.NETWORK_PROVIDER LocationManager.PASSIVE_PROVIDER removeupdates(listener); getlastknownlocation(provider)
Tips http://android-developers.blogspot.com/2011/06/deep-dive-into-lo cation.html (Reto Meier) http://code.google.com/p/android-protips-location/ getlastknownlocation() Coarse to Fine Intent usage (PendingIntent) to get latest update Passive Location Provider Prefetch Monitor Battery (Be Smart)
Location Lat / Lon Location.distanceBetween / distanceto GeoCoder getfromlocation getfromlocationname
Google Maps Android API Google Play Services API isgoogleplayservicesavailable() Manifest <uses-library android:name="com.google.android.maps" /> Package com.google.android.maps.* MapActivity / MapView MyLocationOverlay
MapActivity / MapView 1
MapActivity / MapView 2
MapActivity / MapView 3 MyLocationOverlay
OverlaySample
Sensors TYPE_ALL TYPE_ACCELEROMETER TYPE_GYROSCOPE TYPE_GRAVITY TYPE_ROTATION_VECTOR TYPE_LINEAR_ACCELERATION TYPE_MAGNETIC_FIELD TYPE_LIGHT TYPE_PROXIMITY TYPE_RELATIVE_HUMIDITY TYPE_AMBIENT_TEMPERATURE
Sensors - SensorListener SensorListener onaccuracychanged() onsensorchanged() registerlistener(listener, sensor, delay) SENSOR_DELAY_NORMAL SENSOR_DELAY_UI SENSOR_DELAY_GAME SENSOR_DELAY_FASTEST unregisterlistener
Sensors Orientation Events SensorEvent float[] values timestamp
NFC
NFC Near Field Communication (NFC) Short-range (up to 20 cm) http://www.nfc-forum.org/ (spec) 3 Modes: Card Emulation (readable) Reader Mode (reading) P2P Mode (data exchange)
NdefMessage (NDEF Message) NDEF - NFC Data Exchange Format 1 NDEF Message per NFC Scan Contains 1 or more NDEF Records android.nfc.ndefmessage Is a Parcelable (Intent passable)
NdefRecord (NDEF Record) android.nfc.ndefrecord May contain mutable fields Structure: 3-bit TNF (Type Name Format) Variable length type (when TNF_WELL_KNOWN) Variable length ID (optional ID) Variable length payload
Manifest <uses-permission android:name="android.permission.nfc"/> <uses-feature android:name="android.hardware.nfc" android:required="true" /> <uses-sdk android:minsdkversion="10"/> SDK 9 (2.3) ACTION_TAG_DISCOVERED only SDK 10 (2.3.3) Writing capability enabled SDK 14 (4.0) - Beam
NfcAdapter NfcAdapter adapter = NfcAdapter.getDefaultAdapter(context); if(adapter!=null) { } // true if enabled, false if not boolean enabled=adapter.isenabled();
enableforegrounddispatch
ACTION_NDEF_DISCOVERED
TECH_DISCOVERED
ACTION_TAG_DISCOVERED
Reading the Tag byte[] id=intent.getbytearrayextra(nfcadapter.extra_id); Tag tag = (Tag)intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); // API 10+ Parcelable[] msgs= intent.getparcelablearrayextra(nfcadapter.extra_ndef_messa GES); // msgs are NdefMessage so recast is needed
NdefRecord.RTD_TEXT
NdefRecord.RTD_URI First Byte defines prefix of URI
Sample TextRecord
Writing to Tag TagTechnology Ndef ndefref = Ndef.get((Tag)intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)); ndefref.writendefmessage(msgtowrite); connect() must be called before I/O operation. I/O operations may block so do not call in main app thread Only one TagTechnology can be connected at a time close() must be called after completing I/O
P2P Mode and Beam P2P mode API 10 (2.3.3) enableforegroundndefpush() enableforegrounddispatch() Beam API 14+ (4.0+) setndefpushmessage() // sync setndefpushmessagecallback() // async
P2P Mode
Beam