Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
with
553 additions
and 0 deletions.
- +6 −0 .gitignore
- +1 −0 app/.gitignore
- +24 −0 app/build.gradle
- +17 −0 app/proguard-rules.pro
- +13 −0 app/src/androidTest/java/tud/seemuh/nfcgate/ApplicationTest.java
- +41 −0 app/src/main/AndroidManifest.xml
- +109 −0 app/src/main/java/tud/seemuh/nfcgate/MainActivity.java
- BIN app/src/main/res/drawable-hdpi/ic_launcher.png
- BIN app/src/main/res/drawable-mdpi/ic_launcher.png
- BIN app/src/main/res/drawable-xhdpi/ic_launcher.png
- BIN app/src/main/res/drawable-xxhdpi/ic_launcher.png
- +11 −0 app/src/main/res/layout/activity_main.xml
- +5 −0 app/src/main/res/menu/menu_main.xml
- +6 −0 app/src/main/res/values-w820dp/dimens.xml
- +5 −0 app/src/main/res/values/dimens.xml
- +8 −0 app/src/main/res/values/strings.xml
- +8 −0 app/src/main/res/values/styles.xml
- +19 −0 app/src/main/res/xml/tech.xml
- +19 −0 build.gradle
- BIN gradle/wrapper/gradle-wrapper.jar
- +6 −0 gradle/wrapper/gradle-wrapper.properties
- +164 −0 gradlew
- +90 −0 gradlew.bat
- +1 −0 settings.gradle
@@ -0,0 +1,6 @@ | ||
.gradle | ||
/local.properties | ||
/.idea | ||
.DS_Store | ||
/build | ||
*.iml |
@@ -0,0 +1 @@ | ||
/build |
@@ -0,0 +1,24 @@ | ||
apply plugin: 'com.android.application' | ||
|
||
android { | ||
compileSdkVersion 20 | ||
buildToolsVersion "20.0.0" | ||
|
||
defaultConfig { | ||
applicationId "tud.seemuh.nfcgate" | ||
minSdkVersion 19 | ||
targetSdkVersion 20 | ||
versionCode 1 | ||
versionName "1.0" | ||
} | ||
buildTypes { | ||
release { | ||
runProguard false | ||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
} | ||
} | ||
} | ||
|
||
dependencies { | ||
compile fileTree(dir: 'libs', include: ['*.jar']) | ||
} |
@@ -0,0 +1,17 @@ | ||
# Add project specific ProGuard rules here. | ||
# By default, the flags in this file are appended to flags specified | ||
# in /opt/android-sdk/tools/proguard/proguard-android.txt | ||
# You can edit the include path and order by changing the proguardFiles | ||
# directive in build.gradle. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# Add any project specific keep options here: | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} |
@@ -0,0 +1,13 @@ | ||
package tud.seemuh.nfcgate; | ||
|
||
import android.app.Application; | ||
import android.test.ApplicationTestCase; | ||
|
||
/** | ||
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a> | ||
*/ | ||
public class ApplicationTest extends ApplicationTestCase<Application> { | ||
public ApplicationTest() { | ||
super(Application.class); | ||
} | ||
} |
@@ -0,0 +1,41 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="tud.seemuh.nfcgate" > | ||
|
||
<uses-permission android:name="android.permission.NFC" /> | ||
|
||
<uses-sdk android:targetSdkVersion="19" /> | ||
|
||
<application | ||
android:allowBackup="true" | ||
android:icon="@drawable/ic_launcher" | ||
android:label="@string/app_name" | ||
android:theme="@style/AppTheme" > | ||
<activity | ||
android:name=".MainActivity" | ||
android:label="@string/app_name" > | ||
<intent-filter> | ||
<action android:name="android.intent.action.MAIN" /> | ||
|
||
<category android:name="android.intent.category.LAUNCHER" /> | ||
</intent-filter> | ||
</activity> | ||
|
||
<!-- NFC Klimbim --> | ||
<activity-alias | ||
android:name=".ActivityAlias" | ||
android:targetActivity=".MainActivity" | ||
android:enabled="true"> | ||
|
||
<intent-filter> | ||
<action android:name="android.nfc.action.TECH_DISCOVERED" /> | ||
<category android:name="android.intent.category.DEFAULT" /> | ||
</intent-filter> | ||
<meta-data | ||
android:name="android.nfc.action.TECH_DISCOVERED" | ||
android:resource="@xml/tech" /> | ||
</activity-alias> | ||
|
||
</application> | ||
|
||
</manifest> |
@@ -0,0 +1,109 @@ | ||
package tud.seemuh.nfcgate; | ||
|
||
import android.app.Activity; | ||
import android.app.PendingIntent; | ||
import android.content.BroadcastReceiver; | ||
import android.content.Context; | ||
import android.content.Intent; | ||
import android.content.IntentFilter; | ||
import android.nfc.NfcAdapter; | ||
import android.nfc.Tag; | ||
import android.nfc.tech.IsoDep; | ||
import android.nfc.tech.NfcA; | ||
import android.os.Bundle; | ||
import android.util.Log; | ||
import android.view.Menu; | ||
import android.view.MenuItem; | ||
|
||
|
||
public class MainActivity extends Activity { | ||
|
||
private NfcAdapter mAdapter; | ||
private IntentFilter mIntentFilter; | ||
private PendingIntent mPendingIntent; | ||
private IntentFilter[] mFilters; | ||
private String[][] mTechLists; | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_main); | ||
|
||
mAdapter = NfcAdapter.getDefaultAdapter(this); | ||
mIntentFilter = new IntentFilter("android.nfc.action.ADAPTER_STATE_CHANGED"); | ||
|
||
// Create a generic PendingIntent that will be deliver to this activity. | ||
// The NFC stack | ||
// will fill in the intent with the details of the discovered tag before | ||
// delivering to | ||
// this activity. | ||
mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, | ||
getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); | ||
|
||
// Setup an intent filter | ||
IntentFilter tech = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); | ||
mFilters = new IntentFilter[] { tech, }; | ||
mTechLists = new String[][] { new String[] { IsoDep.class.getName(), | ||
NfcA.class.getName() } }; | ||
|
||
} | ||
|
||
/** | ||
* called when app is already open and intent is fired | ||
* @param intent | ||
*/ | ||
@Override | ||
public void onNewIntent(Intent intent) { | ||
Log.i("DEBUG", "onNewIntent(): started"); | ||
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) { | ||
Log.i("NFCGATE_DEBUG","Discovered tag with intent: " + intent); | ||
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); | ||
Log.i("NFCGATE_DEBUG", tag.toString()); | ||
|
||
//Ab hier koennte man schon mit dem Tag arbeiten!!! | ||
} | ||
} | ||
|
||
/** | ||
* Will always be called?! | ||
*/ | ||
@Override | ||
public void onResume() { | ||
super.onResume(); | ||
Log.i("DEBUG", "onResume(): intent: " + getIntent().getAction()); | ||
|
||
/* TODO | ||
Ist NFC Aktiviert checken... | ||
Utils.checkNfcEnabled(this,mAdapter); | ||
*/ | ||
|
||
mAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists); | ||
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) { | ||
Log.i("NFCGATE_DEBUG", "onResume(): starting onNewIntent()..."); | ||
onNewIntent(getIntent()); | ||
} | ||
} | ||
|
||
|
||
@Override | ||
public boolean onCreateOptionsMenu(Menu menu) { | ||
// Inflate the menu; this adds items to the action bar if it is present. | ||
getMenuInflater().inflate(R.menu.menu_main, menu); | ||
return true; | ||
} | ||
|
||
@Override | ||
public boolean onOptionsItemSelected(MenuItem item) { | ||
// Handle action bar item clicks here. The action bar will | ||
// automatically handle clicks on the Home/Up button, so long | ||
// as you specify a parent activity in AndroidManifest.xml. | ||
int id = item.getItemId(); | ||
|
||
//noinspection SimplifiableIfStatement | ||
if (id == R.id.action_settings) { | ||
return true; | ||
} | ||
|
||
return super.onOptionsItemSelected(item); | ||
} | ||
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,11 @@ | ||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" | ||
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" | ||
android:paddingRight="@dimen/activity_horizontal_margin" | ||
android:paddingTop="@dimen/activity_vertical_margin" | ||
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> | ||
|
||
<TextView android:text="@string/hello_world" android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" /> | ||
|
||
</RelativeLayout> |
@@ -0,0 +1,5 @@ | ||
<menu xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> | ||
<item android:id="@+id/action_settings" android:title="@string/action_settings" | ||
android:orderInCategory="100" android:showAsAction="never" /> | ||
</menu> |
@@ -0,0 +1,6 @@ | ||
<resources> | ||
<!-- Example customization of dimensions originally defined in res/values/dimens.xml | ||
(such as screen margins) for screens with more than 820dp of available width. This | ||
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> | ||
<dimen name="activity_horizontal_margin">64dp</dimen> | ||
</resources> |
@@ -0,0 +1,5 @@ | ||
<resources> | ||
<!-- Default screen margins, per the Android Design guidelines. --> | ||
<dimen name="activity_horizontal_margin">16dp</dimen> | ||
<dimen name="activity_vertical_margin">16dp</dimen> | ||
</resources> |
@@ -0,0 +1,8 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<resources> | ||
|
||
<string name="app_name">nfcgate</string> | ||
<string name="hello_world">Hello world!</string> | ||
<string name="action_settings">Settings</string> | ||
|
||
</resources> |
@@ -0,0 +1,8 @@ | ||
<resources> | ||
|
||
<!-- Base application theme. --> | ||
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> | ||
<!-- Customize your theme here. --> | ||
</style> | ||
|
||
</resources> |
@@ -0,0 +1,19 @@ | ||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> | ||
<!-- probably too much 'technologies' here --> | ||
<tech-list> | ||
<!-- | ||
<tech>android.nfc.tech.IsoDep</tech> | ||
<tech>android.nfc.tech.NfcA</tech> | ||
<tech>android.nfc.tech.NfcB</tech> | ||
<tech>android.nfc.tech.NfcF</tech> | ||
<tech>android.nfc.tech.NfcV</tech> | ||
<tech>android.nfc.tech.Ndef</tech> | ||
<tech>android.nfc.tech.NdefFormatable</tech> | ||
<tech>android.nfc.tech.MifareClassic</tech> | ||
<tech>android.nfc.tech.MifareUltralight</tech> --> | ||
|
||
<tech>android.nfc.tech.IsoDep</tech> | ||
<tech>android.nfc.tech.NfcA</tech> | ||
</tech-list> | ||
|
||
</resources> |
@@ -0,0 +1,19 @@ | ||
// Top-level build file where you can add configuration options common to all sub-projects/modules. | ||
|
||
buildscript { | ||
repositories { | ||
jcenter() | ||
} | ||
dependencies { | ||
classpath 'com.android.tools.build:gradle:0.12.2' | ||
|
||
// NOTE: Do not place your application dependencies here; they belong | ||
// in the individual module build.gradle files | ||
} | ||
} | ||
|
||
allprojects { | ||
repositories { | ||
jcenter() | ||
} | ||
} |
Binary file not shown.
@@ -0,0 +1,6 @@ | ||
#Sun Oct 19 20:17:45 CEST 2014 | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-1.12-bin.zip |
Oops, something went wrong.