2016-03-08 82 views
1

我的應用使用WifiInfo類來獲取連接網絡的Wifi SSID。需要邏輯來存儲數據到原語中,並將它們與SQLite關聯起來

如果用戶想要,它將存儲在名爲WifiList的ArrayList的某個位置上。

使用自定義名稱,在另一個ArrayList中的相同位置調用savedName。

現在,無論何時打開應用程序,它都會檢查Wifi SSID是否存在於數組列表中,並顯示來自同一位置的特定自定義名稱。

這兩個列表均通過TinyDB存儲在共享首選項中。 這就是我一直在Android中存儲數據的方式。使用sqlite數據庫似乎不適合用於這種簡單的應用程序。

所以,我現在需要的是,一種邏輯或方法,以一個自定義名稱保存多個WiFi SSID。就像當我連接到WiFi A或WiFi B時,它必須顯示'狗',WiFi C顯示'貓',E,F,G顯示'鼠標'。

如何存儲這些數據集以及我在哪裏存儲?

package combined.locky; 

import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.net.wifi.WifiInfo; 
import android.net.wifi.WifiManager; 
import android.os.IBinder; 
import android.widget.Toast; 

import java.util.ArrayList; 

public class LockyService extends Service 
{ 
    //ANDROID VARIABLES 
    public Context context; 
    public static TinyDB tinyDB; 
    public static WifiManager wifiManager; 
    public static WifiInfo wifiInfo; 

    //PROGRAM VARIABLES 

    public static ArrayList<String> savedWifiList = new ArrayList<>(100); 
    public static ArrayList<String> savedContextList = new ArrayList<>(100); 

    @Override 
    public void onCreate() 
    { 
     //CRITICAL INITIALISATION 
     super.onCreate(); 
     context = getApplicationContext(); 
     tinyDB = new TinyDB(context); 

     IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); 
     filter.addAction(Intent.ACTION_BOOT_COMPLETED); 
     filter.addAction(Intent.ACTION_SCREEN_ON); 
     LockyReceiver receiver = new LockyReceiver(); 
     registerReceiver(receiver, filter); 

     //ANDROID INITIALISATION 
     wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
     wifiInfo = wifiManager.getConnectionInfo(); 

     //FINALLY AFTER CREATING SERVICE 
     Toast.makeText(context, "Locky Service Created", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onLowMemory() 
    { 
     tinyDB.putListString("savedWifiList", LockyService.savedWifiList); 
     tinyDB.putListString("savedContextList", LockyService.savedContextList); 
     super.onLowMemory(); 
    } 

    @Override 
    public void onDestroy() 
    { 
     tinyDB.putListString("savedWifiList", LockyService.savedWifiList); 
     tinyDB.putListString("savedContextList", LockyService.savedContextList); 
     Toast.makeText(context, "Locky Service Killed", Toast.LENGTH_SHORT).show(); 
     super.onDestroy(); 

    } 

    @Override 
    public IBinder onBind(Intent intent) 
    { 

     return null; 
    } 
} 

這裏是我上面使用數組列表的示例代碼。我想將一個名稱映射到不同的已保存Wifi Wifi SSID。我不知道從哪裏開始。

+0

你介意更新您的問題SharedPreferences的ArrayList?因爲僅僅描述你的問題很難幫助你。 – aribeiro

+1

也許嘗試使用snappyDB保存所有內容。它的設置速度快,易於使用。 – Smashing

+0

@aribeiro請看看,我已經添加了代碼。我需要邏輯來存儲與不同WIFI SSID相關的一個名稱。我稍後可以使用TinyDB或SnappyDB來保存它們。 –

回答

-3

如果你想在本地存儲數據,你可以簡單地使用SQLite數據庫。它適用於Android和iOS,易於存儲和管理。

+0

我已經說過,我要存儲的數據非常少,使用SQLite數據庫將是**毫無意義的**。這太複雜了。 –

0

我也沒弄明白什麼確切的你的問題,所以請Clarey更多的是爲了提供你一個具體的幫助,但按照我的理解你的問題:

要存儲的數據的大小不大,所以我認爲共享偏好是最好的解決方案,你已經在使用它。

另一種解決方案是將您的數據存儲在a file and read/write from it中。

如果你有一個複雜的關係數據,你應該使用SQLite。

您還可以使用Realm它是簡單高效的數據存儲解決方案也有SnappyDB如果您想使用NoSQL方法,它是SQLite的替代方案。

但是對於少量的鍵/值對數據共享偏好是最好的解決方案,您也可以使用TinyDB來簡化在一行代碼中對SharedPreferences的調用。

如果你的問題是如何存儲和通過提供開發的代碼檢索您can check this question

+0

我目前正在使用TinyDB。然而,這不是問題,我需要一個特定的_idea_或_logic_,我可以如何存儲數據和關聯。 –

+0

@sharukhmohammed請檢查答案的編輯,並讓我知道如果這是幫助。 – Marzouk

+0

我的問題是沒有找到一種方法來存儲數據。但是,如何在類別** home ** _下映射不同SSID的邏輯。要使用哪些數據類型以及如何鏈接它們,以便WIFI SSID 1,2,3指向** home **和4,5指向** office **並再指向** home **指向6個點,等等。幫助將不勝感激。 –

相關問題