⑴ 如何使用android手機藍牙接收和發送文件
使用Android手機藍牙發送資料 您可以使用藍牙從手機傳送信息到其他具備藍牙功能的手機或筆記型計算機等裝置。第一次要在手機和其他裝置之間傳送信息之前,您必須先輸入或確認安全密碼。接著手機就能與其他裝置完成配對,日後您在傳送信息時就無需再交換密碼。 根據要傳送的目標裝置類型,您可以傳送的信息類型如下: *影像和影片 *日歷活動 *連絡人 *音訊檔 1.將接收裝置設為可被偵測模式。您可能也需要將裝置設為「接收資料交換」或「接收檔案」。如需透過藍牙接收信息的詳細信息,請參閱裝置的說明文件。 2.在手機上,開啟包含您想要傳送之信息或檔案的應用程序。假如您想要傳送相片,先選擇【照片】這個程序。 3.依照您想要傳送的項目類型的下列步驟: *相片或影片(在相機程序中)。拍攝相片之後,在預覽畫面中點選分享按鈕,然後點選藍牙。 *相片和影片(在相片程序中)。在相簿標簽中,點選相簿。接著點選分享按鈕,再點選藍牙,選取您想要分享的項目,然後點選下一步。 *日歷活動。在日歷的日檢視、議程檢視或周檢視中,按住活動,然後點選分享vCalendar藍牙。 *連絡人。在連絡人的全部標簽上,按住連絡人,然後點選使用vCard傳送連絡人。點選向下箭頭圖示,然後從顯示的清單中選取藍牙。 *音樂曲目。在目前播放畫面顯示的曲目中,按下MENU,然後點選分享藍牙。 *錄音。在錄音機主畫面上,點選分享按鈕,然後點選藍牙。 4.如果出現要求開啟藍牙的提示,請點選是。 5.點選接收裝置的名稱。 6.出現提示時,在接收裝置上接受連線,然後同時在手機和其他裝置上輸入相同的密碼,或確認自動產生的密碼。 7.在接收裝置上,接受檔案。 信息的儲存位置將視信息類型和接收裝置而異: *如果傳送的是日歷活動或連絡人,通常會直接加入接收裝置上對應的應用程序。例如當您傳送日歷活動到兼容的手機時,該活動就會顯示在該手機的日歷應用程序中。 *如果傳送其他的檔案類型到Windows計算機,則通常會儲存到個人文件資料夾下的BluetoothExchange資料夾中。WindowsXP上的路徑可能是:C:\\DocumentsandSettings\\[yourusername]\\MyDocuments\\BluetoothExchange。WindowsVista上的路徑可能是:C:\\Users\\[yourusername]\\Documents。 *如果傳送檔案到其他裝置,儲存的位置將視檔案類型而異。假如您傳送影像檔到其他的行動電話,則檔案可能會儲存到名為「Images」的資料夾。
⑵ Android藍牙連接後怎麼接受數據
Android 藍牙編程的基本步驟:
1.獲取藍牙適配器BluetoothAdapter blueadapter=BluetoothAdapter.getDefaultAdapter();
如果BluetoothAdapter 為null,說明android手機沒有藍牙模塊。
判斷藍牙模塊是否開啟,blueadapter.isEnabled() true表示已經開啟,false表示藍牙並沒啟用。
2.啟動配置藍牙可見模式,即進入可配對模式Intent in=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
in.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200);
startActivity(in); ,200就表示200秒。
3.獲取藍牙適配器中已經配對的設備Set<BluetoothDevice> device=blueadapter.getBondedDevices();
4.還需要在androidManifest.xml中聲明藍牙的許可權
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
接下來就是根據自己的需求對BluetoothAdapter 的操作了。
有不明白的地方可以問問ITJOB Android的老師們。
⑶ Android藍牙開發(二)經典藍牙消息傳輸實現
上篇文章中,我們主要介紹了藍牙模塊,傳統/經典藍牙模塊BT和低功耗藍牙BLE及其相關的API,不熟悉的可以查看 Android藍牙開發(一)藍牙模塊及核心API 進行了解。
本篇主要記錄用到的經典藍牙開發流程及連接通訊。
藍牙連接前,給與相關系統許可權:
安卓6.0以上系統要動態請求及獲取開啟GPS內容:
藍牙核心對象獲取,若獲取對象為null則說明設備不支持藍牙:
判斷藍牙是否開啟,沒有則開啟:
藍牙掃描:
取消掃描:
藍牙監聽廣播,監聽藍牙開關,發現設備,掃描結束等狀態,定義狀態回調介面,進行對應操作,例如:監聽到藍牙開啟後,進行設備掃描;發現設備後進行連接等。
客戶端,與服務端建立長連接,進行通訊:
服務端監聽客戶端發起的連接,進行接收及通訊:
客戶端連接及服務端監聽基類,用於客戶端和服務端之前Socket消息通訊,進行消息或文件的發送、接收,進行通訊關閉操作等:
我這里只是簡單記錄了項目中用到的藍牙通訊,兩個設備之間不通過配對進行連接、通訊。
相關詳細內容及使用請查看Github項目: https://github.com/MickJson/BluetoothCS
藍牙配對操作及其它內容,可以詳細查看我下面的參考資料,寫的十分詳細,比如設備通過MAC地址,可以通過BluetoothAdapter獲取設備,再通過客戶端connect方法去進行連接等。
連接中遇到問題:read failed, socket might closed or timeout, read ret: -1。
通過改UUID,反射等方法都還是會出現錯誤。連接時,要確保服務端及客戶端都處於完全斷開狀態,否則連接就會出現以上問題,但偶爾還是會有問題,期待有什麼好的方法可留言告訴我。
參考資料:
Android-經典藍牙(BT)-建立長連接傳輸短消息和文件
Android藍牙開發—經典藍牙詳細開發流程
歡迎點贊/評論,你們的贊同和鼓勵是我寫作的最大動力!
⑷ 關於MacBook Pro無法接收通過安卓手機藍牙傳送的文件與照片的解決方法
日常中出現MacBook Pro無法接收通過Android手機藍牙傳送的文件與照片的情況,一般是因為macOS的藍牙共享沒有開啟,所以才無法傳送文件與照片。那麼想要解決MacBook Pro無法接收通過Android手機藍牙傳送的文件與照片,首先要開啟macOS 的藍牙共享。跟我來看看具體步驟吧~
怎麼開啟MacBook Pro的藍牙共享
1、點選左上角『蘋果圖示』呼叫出選單接著點選『系統偏好設置』,看到以下畫面出現之後請點選『共享』即可。
2、進入到『共享』頁面之後請勾選『藍牙共享』前面的方塊即可。
以上就是我所述內容啦!希望對你們有幫助哦~
⑸ Android-Ble藍牙開發Demo示例–掃描,連接,發送和接收數據,分包解包(附源碼)
萬物互聯的物聯網時代的已經來臨,ble藍牙開發在其中扮演著舉重若輕的角色。最近剛好閑一點,抽時間梳理下這塊的知識點。
涉及ble藍牙通訊的客戶端(開啟、掃描、連接、發送和接收數據、分包解包)和服務端(初始化廣播數據、開始廣播、配置Services、Server回調操作)整個環節以及一些常見的問題即踩過的一些坑。
比如
1、在Android不同版本或不同手機的適配問題,掃描不到藍牙設備
2、如何避免ble藍牙連接出現133錯誤?
3、單次寫的數據大小有20位元組限制,如何發送長數據
藍牙有傳統(經典)藍牙和低功耗藍牙BLE(Bluetooth Low Energy)之分,兩者的開發的API不一樣,本文主講Ble藍牙開發,傳統藍牙不展開,有需要的可以自行了解。
相對傳統藍牙,BLE低功耗藍牙,主要特點是快速搜索,快速連接,超低功耗保持連接和數據傳輸。
客戶端
服務端
Android4.3(API Level 18)開始引入BLE的核心功能並提供了相應的 API。應用程序通過這些 API 掃描藍牙設備、查詢 services、讀寫設備的 characteristics(屬性特徵)等操作。
BLE藍牙協議是GATT協議, BLE相關類不多, 全都位於android.bluetooth包和android.bluetooth.le包的幾個類:
android.bluetooth.
.BluetoothGattService 包含多個Characteristic(屬性特徵值), 含有唯一的UUID作為標識
.BluetoothGattCharacteristic 包含單個值和多個Descriptor, 含有唯一的UUID作為標識
.BluetoothGattDescriptor 對Characteristic進行描述, 含有唯一的UUID作為標識
.BluetoothGatt 客戶端相關
.BluetoothGattCallback 客戶端連接回調
.BluetoothGattServer 服務端相關
.BluetoothGattServerCallback 服務端連接回調
android.bluetooth.le.
.AdvertiseCallback 服務端的廣播回調
.AdvertiseData 服務端的廣播數據
.AdvertiseSettings 服務端的廣播設置
.BluetoothLeAdvertiser 服務端的廣播
.BluetoothLeScanner 客戶端掃描相關(Android5.0新增)
.ScanCallback 客戶端掃描回調
.ScanFilter 客戶端掃描過濾
.ScanRecord 客戶端掃描結果的廣播數據
.ScanResult 客戶端掃描結果
.ScanSettings 客戶端掃描設置
BLE設備分為兩種設備: 客戶端(也叫主機/中心設備/Central), 服務端(也叫從機/外圍設備/peripheral)
客戶端的核心類是 BluetoothGatt
服務端的核心類是 BluetoothGattServer 和 BluetoothLeAdvertiser
BLE數據的核心類是 BluetoothGattCharacteristic 和 BluetoothGattDescriptor
下面詳細講解下客戶端和服務端的開發步驟流程
安卓手機涉及藍牙許可權問題,藍牙開發需要在AndroidManifest.xml文件中添加許可權聲明:
在搜索設備之前需要詢問打開手機藍牙:
注意: BLE設備地址是動態變化(每隔一段時間都會變化),而經典藍牙設備是出廠就固定不變了!
通過掃描BLE設備,根據設備名稱區分出目標設備targetDevice,下一步實現與目標設備的連接,在連接設備之前要停止搜索藍牙;停止搜索一般需要一定的時間來完成,最好調用停止搜索函數之後加以100ms的延時,保證系統能夠完全停止搜索藍牙設備。停止搜索之後啟動連接過程;
BLE藍牙的連接方法相對簡單只需調用connectGatt方法;
參數說明
與設備建立連接之後與設備通信,整個通信過程都是在BluetoothGattCallback的非同步回調函數中完成;
BluetoothGattCallback中主要回調函數如下:
上述幾個回調函數是BLE開發中不可缺少的;
當調用targetdDevice.connectGatt(context, false, gattCallback)後系統會主動發起與BLE藍牙設備的連接,若成功連接到設備將回調onConnectionStateChange方法,其處理過程如下:
判斷newState == BluetoothGatt.STATE_CONNECTED表明此時已經成功連接到設備;
mBluetoothGatt.discoverServices();
掃描BLE設備服務是安卓系統中關於BLE藍牙開發的重要一步,一般在設備連接成功後調用,掃描到設備服務後回調onServicesDiscovered()函數,函數原型如下:
BLE藍牙開發主要有負責通信的BluetoothGattService完成的。當且稱為通信服務。通信服務通過硬體工程師提供的UUID獲取。獲取方式如下:
具體操作方式如下:
開啟監聽,即建立與設備的通信的首發數據通道,BLE開發中只有當客戶端成功開啟監聽後才能與服務端收發數據。開啟監聽的方式如下:
BLE單次寫的數據量大小是有限制的, 通常是20位元組 ,可以嘗試通過requestMTU增大,但不保證能成功。分包寫是一種解決方案,需要定義分包協議,假設每個包大小20位元組,分兩種包,數據包和非數據包。對於數據包,頭兩個位元組表示包的序號,剩下的都填充數據。對於非數據包,主要是發送一些控制信息。
監聽成功後通過向 writeCharacteristic寫入數據實現與服務端的通信。寫入方式如下:
其中:value一般為Hex格式指令,其內容由設備通信的藍牙通信協議規定;
若寫入指令成功則回調BluetoothGattCallback中的onCharacteristicWrite()方法,說明將數據已經發送給下位機;
若發送的數據符合通信協議,則服務端會向客戶端回復相應的數據。發送的數據通過回調onCharacteristicChanged()方法獲取,其處理方式如下:
通過向服務端發送指令獲取服務端的回復數據,即可完成與設備的通信過程;
當與設備完成通信之後之後一定要斷開與設備的連接。調用以下方法斷開與設備的連接:
源碼上傳在CSDN上了,有需要的可以借鑒。
=====> Android藍牙Ble通訊Demo示例源碼–掃描,連接,發送和接收數據,分包解包
BLE單次寫的數據量大小是有限制的,通常是20位元組,可以嘗試通過requestMTU增大,但不保證能成功。分包寫是一種解決方案,需要定義分包協議,假設每個包大小20位元組,分兩種包,數據包和非數據包。對於數據包,頭兩個位元組表示包的序號,剩下的都填充數據。對於非數據包,主要是發送一些控制信息。
總體流程如下:
1、定義通訊協議,如下(這里只是個舉例,可以根據項目需求擴展)
2、封裝通用發送數據介面(拆包)
該介面根據會發送數據內容按最大位元組數拆分(一般20位元組)放入隊列,拆分完後,依次從隊列里取出發送
3、封裝通用接收數據介面(組包)
該介面根據從接收的數據按協議里的定義解析數據長度判讀是否完整包,不是的話把每條消息累加起來
4、解析完整的數據包,進行業務邏輯處理
5、協議還可以引入加密解密,需要注意的選演算法參數的時候,加密後的長度最好跟原數據長度一致,這樣不會影響拆包組包
一般都是Android版本適配以及不同ROM機型(小米/紅米、華為/榮耀等)(EMUI、MIUI、ColorOS等)的許可權問題
藍牙開發中有很多問題,要靜下心分析問題,肯定可以解決的,一起加油;
⑹ Android手機藍牙給電腦傳文件,總是失敗
原因:手機藍牙的驅動都是和 ROM 內核集成的,所以應該先去把電腦上藍牙的驅動升級一下,如果還是不行那隻能說明 Galaxy Nexus 和電腦不合了。
方法:1,首先打開筆記本電腦的藍牙開關,一般是在鍵盤上有個組合鍵,fn+f9。
2,然後手機的藍牙應該打開,進行搜索鏈接,。
3,在手機和電腦都連接好了之後,接下來就要傳輸文件了,如果是從電腦向手機傳輸的話直接在要傳輸的文件上單擊右鍵發送到然後在選擇藍牙。
4,如果是從手機往電腦傳輸東西,那就要先點擊電腦上的接受文件,在用手機藍牙向電腦傳輸。
⑺ Android手機用藍牙接收的文件存儲位置在哪裡
在內存卡根目錄下有個「Bluetooth」文件夾,在這個文件夾裡面。
⑻ android手機怎樣通過藍牙傳輸文件
手機通過藍牙傳輸文件的使用方法如下:
1.接收者:進入設定-藍牙-滑塊打開-將設備可見打鉤-在可見時間內讓對方發送文件-選擇是否接收-完成即可。
2.發送者:進入我的文件-長按需要傳輸的文件不鬆手-共享通過-藍牙-打開-掃描設備(接收方需開啟可見)-選擇接收者-完成即可。
⑼ syu android藍牙連接方法
syu android藍牙連接方法先展示代碼結構。
藍牙是一種無線數據與語音通信的開放性全球規范,它以低成本的短距離無線連接為基礎,可為固定的或移動的終端設備提供廉價的接入服務。
藍牙(Bluetooth)是一項短途無線電連接系統,它可以將不同的電子器材連系起來。原理就好像收音機一樣,裝有藍牙的電子器材,可以接收外來的訊息,從而進行特定的指令。
藍牙簡介:
不過,藍牙不但可以接收,也都可以「傳送」,因此裝有藍牙的電子器材,能夠互相溝通。現在,大部分的電腦配件,如列印機、熒幕等,都要接駁上電線,才可以互傳訊息,但藍牙透過其短途的接收系統,便可以使這些配件在沒有駁線下,仍然能夠傳送指令,做到真正「無線」的世界。
頭藍技術實質內容是為固定設備或移動設備之間的通信環境建立通用的近距無線介面,將通信技術與計算機技術進一步結合起來,使各種設備在沒有電線或電纜相互連接的情況下,能在近距離范圍內實現相互通信或操作。藍牙功能可以參考下面的操作打開使用,打開其他設備的藍牙。
並使其對其他設備可見,打開下拉頂簾,點擊藍牙圖標使其變為綠色,跳出提示框,勾選對其他設備可見。點擊掃描,搜索到其他設備後,點擊該設備名稱,雙方點確定後配對成功。選擇要傳輸的文件,共享通過藍牙即可傳輸文件。