Changeset 5412


Ignore:
Timestamp:
Sep 16, 2011, 2:57:15 PM (9 years ago)
Author:
daniel.romao
Message:

Final version of the applications developed during the internship

Location:
internals/2011/nfc/Trunk/Android
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • internals/2011/nfc/Trunk/Android/AndroidManifest.xml

    r4922 r5412  
    11<?xml version="1.0" encoding="utf-8"?>
    22<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    3       package="com.teste.cmhotspotpkg"
    4       android:versionCode="1"
    5       android:versionName="1.0">
    6     <uses-sdk android:minSdkVersion="10" />
    7     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    8     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    9     <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
    10     <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
     3        package="com.teste.cmhotspotpkg" android:versionCode="1"
     4        android:versionName="1.0">
     5        <uses-sdk android:minSdkVersion="10" />
     6        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     7        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
     8        <uses-permission android:name="android.permission.WAKE_LOCK" />
     9        <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
     10        <uses-permission android:name="android.permission.NFC" />
     11        <uses-permission android:name="android.permission.VIBRATE" />
     12        <uses-permission android:name="android.permission.WAKE_LOCK" />
     13        <uses-permission android:name="android.permission.INTERNET" />
     14        <uses-feature android:name="android.hardware.nfc"
     15                android:required="true" />
    1116
    12     <application android:icon="@drawable/icon" android:label="@string/app_name">
    13         <activity android:name=".CMHotspot"
    14                   android:label="@string/app_name">
    15             <intent-filter>
    16                 <action android:name="android.intent.action.MAIN" />
    17                 <category android:name="android.intent.category.LAUNCHER" />
    18             </intent-filter>
    19         </activity>
    20         <activity android:name=".PayMethod">
    21         </activity>
     17        <application android:icon="@drawable/icon" android:label="@string/app_name"
     18                android:theme="@android:style/Theme.Black.NoTitleBar">
     19                <activity android:name=".CMHotspot" android:label="@string/app_name"
     20                        android:screenOrientation="portrait">
     21                        <intent-filter>
     22                                <action android:name="android.intent.action.MAIN" />
     23                                <category android:name="android.intent.category.LAUNCHER" />
     24                        </intent-filter>
     25                        <intent-filter>
     26                                <action android:name="android.nfc.action.TECH_DISCOVERED" />
     27                        </intent-filter>
     28                        <meta-data android:resource="@xml/nfc_tech_filter"
     29                                android:name="android.nfc.action.TECH_DISCOVERED" />
     30                </activity>
    2231
    23     </application>
     32                <activity android:name=".CreditCard" android:label="@string/app_name"
     33                        android:configChanges="keyboardHidden|orientation">
     34                        <intent-filter>
     35                                <action android:name="android.intent.action.VIEW" />
     36                                <category android:name="android.intent.category.LAUNCHER" />
     37                        </intent-filter>
     38                </activity>
     39
     40                <activity android:name=".PayPalAccount" android:label="@string/app_name"
     41                        android:configChanges="keyboardHidden|orientation">
     42                        <intent-filter>
     43                                <action android:name="android.intent.action.VIEW" />
     44                                <category android:name="android.intent.category.LAUNCHER" />
     45                        </intent-filter>
     46                </activity>
     47
     48                <activity android:name=".CurrentConnection" android:label="@string/app_name">
     49                        <intent-filter>
     50                                <action android:name="android.intent.action.VIEW" />
     51                                <category android:name="android.intent.category.LAUNCHER" />
     52                        </intent-filter>
     53                </activity>
     54
     55                <activity android:name=".SwipesList" android:label="@string/app_name"
     56                        android:configChanges="keyboardHidden|orientation">
     57                        <intent-filter>
     58                                <action android:name="android.intent.action.VIEW" />
     59                                <category android:name="android.intent.category.LAUNCHER" />
     60                        </intent-filter>
     61                </activity>
     62
     63                <activity android:name=".CreditCardEdit" android:label="@string/app_name">
     64                        <intent-filter>
     65                                <action android:name="android.intent.action.VIEW" />
     66                                <category android:name="android.intent.category.LAUNCHER" />
     67                        </intent-filter>
     68                </activity>
     69
     70                <activity android:name=".PaymentOptions" android:label="@string/app_name">
     71                        <intent-filter>
     72                                <action android:name="android.intent.action.VIEW" />
     73                                <category android:name="android.intent.category.LAUNCHER" />
     74                        </intent-filter>
     75                </activity>
     76
     77        </application>
    2478</manifest>
  • internals/2011/nfc/Trunk/Android/gen/com/teste/cmhotspotpkg/R.java

    r4922 r5412  
    99
    1010public final class R {
     11    public static final class array {
     12        public static final int creditcards=0x7f060000;
     13    }
    1114    public static final class attr {
    1215    }
    1316    public static final class drawable {
    1417        public static final int icon=0x7f020000;
    15         public static final int nfc=0x7f020001;
     18        public static final int line=0x7f020001;
     19        public static final int nfc=0x7f020002;
     20        public static final int right_arrow=0x7f020003;
     21        public static final int round_border=0x7f020004;
     22        public static final int round_button=0x7f020005;
    1623    }
    1724    public static final class id {
    18         public static final int TextView1=0x7f050000;
    19         public static final int imageView1=0x7f050001;
     25        public static final int EditCreditCard=0x7f090044;
     26        public static final int SaveCreditCard=0x7f090018;
     27        public static final int SpinnerCreditCard=0x7f090013;
     28        public static final int TableLayout01=0x7f09002a;
     29        public static final int TextView1=0x7f090047;
     30        public static final int TextView11=0x7f09002b;
     31        public static final int TextView12=0x7f090002;
     32        public static final int TextView13=0x7f090004;
     33        public static final int TextView14=0x7f090006;
     34        public static final int TextView15=0x7f090008;
     35        public static final int TextView16=0x7f09000a;
     36        public static final int TextView17=0x7f09000c;
     37        public static final int TextView18=0x7f09000e;
     38        public static final int TextView19=0x7f090010;
     39        public static final int TextView20=0x7f090012;
     40        public static final int TextView21=0x7f090014;
     41        public static final int TextView22=0x7f090016;
     42        public static final int TextView24=0x7f090032;
     43        public static final int TextView26=0x7f090034;
     44        public static final int TextView28=0x7f090036;
     45        public static final int TextView29=0x7f090038;
     46        public static final int TextView31=0x7f09003b;
     47        public static final int TextView32=0x7f09003c;
     48        public static final int TextView41=0x7f090019;
     49        public static final int TextView42=0x7f09001a;
     50        public static final int TextView43=0x7f09001c;
     51        public static final int TextView44=0x7f09001e;
     52        public static final int TextView45=0x7f090020;
     53        public static final int TextView46=0x7f090022;
     54        public static final int TextView47=0x7f090024;
     55        public static final int TextView48=0x7f090026;
     56        public static final int TextView51=0x7f090028;
     57        public static final int TextView61=0x7f090040;
     58        public static final int acct=0x7f090011;
     59        public static final int address=0x7f090007;
     60        public static final int authentication=0x7f09002d;
     61        public static final int authenticationcc=0x7f09001f;
     62        public static final int bssidcc=0x7f09001d;
     63        public static final int ccv2=0x7f090015;
     64        public static final int city=0x7f090009;
     65        public static final int confirm=0x7f090045;
     66        public static final int countrycode=0x7f09000f;
     67        public static final int credit_card_data=0x7f090000;
     68        public static final int date=0x7f090039;
     69        public static final int encryptioncc=0x7f090023;
     70        public static final int expdate=0x7f090017;
     71        public static final int firstname=0x7f090003;
     72        public static final int image1=0x7f090030;
     73        public static final int image2=0x7f09003a;
     74        public static final int imageView1=0x7f090048;
     75        public static final int ipaddress=0x7f09002f;
     76        public static final int ipaddresscc=0x7f090027;
     77        public static final int keymanagement=0x7f09002e;
     78        public static final int keymanagementcc=0x7f090021;
     79        public static final int lastname=0x7f090005;
     80        public static final int lastssid=0x7f090031;
     81        public static final int linkspeedcc=0x7f090025;
     82        public static final int method=0x7f090037;
     83        public static final int nfc=0x7f09003f;
     84        public static final int paymentoption=0x7f09003d;
     85        public static final int price=0x7f090035;
     86        public static final int radio_credit_card=0x7f090043;
     87        public static final int radio_group=0x7f090041;
     88        public static final int radio_paypal=0x7f090042;
     89        public static final int scroller=0x7f090001;
     90        public static final int scroller2=0x7f090029;
     91        public static final int ssid=0x7f09002c;
     92        public static final int ssidcc=0x7f09001b;
     93        public static final int startpayment=0x7f09003e;
     94        public static final int state=0x7f09000d;
     95        public static final int tagid=0x7f090033;
     96        public static final int webView1=0x7f090046;
     97        public static final int zip=0x7f09000b;
    2098    }
    2199    public static final class layout {
    22         public static final int paymethod=0x7f030000;
    23         public static final int scannfc=0x7f030001;
     100        public static final int clean=0x7f030000;
     101        public static final int credit_card_form=0x7f030001;
     102        public static final int current_connection=0x7f030002;
     103        public static final int lastswipe=0x7f030003;
     104        public static final int main=0x7f030004;
     105        public static final int paymentoptions=0x7f030005;
     106        public static final int paypal_account=0x7f030006;
     107        public static final int scannfc=0x7f030007;
     108        public static final int wait=0x7f030008;
     109    }
     110    public static final class raw {
     111        public static final int beep7=0x7f050000;
    24112    }
    25113    public static final class string {
    26         public static final int app_name=0x7f040001;
    27         public static final int hello=0x7f040000;
    28         public static final int scannfctag=0x7f040002;
     114        public static final int app_name=0x7f070000;
     115        public static final int card1=0x7f070002;
     116        public static final int card2=0x7f070003;
     117        public static final int card3=0x7f070004;
     118        public static final int card4=0x7f070005;
     119        public static final int card5=0x7f070006;
     120        public static final int card6=0x7f070007;
     121        public static final int selectcreditcard=0x7f070001;
     122    }
     123    public static final class style {
     124        public static final int ButtonText1=0x7f080000;
     125        public static final int ButtonText2=0x7f080001;
     126        public static final int ButtonText3=0x7f080002;
     127        public static final int ButtonText4=0x7f080003;
     128        public static final int ButtonText5=0x7f080004;
     129    }
     130    public static final class xml {
     131        public static final int nfc_tech_filter=0x7f040000;
    29132    }
    30133}
  • internals/2011/nfc/Trunk/Android/res/layout/scannfc.xml

    r4922 r5412  
    88        android:id="@+id/TextView1"
    99        android:layout_height="wrap_content"
    10         android:text="@string/scannfctag"
    11         android:layout_gravity="center_horizontal" android:autoText="true" android:layout_width="wrap_content" android:gravity="center_vertical|clip_horizontal"/>
     10        android:layout_gravity="center_horizontal"
     11        android:autoText="true"
     12        android:layout_width="wrap_content"
     13        android:gravity="center_vertical|clip_horizontal"/>
    1214    <ImageView
    1315        android:id="@+id/imageView1"
  • internals/2011/nfc/Trunk/Android/res/values/strings.xml

    r4922 r5412  
    11<?xml version="1.0" encoding="utf-8"?>
    22<resources>
    3     <string name="hello">Hello World, CMHotspot!</string>
    4     <string name="app_name">CMHotspot</string>
    5     <string name="scannfctag">Touch or Swipe the NFC Tag</string>
     3        <string name="app_name">CMHotspot</string>
     4        <string name="selectcreditcard">Select your credit card type:</string>
     5        <string name="card1">Visa</string>
     6        <string name="card2">Mastercard</string>
     7        <string name="card3">Discover</string>
     8        <string name="card4">Amex</string>
     9        <string name="card5">Maestro</string>
     10        <string name="card6">Solo</string>
     11
     12        <style name="ButtonText1">
     13                <item name="android:layout_width">fill_parent</item>
     14                <item name="android:layout_height">wrap_content</item>
     15                <item name="android:textColor">#000000</item>
     16                <item name="android:gravity">left</item>
     17                <item name="android:layout_margin">1dp</item>
     18                <item name="android:textSize">15dp</item>
     19                <item name="android:shadowColor">#808080</item>
     20                <item name="android:shadowDx">1</item>
     21                <item name="android:shadowDy">1</item>
     22                <item name="android:shadowRadius">2</item>
     23        </style>
     24
     25        <style name="ButtonText2">
     26                <item name="android:layout_width">fill_parent</item>
     27                <item name="android:layout_height">wrap_content</item>
     28                <item name="android:textColor">#000000</item>
     29                <item name="android:gravity">left</item>
     30                <item name="android:layout_margin">1dp</item>
     31                <item name="android:textSize">12dp</item>
     32        </style>
     33
     34        <style name="ButtonText3">
     35                <item name="android:layout_width">fill_parent</item>
     36                <item name="android:layout_height">wrap_content</item>
     37                <item name="android:textColor">#000000</item>
     38                <item name="android:layout_margin">1dp</item>
     39                <item name="android:textSize">12dp</item>
     40        </style>
     41
     42        <style name="ButtonText4">
     43                <item name="android:layout_width">fill_parent</item>
     44                <item name="android:layout_height">fill_parent</item>
     45                <item name="android:textColor">#ffffff</item>
     46                <item name="android:gravity">center_vertical|center_horizontal</item>
     47                <item name="android:layout_gravity">center_horizontal|center_vertical</item>
     48                <item name="android:layout_margin">1dp</item>
     49                <item name="android:textSize">20dp</item>
     50                <item name="android:shadowColor">#808080</item>
     51                <item name="android:shadowDx">1</item>
     52                <item name="android:shadowDy">1</item>
     53                <item name="android:shadowRadius">2</item>
     54        </style>
     55
     56        <style name="ButtonText5">
     57                <item name="android:layout_width">fill_parent</item>
     58                <item name="android:layout_height">wrap_content</item>
     59                <item name="android:textColor">#000000</item>
     60                <item name="android:gravity">left</item>
     61                <item name="android:layout_margin">1dp</item>
     62                <item name="android:textSize">15dp</item>
     63        </style>
     64
    665</resources>
  • internals/2011/nfc/Trunk/Android/src/com/teste/cmhotspotpkg/CMHotspot.java

    r4922 r5412  
    22
    33import android.app.Activity;
     4import android.app.AlertDialog;
     5import android.app.PendingIntent;
     6import android.app.ProgressDialog;
     7import android.content.Context;
     8import android.content.DialogInterface;
    49import android.content.Intent;
     10import android.content.IntentFilter;
     11import android.content.IntentFilter.MalformedMimeTypeException;
     12import android.media.MediaPlayer;
     13import android.nfc.NfcAdapter;
    514import android.os.Bundle;
     15import android.os.Handler;
     16import android.os.Message;
     17import android.os.Vibrator;
     18import android.util.Log;
     19import android.view.View;
     20import android.widget.Button;
    621import android.widget.TextView;
    722
    8 public class CMHotspot extends Activity {
    9     /** Called when the activity is first created. */
    10     @Override
    11     public void onCreate(Bundle savedInstanceState) {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.scannfc);
    14        
    15         nfc nfcTag = new nfc(this);
    16        
    17        //long timeout = System.currentTimeMillis() + 2000;
    18            //while(System.currentTimeMillis() < timeout);
    19  
    20         String wirelessConfig[]=nfcTag.getTag();       
    21         wireless_config wc= new wireless_config(wirelessConfig[0], wirelessConfig[1], wirelessConfig[2], this);
    22         wc.connect();
    23        
    24         //TextView tv1 = (TextView)this.findViewById(R.id.TextView1);
    25         //tv1.setText("Configuring the Network..");
    26        
    27         //Intent intent = new Intent(this, PayMethod.class);
    28         //startActivity(intent);
    29     }
    30    
    31    
     23public class CMHotspot extends Activity implements Runnable{
     24
     25        nfc NFC;
     26        PendingIntent pendingIntent;
     27        IntentFilter[] intentFiltersArray;
     28        TextView tvtemp;
     29        wireless_config wc;
     30        String[][] techLists;
     31        String[] NFCTag=null;
     32        Database database;
     33        public static final int paymentOption=0;
     34        public static final int PayPal=1;
     35        public static final int CreditCard=2;
     36        ProgressDialog wificon;
     37        Button b;
     38        boolean scanned=false;
     39        String ssid_dq=null;
     40        int wifiState=1;
     41
     42        @Override
     43        public void onCreate(Bundle savedInstanceState) {
     44                super.onCreate(savedInstanceState);
     45                setContentView(R.layout.main);
     46                NFC = new nfc(this);
     47                wc = new wireless_config(this);
     48
     49                if(savedInstanceState==null)
     50                        database = new Database(this);
     51
     52                b = (Button)findViewById(R.id.startpayment);
     53
     54                if(wc.isConnected())
     55                        fillCurrentConnection();
     56                else{
     57                        tvtemp=(TextView)findViewById(R.id.ssid);
     58                        tvtemp.setText("Disconnected");
     59                }
     60                fillLastSwipe();
     61                fillLastPayment();
     62
     63                if (NFC.isEnabled());
     64                pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
     65
     66                NFC.getAdapter();
     67
     68                Intent intent = getIntent();   
     69                NFCTag=NFC.getTag(intent);
     70                if(NFCTag!=null){               
     71                        nfcDiscoveredActions();
     72                        Network(NFCTag);
     73                }
     74
     75                IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
     76                try {
     77                        ndef.addDataType("text/plain");
     78                }
     79                catch (MalformedMimeTypeException e) {
     80                        throw new RuntimeException("fail", e);
     81                }
     82                intentFiltersArray = new IntentFilter[] {
     83                                ndef,
     84                };
     85
     86                if(savedInstanceState!=null){
     87                        if(savedInstanceState.getStringArray("NFCTag")!=null){
     88                                NFCTag=savedInstanceState.getStringArray("NFCTag");
     89                                Network(NFCTag);
     90                        }
     91                }
     92        }
     93
     94        public void currentclick(View v){
     95
     96                if(wc.isConnected()){
     97                        Intent myIntent = new Intent(this, CurrentConnection.class);
     98                        Bundle b = new Bundle();
     99
     100                        tvtemp=(TextView)findViewById(R.id.ssid);
     101                        b.putString("ssid", tvtemp.getText().toString());               
     102                        tvtemp=(TextView)findViewById(R.id.authentication);
     103                        b.putString("authentication", tvtemp.getText().toString());             
     104                        tvtemp=(TextView)findViewById(R.id.keymanagement);
     105                        b.putString("keymanagement", tvtemp.getText().toString());             
     106                        tvtemp=(TextView)findViewById(R.id.ipaddress);
     107                        b.putString("ipaddress", tvtemp.getText().toString());         
     108                        b.putString("encryption", wc.getCurrentEncryption());
     109                        b.putString("linkspeed", wc.getCurrentSpeed());
     110                        b.putString("bssid", wc.getCurrentBSSID());
     111
     112                        myIntent.putExtras(b);
     113                        this.startActivity(myIntent);
     114                }
     115        }
     116
     117        public void lastswipeclick(View v){
     118                Intent myIntent = new Intent(this, SwipesList.class);
     119                this.startActivity(myIntent);
     120        }
     121
     122        public void paymentoptionsclick(View v){
     123                Intent myIntent = new Intent(this, PaymentOptions.class);
     124                this.startActivityForResult(myIntent, paymentOption);
     125        }
     126
     127        public void paymentoptions(){
     128                Intent myIntent = new Intent(this, PaymentOptions.class);
     129                this.startActivityForResult(myIntent, paymentOption);
     130        }
     131
     132        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     133                if (requestCode == paymentOption) {
     134                        if (resultCode == RESULT_OK) {
     135                                if (NFCTag!=null)
     136                                        b.setVisibility(View.VISIBLE);
     137                                fillLastPayment();
     138                        }
     139                }
     140                else{
     141                        try{
     142                                database.close();
     143                        }catch (Exception e){
     144                                Log.i("CMHotspot", "database closed");
     145                        }
     146                        database = new Database(this);
     147                        fillCurrentConnection();
     148                        fillLastSwipe();
     149
     150                        if (resultCode == RESULT_OK){
     151                                b.setVisibility(View.GONE);
     152                                NFCTag=null;
     153                        }
     154                        else
     155                                b.setVisibility(View.VISIBLE);
     156                }
     157        }
     158
     159        public void fillCurrentConnection() {
     160                tvtemp=(TextView)findViewById(R.id.ssid);
     161                tvtemp.setText(wc.getCurrentSSID());
     162                tvtemp=(TextView)findViewById(R.id.authentication);
     163                tvtemp.setText(wc.getCurrentAuthentication());
     164                tvtemp=(TextView)findViewById(R.id.keymanagement);
     165                tvtemp.setText(wc.getCurrentKeyManagement());
     166                tvtemp=(TextView)findViewById(R.id.ipaddress);
     167                tvtemp.setText(wc.getCurrentIP());
     168        }
     169
     170        public void fillLastSwipe(){
     171                String[] last = database.getLastSwipe();
     172                if (last[0]!=null){
     173                        tvtemp=(TextView)findViewById(R.id.lastssid);
     174                        tvtemp.setText(last[0]);
     175                        tvtemp=(TextView)findViewById(R.id.tagid);
     176                        tvtemp.setText(last[1]);
     177                        tvtemp=(TextView)findViewById(R.id.price);
     178                        tvtemp.setText(last[2]+"€");
     179                        tvtemp=(TextView)findViewById(R.id.method);
     180                        tvtemp.setText(last[3]);
     181                        tvtemp=(TextView)findViewById(R.id.date);
     182                        tvtemp.setText(last[4]);
     183                }
     184        }
     185
     186        public void fillLastPayment(){
     187                tvtemp=(TextView)findViewById(R.id.paymentoption);
     188                if(database.getPaymentOption()==null)
     189                        database.setPaymentOption("PayPal Account");
     190                tvtemp.setText(database.getPaymentOption());
     191        }
     192
     193
     194        public void onPause() {
     195                super.onPause();
     196                NFC.getAdapter().disableForegroundDispatch(this);
     197        }   
     198
     199        public void onResume() {
     200                super.onResume();
     201                NFC.getAdapter().enableForegroundDispatch(this, pendingIntent, intentFiltersArray, null);
     202        }
     203
     204        public void onDestroy() {
     205                super.onDestroy();
     206                System.runFinalizersOnExit(true);
     207        }
     208
     209        public void onNewIntent(Intent intent) {
     210                NFCTag = NFC.getTag(intent);   
     211                nfcDiscoveredActions();
     212                Network(NFCTag);
     213        }
     214
     215        public void nfcDiscoveredActions(){
     216                Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
     217                v.vibrate(300);    //msecs     
     218                MediaPlayer mMediaPlayer = MediaPlayer.create(this, R.raw.beep7);
     219                mMediaPlayer.start();
     220        }
     221
     222        public void Network(String[] wirelessConfig){
     223                String ssid = wirelessConfig[0].substring(1, wirelessConfig[0].length()-1);
     224                ssid_dq=wirelessConfig[0];
     225                wc.setConfig(wirelessConfig[0], wirelessConfig[1], wirelessConfig[2]);         
     226                if (wc.isConnected()){
     227                        if(wc.isConnectedToHotspot(ssid))
     228                                message(1, ssid_dq);                    //esta ligado a rede do hotspot                 
     229                        else
     230                                message(2, ssid_dq);                    //ligado a outra rede ou nenhuma                                       
     231                }
     232                else {
     233                        message(3, ssid_dq);                //wifi desligado
     234                }
     235        }
     236
     237        public void message(final int state, final String ssid_dq){
     238                if(scanned==false){
     239                        scanned=true;
     240                        AlertDialog otherNetwork = new AlertDialog.Builder(this).create();
     241                        otherNetwork.setTitle("Network Configuration");
     242                        String message="HotSpot Network:\n\nPrice = "+NFCTag[6]+"€/Hour\nPayment method: "+database.getPaymentOption();                       
     243
     244                        int remainTime=database.getRemainTime();
     245                        if (remainTime>0){
     246                                int minutes=remainTime/60;
     247                                int seconds=remainTime-minutes*60;
     248                                message+="\nYou still have "+minutes+" minutes and "+seconds+" seconds";
     249                        }
     250                        if(state==2)
     251                                message+="\n\nWARNING!\nYou will connect to other network.";
     252                        otherNetwork.setMessage(message);
     253                        otherNetwork.setButton("Yes", new DialogInterface.OnClickListener() {
     254                                @Override
     255                                public void onClick(DialogInterface dialog, int which) {
     256                                        if(state==2){
     257                                                int id;
     258                                                if(wc.disconnect()){
     259                                                        if((id=wc.getConfId(ssid_dq))!=-1)
     260                                                                wc.removeConfig(id);
     261                                                }
     262                                        }
     263                                        if(state>1){
     264                                                wc.confNetwork();
     265                                                showProgressDialog();
     266                                        }
     267                                        if(state==1){
     268                                                startPayment();
     269                                        }
     270                                }
     271                        });
     272                        otherNetwork.setButton2("Payment", new DialogInterface.OnClickListener() {
     273                                @Override
     274                                public void onClick(DialogInterface dialog, int which) {
     275                                        b.setVisibility(View.VISIBLE);
     276                                        wifiState=state;
     277                                        paymentoptions();
     278                                }
     279                        });     
     280                        otherNetwork.setButton3("No", new DialogInterface.OnClickListener() {
     281                                @Override
     282                                public void onClick(DialogInterface dialog, int which) {
     283                                        b.setVisibility(View.VISIBLE);
     284                                        wifiState=state;
     285                                }
     286                        });     
     287
     288                        otherNetwork.show();
     289                }
     290        }
     291
     292        public void run(){
     293                wc.enableWifi();
     294                if(wc.connect()){       
     295                        while(wc.getCurrentIP().equals("0.0.0.0"));                     
     296                        handler.sendEmptyMessage(0);
     297                }
     298                else
     299                        cantConnect().show();
     300        }
     301
     302        private Handler handler = new Handler() {
     303                @Override
     304                public void handleMessage(Message msg) {
     305                        wificon.dismiss();
     306                        wifiState=1;
     307                        startPayment();
     308                }
     309        };
     310        public void startPayment(){     
     311
     312                if(database.getPaymentOption().equals("PayPal Account")){
     313                        startPayPalActivity();
     314                }
     315                if(database.getPaymentOption().equals("Credit Card")){
     316                        startCreditCardActivity();
     317                }
     318        }
     319
     320        public void startPaymentClick(View v){
     321                if(wifiState==2){
     322                        int id;
     323                        if(wc.disconnect()){
     324                                if((id=wc.getConfId(ssid_dq))!=-1)
     325                                        wc.removeConfig(id);
     326                        }
     327                }
     328
     329                if(wifiState>1){
     330                        wc.confNetwork();
     331                        showProgressDialog();
     332                }
     333
     334                if(wifiState==1)
     335                        startPayment();
     336        }
     337
     338        public void showProgressDialog(){
     339                wificon = new ProgressDialog(this);
     340                wificon.setIndeterminate(true);
     341                wificon.setMessage("Connecting... Please Wait.");
     342                wificon.show();
     343                Thread waitWifi = new Thread(this);
     344                waitWifi.start();
     345        }
     346
     347        public void startPayPalActivity(){
     348                saveSwipeData("PayPal");
     349                Intent myIntent = new Intent(this, PayPalAccount.class);
     350                Bundle b = new Bundle();
     351                b.putString("Server_IP", NFCTag[4]);
     352                b.putString("Server_Port", NFCTag[5]);
     353                b.putString("amount", NFCTag[6]);
     354                myIntent.putExtras(b);
     355                this.startActivityForResult(myIntent, PayPal);
     356        }
     357
     358
     359        public void startCreditCardActivity(){
     360                saveSwipeData("Credit Card");
     361                Intent myIntent = new Intent(this, CreditCard.class);
     362                Bundle b = new Bundle();
     363                b.putString("Server_IP", NFCTag[4]);
     364                b.putString("Server_Port", NFCTag[5]);
     365                b.putString("amount", NFCTag[6]);
     366                myIntent.putExtras(b);
     367                this.startActivityForResult(myIntent, CreditCard);
     368        }
     369
     370        private void saveSwipeData(String method) {
     371                database.insertSwipe(NFCTag[0], NFCTag[3], NFCTag[6], method); 
     372        }
     373
     374        public AlertDialog cantConnect(){
     375                AlertDialog failed = new AlertDialog.Builder(this).create();
     376                failed.setTitle("Network Configuration");
     377                failed.setMessage("Connecting to Hotspot network failed!\nTry again later.");
     378                failed.setButton("OK", new DialogInterface.OnClickListener() {
     379                        public void onClick(DialogInterface dialog, int which) {
     380                                finish();
     381                        }});
     382                return failed;
     383        }
     384
     385        @Override
     386        public void onSaveInstanceState(Bundle savedInstanceState) {
     387                super.onSaveInstanceState(savedInstanceState);
     388                savedInstanceState.putStringArray("NFCTag", NFCTag);
     389        }
     390
    32391}
  • internals/2011/nfc/Trunk/Android/src/com/teste/cmhotspotpkg/nfc.java

    r4922 r5412  
    11package com.teste.cmhotspotpkg;
    22
     3import java.io.UnsupportedEncodingException;
     4import android.content.Intent;
     5import android.content.IntentFilter;
    36import android.content.Context;
     7import android.content.IntentFilter.MalformedMimeTypeException;
     8import android.nfc.NdefMessage;
     9import android.nfc.NdefRecord;
     10import android.nfc.NfcAdapter;
     11import android.os.Parcelable;
     12import android.util.Log;
    413
    514public class nfc {
    615
    7         private String NFCTag="cmsw|00:26:18:0F:A3:83|b1b2b3b4b5b6b7|ac54e5c1|10.10.96.249|25010"; //SSID|BSSID|PASS|TOCKEN|IP|PORT
    8         Context ctx;
     16        private NfcAdapter adapter;
     17        private IntentFilter[] filters;
    918       
    10         public nfc(Context ctx){
    11                 this.ctx=ctx;
     19        public nfc(Context ctx){;
     20                adapter = NfcAdapter.getDefaultAdapter(ctx);
     21                //genIntentFilter();
    1222        }
    1323       
    14         public String[] getTag(){
    15                
    16                 return splitConfig(NFCTag);
     24        public void genIntentFilter(){
     25                IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
     26                try {
     27                        ndef.addDataType("text/plain");
     28                }
     29                catch (MalformedMimeTypeException e) {
     30                        throw new RuntimeException("fail", e);
     31                }
     32                filters = new IntentFilter[] {
     33                                ndef,
     34                };     
     35        }
     36       
     37        public boolean isEnabled(){
     38                if(adapter.isEnabled())
     39                        return true;
     40                return false;
     41        }
     42       
     43        public NfcAdapter getAdapter(){
     44                return adapter;
     45        }
     46       
     47        public IntentFilter[] getIntentFilter(){
     48                return filters;
     49        }
     50       
     51        //É necessário fazer verificações para caso seja lido uma tag inválida
     52        public String[] getTag(Intent intent){
     53                Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);         
     54                if(rawMsgs!=null){
     55                        NdefMessage msg = (NdefMessage) rawMsgs[0];
     56                        NdefRecord[] records = msg.getRecords();
     57                        Log.i("CMHotspot", "tag");
     58                        return splitConfig(toText(records[0]));
     59                        }
     60                return null;
     61        }
     62
     63        public String toText(NdefRecord record){
     64                String result = null;
     65                if (record.getTnf() == NdefRecord.TNF_WELL_KNOWN) { //record.getType() == NdefRecord.RTD_TEXT
     66                        byte[] payload = record.getPayload();
     67
     68                        String textEncoding = ((payload[0] & 0200) == 0) ? "UTF-8" : "UTF-16";
     69                        int languageCodeLength = payload[0] & 0077;
     70
     71                        try {
     72                                result = new String(payload, languageCodeLength + 1, payload.length - languageCodeLength - 1, textEncoding);
     73                        } catch (UnsupportedEncodingException e) {
     74                                Log.i("CMHotspot", "UnsupportedEncodingException");
     75                        }
     76                }
     77                return result;
    1778        }
    1879       
  • internals/2011/nfc/Trunk/Android/src/com/teste/cmhotspotpkg/wireless_config.java

    r4922 r5412  
    11package com.teste.cmhotspotpkg;
    22
     3import java.util.List;
    34import android.content.Context;
     5import android.net.wifi.SupplicantState;
    46import android.net.wifi.WifiConfiguration;
    57import android.net.wifi.WifiManager;
     8import android.net.wifi.WifiConfiguration.AuthAlgorithm;
     9import android.net.wifi.WifiConfiguration.KeyMgmt;
     10import android.net.wifi.WifiConfiguration.PairwiseCipher;
    611import android.util.Log;
    712
    813public class wireless_config {
    914
    10         Context ctx;
    11         WifiManager wifi;
    12         WifiConfiguration wifiConf;
    13     private static final int timeout_msec = 6000;
    14        
    15         public wireless_config(String ssid, String bssid, String pass, Context ctx){
    16                 this.ctx=ctx;
    17                
     15        private WifiManager wifi;
     16        private WifiConfiguration wifiConf;
     17        private static final int timeout_msec = 12000, timeout_msec2 = 15000;
     18        private String ssid, pass, bssid;
     19
     20        public wireless_config(Context ctx){
     21                wifi=(WifiManager)ctx.getSystemService(Context.WIFI_SERVICE);
     22        }
     23
     24        public void setConfig(String ssid, String bssid, String pass){
     25                this.ssid=ssid;
     26                this.pass=pass;
     27                this.bssid=bssid;
     28        }
     29
     30        public boolean isConnectedToHotspot(String ssid){
     31                if(wifi.getConnectionInfo().getSSID().equals(ssid))
     32                        return true;
     33                return false;
     34        }
     35
     36        public int getConfId(String ssid){
     37                WifiConfiguration wifiConfig;
     38                List<WifiConfiguration> wifiConfigs = wifi.getConfiguredNetworks();
     39
     40                for(int x=0; x<wifiConfigs.size(); x++){
     41                        wifiConfig = wifiConfigs.get(x);
     42                        if (wifiConfig.SSID.equals(ssid)){
     43                                return x;
     44                        }
     45                }
     46                return -1;
     47        }
     48
     49        public WifiConfiguration getWifiConfig(String ssid){
     50                WifiConfiguration wifiConfig;
     51                List<WifiConfiguration> wifiConfigs = wifi.getConfiguredNetworks();
     52                String ssidt;
     53
     54                for(int x=0; x<wifiConfigs.size(); x++){
     55                        wifiConfig = wifiConfigs.get(x);
     56                        ssidt=wifiConfig.SSID.substring(1, wifiConfig.SSID.length()-1);
     57                        if (ssid.equals(ssidt)){
     58                                return wifiConfig;
     59                        }
     60                }
     61                return null;
     62        }
     63
     64        public void removeConfig(int id) {
     65                if(wifi.removeNetwork(id));
     66        }
     67
     68        public boolean enableWifi(){
     69                if(!wifi.isWifiEnabled()){
     70                        wifi.setWifiEnabled(true);                     
     71                        //É necessário esperar que a interface fique activa
     72                        long timeout = System.currentTimeMillis() + timeout_msec;
     73                        while(System.currentTimeMillis() < timeout && !wifi.isWifiEnabled());
     74                        if(System.currentTimeMillis() < timeout)
     75                                return true;
     76                }
     77                return false;
     78        }
     79
     80        public void confNetwork(){
    1881                wifiConf = new WifiConfiguration();
    1982                wifiConf.SSID=ssid;
     
    2588                wifiConf.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
    2689        }
    27        
     90
    2891        public boolean connect(){
    29                
    30                 wifi=(WifiManager)ctx.getSystemService(Context.WIFI_SERVICE);
    31                
    32                 if(!wifi.isWifiEnabled()){
    33                         wifi.setWifiEnabled(true);                     
    34                         //É necessário esperar que a interface fique activa
    35                         long timeout = System.currentTimeMillis() + timeout_msec;
    36                         while(System.currentTimeMillis() < timeout && !wifi.isWifiEnabled()); //depois mudar isto               
     92
     93                int res = wifi.addNetwork(wifiConf);
     94                boolean b = wifi.enableNetwork(res, true);
     95
     96                if(res!=-1 && b){
     97                        long timeout = System.currentTimeMillis() + timeout_msec2;
     98                        while (System.currentTimeMillis() < timeout && !isConnected());
     99                        if (System.currentTimeMillis() < timeout)
     100                                return true;
    37101                }
    38                
    39                 int res = wifi.addNetwork(wifiConf);
    40                 Log.d("CMHotspot", "add Network returned " + res );
    41                
    42                 boolean b = wifi.enableNetwork(res, true);
    43                 Log.d("CMHotspot", "enableNetwork returned " + b);
    44 
    45                 if(res!=-1 && b)
    46                         return true;
    47102                return false;
    48103        }
     104
     105        public boolean disconnect(){
     106                return wifi.disconnect();
     107        }
     108
     109        public boolean isConnected(){
     110
     111                if(wifi.getConnectionInfo().getSupplicantState()==SupplicantState.COMPLETED){
     112                        return true;
     113                }
     114                return false;
     115        }
     116
     117        public String getCurrentSSID(){
     118                return wifi.getConnectionInfo().getSSID();
     119        }
     120
     121        public String getCurrentBSSID(){
     122                return wifi.getConnectionInfo().getBSSID();
     123        }
     124
     125        public String getCurrentIP(){
     126                int ip=wifi.getConnectionInfo().getIpAddress();
     127                return (ip & 0xff)+"."+(ip >> 8 & 0xff)+"."+(ip >> 16 & 0xff)+"."+(ip >> 24 & 0xff);
     128        }
     129
     130        public String getCurrentSpeed(){
     131                return wifi.getConnectionInfo().getLinkSpeed()+" "+wifi.getConnectionInfo().LINK_SPEED_UNITS;
     132        }
     133
     134        public String getCurrentAuthentication(){
     135                WifiConfiguration wifiConfig=getWifiConfig(getCurrentSSID());
     136                String authe="";
     137                if (wifiConfig!=null){                 
     138                        if(wifiConfig.allowedAuthAlgorithms.get(AuthAlgorithm.OPEN))
     139                                authe+="OPEN ";
     140                       
     141                        if(wifiConfig.allowedAuthAlgorithms.get(AuthAlgorithm.SHARED))
     142                                authe+="SHARED ";
     143                       
     144                        if(wifiConfig.allowedAuthAlgorithms.get(AuthAlgorithm.LEAP))
     145                                authe+="LEAP ";
     146                       
     147                        return authe;
     148                }
     149                return null;
     150        }
     151
     152        public String getCurrentKeyManagement(){
     153                WifiConfiguration wifiConfig=getWifiConfig(getCurrentSSID());
     154                String keys="";
     155                if (wifiConfig!=null){                 
     156                        if(wifiConfig.allowedKeyManagement.get(KeyMgmt.NONE))
     157                                keys+="NONE ";
     158                       
     159                        if(wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_EAP))
     160                                keys+="WPA_EAP ";
     161                       
     162                        if(wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK))
     163                                keys+="WPA_PSK ";
     164                       
     165                        if(wifiConfig.allowedKeyManagement.get(KeyMgmt.IEEE8021X))
     166                                keys+="IEEE8021X";
     167                       
     168                        return keys;
     169                }
     170                return null;
     171        }
     172
     173
     174        public String getCurrentEncryption() {
     175                WifiConfiguration wifiConfig=getWifiConfig(getCurrentSSID());
     176                String enc="";
     177                if (wifiConfig!=null){                 
     178                       
     179                        if(wifiConfig.allowedGroupCiphers.get(PairwiseCipher.NONE))
     180                                enc+="NONE ";
     181                       
     182                        if(wifiConfig.allowedGroupCiphers.get(PairwiseCipher.TKIP))
     183                                enc+="TKIP ";
     184                       
     185                        if(wifiConfig.allowedGroupCiphers.get(PairwiseCipher.CCMP))
     186                                enc+="AES";
     187                       
     188                        return enc;
     189                }
     190                return null;
     191        }
    49192}
Note: See TracChangeset for help on using the changeset viewer.