2014-05-23 44 views
0

我正在使用LIGBDX開發應用程序到Android,我需要從手機獲取MAC ADDRES或IMEI或任何其他唯一代碼。當從Java.net使用NetworkInterface在Desktop項目上工作正常,但在Android上它不起作用,所以我在互聯網上看到了WifiManger, 是來自android的API(我猜)。Libgdx Android App上的Mac地址或IMEI

WifiManager wifiMan = (WifiManager) this.getSystemService( Context.WIFI_SERVICE); WifiInfo wifiInf = wifiMan.getConnectionInfo(); String macAddr = wifiInf.getMacAddress();

它作用似乎是它的工作原理,但我使用LIBGDX,我沒有得到進口Android.Net在我的項目,看到一個人交談時,我嘗試在LIbgdx引用純淨的Android我只有工作在Android不在覈心,但我不知道如何做到這一點。 也許添加Wifimanager.java到庫我試過,但沒有工作。

注:我使用GDX網和編輯清單,我下載過,並從Iternet的發送數據,我不能只做MAC部

回答

0

試試這個:

1) 聲明一個接口在您的核心項目與一個方法來檢索你想要的數字。

public interface IActivityRequestHandler { 

    public String getUniqueId(); 
} 

在你的核心項目,一個構造函數添加到您的遊戲類需要一個IActivityRequestHandler作爲參數:

public abstract class MyGame extends Game { 
    ... 
    public IActivityRequestHandler handler; 
    ... 
    public MyGame(IActivityRequestHandler handler){ 
    this.handler = handler; 
} 

您將使用「處理程序」來稱呼平臺的具體方法。

2) 使android MainActivity實現這個接口並編寫方法返回你需要的值。

3)在你的Android MainActivity,當你實例化你AndroidGame,通過在MainActivity作爲參數:

public class MainActivity extends AndroidApplication implements IActivityRequestHandler{ 
    ... 
    ApplicationListener game; 
    .... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 
     game = new AndroidMyGame(this); 
     ... 
    } 
     public String getUniqueId(){ 
      return uniqueId; 
     } 
    ... 
} 

4)現在,當您需要調用核心ID:handler.getUniqueId() (來自MyGame類) 如果您從Android設備運行遊戲,這將調用Android MainActivity上的方法。

重要提示:

1)如果你沒有關於Android的UI線程任何約束上這應該工作。 這是爲了返回值應該工作。如果你調用了只能在UIThread中調用的任何東西,這將不起作用,並且,你必須使用處理程序在線程之間進行通信。

2)您的桌面版本也必須實現IActivityRequestHandler。

3)在Android設備中獲取唯一的ID是我還沒有找到一個很好的解決方案。 a)平板電腦除非有電話線,否則沒有IMEI或電話號碼。 b)MAC地址不是唯一的(你有3g,wifi,藍牙),有時不可用,例如,如果wifi關閉。

4)你可能更適合自己生成一個唯一的ID並將其存儲在手機上。 谷歌「Java UUID」。

+0

在我的情況下可能是mac地址,因爲該應用程序就像是一個在線投票和ppl需要打開wifi投票,所以我可以得到mac地址,是的3G是一個問題,我會處理後者。現在ppl只能用wifi投票了,就是生活呵呵。 是一種複雜的做所有這些東西,嘿嘿,我會在這裏嘗試。 – Thaffareu

+0

如果我生成UUID並在手機上存儲,如果ppl卸載並安裝應用程序的數據將丟失,或者我錯了? – Thaffareu

+0

你說得對。正如我所說我沒有找到一個乾淨的解決方案獲得一個唯一的ID。我還沒有看到的另一件事,但可能提供一些解決方案是Google Play許可。 – Juan