2012-11-08 48 views
1

我一直負責爲Android應用程序添加對支持通過「NFC」在設備間傳輸大型數據文件(數十兆字節)的應用程序的支持。使用Android Beam(或S-Beam)發送大文件

我知道Android上的真正NFC非常慢,但我知道ICS支持將批量數據傳輸切換到藍牙;和三星有專門的機制,通過Wifi Direct(S-Beam)做同樣的事情。所以這就是我想要採取的方法。

不幸的是我找不到任何有關如何實際執行此操作的信息。

我看了一下Android Beam文檔,沒有提及支持大批量數據的特殊機制;所以我採用了標準的AndroidBeamDemo應用程序,並簡單地將大字節數組添加到數據包大小,希望它們都能正常工作。似乎不是---發送一個10kB的消息大約需要五秒鐘,而試圖發送一個1MB的消息根本就什麼也不做(儘管它告訴我消息已經成功發送)。

對於三星的S-Beam,我根本找不到任何文檔。

有沒有人做過這個工作,如果有的話,他們能指點我一個例子嗎?

+1

你正在尋找錯誤的東西。尋找「如何通過代碼啓動藍牙連接」,並在你的應用中使用它,通過光束髮送連接信息 –

+0

不,這不是我們想要的。 (我們已經支持通過藍牙進行顯式發送。)我們明確地希望通過NFC發送(與藍牙切換)。用戶體驗完全不同。 –

+0

我們不敢相互理解。 UX應該是一樣的。用戶點擊電話,發送BT連接數據。您的應用截取了此NFC事件,並使用接收到的數據創建BT連接,並在無需用戶干預的情況下將大文件推送至該文件。從用戶的角度來看,他只是將他的數據放在眼裏。有什麼不同?這正是將fille轉移交給你一直要求的藍牙。你在尋找開箱即用的機制嗎?它簡單到足以實施恕我直言 –

回答

2

對於Android Beam,您需要使用setBeamPushUris()(或如果數據不固定,則爲setBeamPushUrisCallback())爲文件提供URI。

對於S-Beam,我不知道任何可以使用的API。 AFAICT,S-Beam僅適用於圖片,視頻和音樂的內置應用程序。

+2

同意。這裏是一個示例應用程序,通過'setBeamPushUris()'放大文件:https://github.com/commonsguy/cw-omnibus/tree/master/NFC/FileBeam – CommonsWare

+1

謝謝你---這正是我所期待的對於。當然,它不工作*(總是產生'梁沒有完成'),但作爲我唯一需要測試的設備是三星Galaxy 3,我懷疑這是三星的錯。乾杯。 –