检测到NFC卡上的新活动

时间:2014-09-29 08:14:15

标签: java android eclipse android-intent nfc

我正在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);
        }
        }

0 个答案:

没有答案