2011-07-29 113 views
4

我有我的第一個建立BT連接的活動。有一個選項提供給用戶,根據他們的選擇,將加載一個不同的活動。Android:如何將藍牙連接傳遞給另一個活動?

問題是,這兩個活動都需要一個BT連接,而我沒有看到爲了創建另一個連接而銷燬一個連接的重點。

有沒有一種方法可以傳遞活動之間的連接?

有沒有人有我的例子或鏈接?

我已經試過「class MyApplication extends Application」,但我不能使用:

super.onCreate(savedInstanceState); 
setContentView(R.layout.blablabla); 

這可能是一個非常愚蠢的問題,但我只在Android的+ - 2周。

+0

可能的[保持在Android整個活動藍牙連接]重複(http://stackoverflow.com/q/3132532/連接變量816008) –

+0

此鏈接顯示了很好的解釋。 http:// stackoverflow。com/questions/4112573 /保持線程和連接狀態在android應用程序使用onsaveinstancestate – antonio081014

回答

5

您是否嘗試過使用應用對象來存儲對象中的藍牙連接,並使用你的活動得到它?

嘗試類似這樣的東西。 (注:我從來沒有在Android上使用藍牙,所以我不知道使用哪個相關類,在這種情況下,我將使用BluetoothDevice,因爲它似乎是基於庫文檔的正確類)

public class MyApplication extends Application { 
    BluetoothDevice device; 
    ... 
    public synchronized BluetoothDevice getBtConnection() { 
     if (device == null) { 
      // construct a BluetoothDevice object and put it into variable device 
     } 
     return device; 
    } 
} 

這樣一來,你的第一個活動只是要做到這一點:

public class FirstActivity extends Activity { 
    private BluetoothDevice device; 
    ... 
    @Override 
    protected void onCreate(Bundle b) { 
     super(b); 
     ... 
     device = ((MyApplication) getApplication()).getBtDevice(); 
     ... 
    } 
    ... 
} 

然後,任何時候你的其他活動需要用到這方面,他們只需要調用getBtDevice(),因爲FirstActivity已經實例它。

+0

嗯,我還沒有嘗試過,我對Android非常陌生,所以我會盡我所能,看看它是否有效(希望它可以) 謝謝你的建議。 – richard

0

我知道這是一個老問題,但爲新人們參觀這個話題:

我覺得Kibibyte的答案也將工作,但除此之外,還有使用(Bound)Service的選項。如果應用程序關閉

​​

-1

我有同樣的問題,這甚至會跑,終於解決了! 所以首先你應該建立在一個活動的連接,並確保連接店公共靜態變量,就可以調用連接變量中,你想擁有藍牙連接每個活動。 我建議你使用服務類來創建連接,並使用這樣

BluetoothChatService mChatService=DeviceListActivity.chatService 
相關問題