2013-07-19 24 views
-1

如何將我的wifi掃描結果發送到我創建的使用JSON填充SSID,BSSID和RSSI值的SQL/MySQL數據庫?到目前爲止,我已經能夠將這些結果輸出到列表中(參見下面的代碼)。使用JSON將Android wifi掃描結果發佈到SQL/MySQL數據庫

package com.example.wifiscanner8; 

import java.util.List; 


import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.net.wifi.ScanResult; 
import android.net.wifi.WifiManager; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    TextView textStatus; 
    TextView textState; 
    WifiManager mainWifi; 
    WifiReceiver receiverWifi; 
    List<ScanResult> wifiList; 
    //StringBuilder sb = new StringBuilder(); 


    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    //enable wifi on application start 

      WifiManager wifiManager = (WifiManager) getBaseContext() 
        .getSystemService(Context.WIFI_SERVICE); 
      wifiManager.setWifiEnabled(true); 

     textStatus = (TextView) findViewById(R.id.textStatus); 
     mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     receiverWifi = new WifiReceiver(); 
     registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
     mainWifi.startScan(); 
     //mainText.setText("Starting Scan..."); 
    } 


    public boolean onCreateOptionsMenu(Menu menu) { 
     menu.add(0, 0, 0, "Refresh"); 
     return super.onCreateOptionsMenu(menu); 
    } 

    public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     mainWifi.startScan(); 
     //mainText.setText("Starting Scan"); 
     return super.onMenuItemSelected(featureId, item); 
    } 

    // Upon pressing back button to exit app, wireless function set to disable 
    public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     WifiManager wifiManager = (WifiManager) getBaseContext() 
        .getSystemService(Context.WIFI_SERVICE); 
      wifiManager.setWifiEnabled(false); 
    this.finish(); 
    } 

    return super.onKeyDown(keyCode, event); 
    } 

    protected void onPause() { 
     unregisterReceiver(receiverWifi); 
     super.onPause(); 
    } 

    protected void onResume() { 
     registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
     super.onResume(); 
    } 

    class WifiReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equalsIgnoreCase(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) { 
       handleScanResultsAvailable(); 
      } 
     } 

     private void handleScanResultsAvailable() { 
      List<ScanResult> results = mainWifi.getScanResults(); 
      int size = results.size(); 
      //StringBuilder sb = new StringBuilder(); 

      for (int i=0; i<size; i++){ 
       ScanResult scanresult = mainWifi.getScanResults().get(i); 
       String bssid = scanresult.BSSID; 
       String ssid = scanresult.SSID; 
       int rssi = scanresult.level; 
       String rssiString = String.valueOf(rssi); 
       textStatus.append(bssid + "," + ssid + "," + rssiString); 
       textStatus.append("\n"); 
      } 


       // getting JSON Object 
       // Note that create product url accepts POST method 
       //JSONObject json = jsonParser.makeHttpRequest(url_wifi_scan_result, 
         // "POST", reading); 

       // check log cat from response 
       // Log.d("Create Response", json.toString()); 




      } 

     } 
    } 
+0

您是通過Android應用程序與數據庫通信嗎?或者你有某種服務器? –

回答

0

你的問題有點不清楚,因爲它沒有指定數據庫駐留的位置,就像Stu Whyte指出的那樣。 如果你在設備上使用本地sqlite數據庫,那麼你需要一個SQLHelper,閱讀here

如果您的數據庫駐留在服務器上,則需要使用某些中間件格式(如JSON或XML)將結果序列化並將數據傳輸到將管理數據庫連接的Web服務器。您可以使用本地包含的org.apache.http庫,這會允許您將數據發佈/放入Web服務(如正常的Web表單)。 文檔here

+0

對不起,數據庫將駐留在服務器上。我使用http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/作爲將wifi掃描結果發佈到數據表中的參考。最終,我想存儲數據並將其與現有數據交叉引用,以使我能夠跟蹤位置。 – user2583686