我正在Eclipse中开发一个应用程序,它应该能够通过NFC完成一项简单的任务:在卡上读写。 我使用MIFARE SDK。
我有一个IntroActivity,在您运行App时启动或检测到卡。我在该简介中放置了一个动画IMG,还有一些介绍音乐。在动画结束时,我想开始一个新活动(=主要活动)。如果手机检测到MIFARE卡,则应启动该活动。
代码如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intro);
ImageView image = (ImageView)findViewById(R.id.anim1);
// NFC related
initializeLibrary();
logoMusic = MediaPlayer.create(IntroActivity.this, R.raw.intro_sound1);
logoMusic.start();
animation = AnimationUtils.loadAnimation(this, R.anim.fadein);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
//startActivity(Main_activity);
Toast.makeText(IntroActivity.this, "Please tap your MIFARE Card", Toast.LENGTH_LONG).show();
}
image.startAnimation(animation);
}
我知道我必须在“ onAnimationEnd ”中添加以下内容,但是我的JAVA知识缺乏,因为我认为有关于对象/类的错误。
public void onNewIntent(Intent intent){
libInstance.filterIntent(intent, new Inxpnfclibcallback(){
@Override
public void onDESFIRECardDetected(DESFire desfire) {
// TODO Auto-generated method stub
ShowMessage("Im here", 'a');
objDesfire = desfire;
Log.i(TAG, "DESFire Card Detected");
try{
objDesfire.connectL4();
Intent menuIntent = new Intent("com.example.nfc_interact.MAINACT");
startActivity(menuIntent);
//setContentView(R.layout.activity_main);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ShowMessage ("Error Occured!", 't');
}
}
});
}
显示文件:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-feature android:name="android.hardware.nfc" android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light" >
<activity
android:name="com.example.nfc_rwapp.IntroActivity"
android:label="Intro Activity" >
<intent-filter>
<action android:name="android.intent.action.INTROACTIVITY" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="Main Activity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
</intent-filter>
</activity>
</application>
希望你们能帮助我。我只是想切换到一个新的活动uppon手机检测到MIFARE卡(在我的情况下是DESFire)。
在Manifest文件中,我没有复制整个代码,只是复制相关的部分。
编辑:我试图用一个公共类包围我的onNewIntent,然后在onAnimetionEnd中调用它 - 但它仍然没有用。 @Override
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
//startActivity(Main_activity);
MyClass myC = new MyClass();
logoMusic.stop();
Toast.makeText(IntroActivity.this, "Please tap your MIFARE Card", Toast.LENGTH_LONG).show();
myC.onNewIntent(getIntent());
if(flag == true){
Intent menuIntent = new Intent("com.example.nfcapp.MAINACT");
startActivity(menuIntent);
}
}