2010-04-06 98 views
0

我想在Android中創建一個服務,最初會詢問用戶是否要啓動藍牙並設置藍牙發現。在Android中使用藍牙激活創建服務

我的問題是:

  1. 我可以在以下活動的服務的推出?

    if (!mBluetoothAdapter.isEnabled()) 
    { 
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
        startActivityForResult(enableBtIntent, 0); 
    } 
    
    // Set Phone Discoverable for 300 seconds. 
    Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
    discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 600); 
    startActivity(discoverableIntent); 
    
  2. 我想在應用程序的生命週期中設置手機的可移植性。可能嗎?

  3. 我想要訪問SD卡上的空閒空間。我應該怎麼做?

在此先感謝。

回答

1

1)您不能使用該特定代碼,因爲您無法從服務調用startActivity()。您將需要使用下面的代碼啓用藍牙:

BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter(); 
mAdapter.enable(); 

文檔說

boolean enable() 

打開本地藍牙適配器不無明確的用戶動作來打開藍牙使用。

所以你需要確保首先提示用戶。此外,您無法將設備設置爲在服務中可發現,因爲唯一的方法是使用startActivity(),因此您需要在某種配置活動中執行此操作。

2)不,有藍牙設備是可以發現的,可以打開它,但這不僅是不可能的,而且也不是一個好主意。

3)如果要寫入SDCard,只需將WRITE_EXTERNAL_STORAGE權限添加到清單文件中,然後就可以使用標準Java文件IO。

+0

感謝您的幫助。 我認爲在服務中啓用藍牙發現是不可能的。 第三次問題我問 我想訪問SD卡上可用的空閒空間。我應該怎麼做? Android的Java庫Java.io沒有提供任何功能來訪問當前文件系統的空閒空間作爲標準的Java.Io提供的。 但我發現了android.os的StatFs類,它解決了我的問題。 – 2010-04-26 06:49:28

+0

不太好的建議,因爲谷歌不建議啓用藍牙,而不先詢問用戶。它可以這樣做,但BT管理員的特殊許可必須在清單中設置。 – Ewoks 2012-07-18 11:53:50