簡體   English   中英

Android:如何將藍牙連接傳遞給另一個活動?

[英]Android: How to pass a Bluetooth connection to another Activity?

我有我的第一個活動,其中建立了BT連接。 有一個選項呈現給用戶,並根據他們的選擇,加載不同的活動。

問題是,這兩個活動都需要BT連接,而我沒有看到破壞一個連接只是為了制造另一個連接。

有沒有辦法可以傳遞活動之間的聯系?

有沒有人為我或某個鏈接提供一些例子?

我試過“ class MyApplication extends Application ”,但后來我不能使用:

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

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

您是否嘗試使用Application對象將藍牙連接存儲在對象中並使用您的活動來獲取它?

嘗試這樣的事情。 (注意:我從未在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已經實例化了它。

我知道這是一個老問題,但對於訪問此主題的新人來說:

我認為Kibibyte的答案也可行,但除此之外還有使用(Bound)Service的選項。 即使應用程序關閉,這也會運行

官方Android服務文檔

你嘗試過使用Bundle嗎?

檢查相關主題

http://www.anddev.org/putting_an_object_into_a_bundle-t6431.html

我有同樣的問題,最后解決了! 所以首先你應該在一個活動中創建你的連接,並確保連接存儲在公共靜態變量中,你可以在你希望擁有藍牙連接的每個活動中調用該連接變量。 我建議你使用服務類來創建連接並使用這樣的連接變量

BluetoothChatService mChatService=DeviceListActivity.chatService

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM