2012-02-23 65 views
0

我是Java和Android的新手,我試圖找出如何執行以下操作。順便說一句,我發現谷歌的Android官方文檔不適用於新手,並希望任何推薦的東西多一點......非本地程序員友好。設置廣播接收器打開藍牙

好吧,這裏有雲:

我想,當我插上/拔下手機自動開啓/關閉藍牙 - 電腦或交流。

所以,我已經找到了以下組件:

BatteryManager:好像使用ACTION_BATTERY_CHANGED目的是要走的路,並設置爲當這種改變的廣播接收機。這是對的嗎?

我也找到了BluetoothAdapter,並且在那裏有enable()方法。其中說:「不要沒有明確的用戶操作來打開藍牙。」 - 在手機中插入一個顯式用戶操作?這對我來說是正確的嗎?當然,disable()也是一樣。

另外,BroadcastReceiver我在互聯網上看到的例子只告訴我如何發起一個意圖 - 通常是開一個新的活動。我假設我可以讓廣播接收器啓動一種方法,在該方法中我將打開和關閉藍牙?意圖是一種方法,而不僅僅是活動?

任何幫助,將不勝感激!

回答

0

BatteryManager:看起來像使用ACTION_BATTERY_CHANGED意圖是要走的路,併爲此設置一個廣播接收器。這是對的嗎?

是的,這是一種監控充電器已連接(包括插入帶充電功能的USB端口)等方式的方法。您也可以使用ACTION_POWER_CONNECTED

正在插入手機顯式用戶操作?

否 - 絕對不會,除非您創建彈出窗口詢問用戶的同意。要引用文檔的enable()方法...

藍牙不應該沒有直接的用戶同意的情況下啓用。如果您想以此來創建無線連接,你應該使用ACTION_REQUEST_ENABLE意圖,這將提高該請求的用戶權限,以便打開藍牙一個對話框,打開藍牙。 enable()方法僅適用於包含用於更改系統設置的用戶界面的應用程序,例如「電源管理器」應用程序。

當我插上設備充電時,10次中有9次我不希望它做任何事情,除了充電。如果我有我的手機上安裝了您的應用程序,並發現它被悄悄啓用藍牙和我不知情的情況,你的應用程序將是未安裝的直線距離。

存在已知的安全問題與藍牙,並根據用戶設置,你如果是不知情的情況下啓用可以把別人的設備處於危險之中。

意圖是一種方法,而不只是活動?

不,Intent是消息傳遞系統的一部分。請參閱Intents and Intent Filters。是的,我知道這不是'新手友好',但Android是一個複雜的野獸,如果你真的想成功編程,你必須閱讀這些東西。

+0

嗨MisterSquonk,感謝您的回覆:)我明白你的意思,不想默默地去做,但那不適用於我的應用程序 - 它將是一個非常簡單的應用程序 - 它只需要轉動藍牙開啓和關閉。所以,如果你下載並安裝它,你就知道你得到了什麼。所以,聽起來好像沒有辦法在背景中打開/關閉,沒有對話,呵呵?果汁後衛有這個選擇,但它不能很好地工作。此外,要清楚,我不害怕閱讀很多東西,這只是5次中的4次,我不明白他們的解釋;) – raingod 2012-02-25 00:36:49

+0

我發現「從來沒有」一個非常強大的詞:)我們** **無需用戶直接同意即可啓用藍牙功能,因爲我們擁有專業的驅動程序應用程序,無論用戶做什麼,它都需要始終保持開啓狀態。我很高興Android設計師允許我們以編程方式強制啓用藍牙,否則我們的應用程序將在現實世界中失敗:) – 2014-02-20 15:46:32